C 语言编写,用PIC16F690 双机异步USART 通信(收发全有) Post By:2008-9-18 10:33:00 我的这个程序是利用PIC16F690 单片机编写的。 要实现双机异步通信,用USART 进行通信。 目的是,让单片机A 发送 00~ 99 到单片机B 中,然后在单片机B 链接一个LED 数码管显示出 00~ 99; 与此同时,单片机A 也同样链接一个LED 数码管,显示发送出去的00~ 99. 也就是让单片机A 和 B 的数码管显示同样的00 和 99。 我的程序如下,问题挺多,在下是新手,有点乱。请那位老师指点一下。 发送程序: #include
/*该程序实现 PIC16F690 单片机双机异步通信功能; 该程序是发送部分(发送 00~ 99),并在 LED 显示器上显示出发送的数据;*/ #define PRESCALE1S 100 //1s #define PRESCALE4MS 1 //4ms unsigned char Reg_L = 0; unsigned char Reg_H = 0; unsigned char IntFlag = 0; unsigned char tran[8]; //存储发送数据数组; const char NumTab[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0XD8,0x80,0x90}; //不带小数点,共阳极显示 0~ 9; unsigned int NumADD; unsigned int DispPreScale = PRESCALE1S; unsigned int DispPreScaleCnt = 0x00; /***函数名称:InitPort;***/ /***函数功能:I/O 端口初始化;***/ void InitPort(void) { TRISA = 0x00; //PORTA 初始化; PORTA = 0x00; TRISB = 0x00; //PORTB 初始化; PORTB = 0x00; TRISC = 0x00; //PORTC 初始化; PORTC = 0x00; } /***函数名称:ASSIGN;***/ /***函数功能:给数组赋初值;***/ /*void ASSIGN(void) { for(k=0;k<8;k++) { tran[k] = k + 3; } }*/ /***函数名称:InitTMR1;***/ /***函数功能:定时器1 初始化;***/ void InitTMR1(void) { T1CON = 0x30; //TMR1 寄存器时钟为 Fosc/4 再经 8 分频; TMR1H = 0xFC; TMR1L = 0x18; //4ms 定时初始化值; TMR1IE = 1; //允许Timer1 溢出中断; TMR1ON = 1; //TMR1 使能; } /***函数名称:InitDevice;***/ /***函数功能:对MCU 各个功能初始化;***/ void InitDevices(void) { InitPort(); //端口初始化; InitTMR1(); //TMR1 定时器初始化; BRGH = 1; //选择高速波特率; SPBRG = 103; //晶振 8M,异步,高速,19200BPS,误差 0....