单片机串口通讯 通信协议: 第1 字节,MSB 为1,为第1 字节标志,第2 字节,MSB 为0,为非第一字节标志,其余类推……,最后一个字节为前几个字节后7 位的异或校验和
测试方法:可以将串口调试助手的发送框写上 95 10 20 25,并选上 16 进制发送,接收框选上 16 进制显示,如果每发送一次就接收到 95 10 20 25,说明测试成功
//这是一个单片机C51 串口接收(中断)和发送例程,可以用来测试 51 单片机的中断接收 //和查询发送,另外我觉得发送没有必要用中断,因为程序的开销是一样的 #inclu de #inclu de #define INBUF_LEN 4 //数据长度 u nsigned char inbu f1[INBUF_LEN]; u nsigned char checksu m,cou nt3; bit read_flag= 0 ; void init_serialcomm( void ) { SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr TMOD |= 0x20 ; //TMOD: timer 1, mode 2, 8-bit reload PCON |= 0x80 ; //SMOD=1; TH1 = 0xF4 ; //Baud:4800 fosc=11
0592MHz IE |= 0x90 ; //Enable Serial Interrupt TR1 = 1 ; // timer 1 run // TI=1; } //向串口发送一个字符 void send_char_com( unsigned char ch) { SBUF=ch; while (TI== 0 ); TI= 0 ; } //向串口发送一个字符串,strlen 为该字符串长度 vo