Aug 10
串口没什么好说的,加了MAX232C的51串口控制起来就像几个LED灯一样简单。
下面的代码是最基础的串口通信程序。发送时使用堵塞,接收则通过中断进行。
这个示例的功能是把4800波特率下指定COM口接收到的单字节重新发回主控机,稍为修改就可用于传送多字节和自定义协议。

#include #define uchar unsigned char //初始化定时器 void initSerial(void){ SCON = 0x50; //模式1 可读REN TMOD = 0x20; //定时器1 模式2 PCON = 0x80; //SMOD = 1 TH1 = 0xF4; //波特率 4800 fosc=11.0592MHz IE = 0x90; //开启串口中断 TR1 = 0x01; //打开定时器1 } //传送一个字节 void sendByte(uchar send_data){ SBUF = send_data; while(TI==0); //发送没必要中断 堵塞等待 TI=0; //软清零 取消中断 } //接收中断 void receive() interrupt 4 using 3{ if(RI){ //接受到停止中断 uchar receive_data; RI = 0; //中断中软清零 receive_data = SBUF; sendByte(receive_data); //将接收到的代码发回对方 } } void main(){ initSerial(); while(1){;} }

Recent Comments