1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOCPD,NOWRT
#use delay(clock=6000000)
#byte porta = 0x05
#byte portb = 0x06
#byte portc = 0x07
#byte portd = 0x08
#byte porte = 0x09
#byte PR2 = 0x92
#byte CCPR1L = 0x15
#byte CCPR2L = 0x1B
#byte CCP1CON = 0x17
#byte T2CON = 0x12
#byte TRISA = 0x85
#byte TRISC = 0x87
#byte TRISB = 0x86
#byte TRISD = 0x88
#byte TRISE = 0x89
unsigned int8 mesure=0x00;
// declaration des fonctions //
void init(void);
unsigned char conversion(unsigned char voie);
/*******************************************************************/
void init(void)
{
TRISA=0xF1; //broches RA1 RA2 RA3 en sortie
TRISB=0x00; //broches toutes en sortie
TRISC=0b11111011;//broche RC2 en sortie
PORTA=0b011100; // initialisation des ports d'entrées et sorties //
PORTB=0x00;
PORTC=0x00;
PR2= 0xFF; //frequence de la MLI : 250Hz
T2CON=0x07; //validation timer 2 pour MLI
CCP1CON=0x3F;//validation mode MLI
}
void main(void)
{ init();
delay_ms(500);
setup_adc_ports(0x8E); //configuration des entrées analogiques
setup_adc(ADC_CLOCK_DIV_8);//choix de l'horloge du CAN
while(1) //le programme se répète perpétuellement
{ set_adc_channel(0); //choix entrée AN0 pour le CAN
delay_us(10); //délai 10microsecondes obligatoire
mesure=read_adc(); //lecture résultat conversion
CCPR1L=mesure; //envoi de la valeur donnée par le CAN
//directement sur la sortie MLI
}
} |
Partager