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
| #include <16F877.h>
#fuses hs, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock=20000000)
//============================
float f1,f2,v;
setup_adc_ports(RA0_ANALOG); // pin A0 est une entrée analogique
setup_adc(ADC_CLOCK_INTERNAL); // configure le CAN
void Serial_Init(void); // Initialisation Port série 9600 baud 8 data bit ,1 bit stop, pas de parité
void Serial_Putchar(unsigned char cD); // Cette fonction envoie des données sur le port série
bit bSerie;
delay_ms(300);
void main() //****************** debut Main ******************************
{
GIE=1; PEIE=1; // Autorise les intérruptions
TRISC=0b10000000; // RC7 RX en entré, RC6 TX en sortie
Serial_Init(); // Initialisation port série
}// ************************ fin de main******************************
void Serial_Init(void) // Initialisation Port série 9600 baud 8 data bit, 1 bit stop, pas de parité
{
RCIE=1; // valide l'interruption de réception
RCSTA=0b10010000; // SPEN=1 valide le port série, CREN=1 valide la réception de donnée
TXSTA=0b00100110; // high speed mode brgh1 , TXEN 1 autorise émission de donnée
SPBRG=25; // 9600 baud
bSerie=0; // si 1 traité caractère serie reçu.
}
void Serial_Putchar(unsigned char cD) // Emission de donnée sur le port série
{
while(!TXIF); // si 1 registre d'émission vide, donc on sort de la boucle
TXREG=cD; // On place le caractère cD à envoyer dans le registre TXREG
while(!TRMT); // Lorsque TRMT passe à 1 TXREG recoit la donnée cD
} |
Partager