📄 ejem_37.c
字号:
// EJEMPLO 37
// Autor: Mikel Etxebarria
// (c) Ingenier韆 de Microsistemas Programados S.L.
// www.microcontroladores.com
// Bilbao 2006
//
//El m骴ulo USART. Recepci髇 as韓crona.
//
//El m骴ulo USART de los dispositivos PIC16F87X incorpora el hardware necesario para implemen-
//tar comunicaci髇 serie as韓crona full-duplex o sincrona half-duplex. En este 鷏timo caso el
//USART se puede comportar como Master o Slave.
//
//En el ejemplo se provoca una interrupci髇 cada vez que se recibe un car醕ter v韆 serie. El
//programa de tratamiento visualiza, sobre los leds del laboratorio conectados a la Puerta B,
//el c骴igo binario del car醕ter recibido. Igualmente retransmite el car醕ter recibido, a
//modo de ECO.
#include <16f876A.h>
//Ajusta los valores de la palabra de configuraci髇 durante el ensamblaje:
//Protecci髇 de c骴igo y datos=OFF, LVP=OFF, WDT=OFF y OSC=XT
#fuses NOPROTECT,NOCPD,NOLVP,NOWDT,XT
// Con estas directivas las funciones "input" y "output_bit" no reprograman
// el pin de la puerta cada vez que son utilizadas. Si no se indica el
// modo fast_io se asume por defecto standard_io el cual reprograma el pin
// siempre antes de ser utilizadas estas funciones.
#use fast_io (B)
#use fast_io (C)
#use delay(clock=4000000)
//Habilita las funciones RS232, velocidad a 9600 baudios
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#int_rda //Vector de interrupci髇 al recibir por el UART
//Funci髇 de tratamiento de la interrupci髇 al recibir
tratamiento()
{
int dato; //Variable para almacena el dato recibido
dato=getc(); //Lee el dato recibido
output_b(dato); //Lo saca por la puerta B
putc(dato); //Lo transmite v韆 RS232
}
main()
{
output_b(0x00); //Borra las salidas
set_tris_b(0x00); //Puerta B salida
set_tris_c(0b10111111); //RC7/Rx entrada, RC6/Tx salida
enable_interrupts(INT_RDA); //Activa interrupci髇 en la recepci髇
enable_interrupts(global); //Habilita interrupciones
while(1)
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -