用单片机串行口,实现本机串行接口的自通讯。连接起本机的TXD和RXD。将本机数据通过异步方式从本机的TXD引脚发送,再从本机的RXD引脚接收。单片机从P2口读入的按键数值并向TXD引脚上发送,之后从RXD引脚接收该数据,并通过P1口显示在 LED发光二极管上。
#include <reg52.h> void system_init(); void main() { system_init();//系统初始化 SBUF=P2;//首次读入P2口的数据并发送到串行口 while(1); }
/*系统初始化函数*/ void system_init() { SCON = 0x50;//REN=1允许串行接受状态,串口工作模式1 (全双工方式) 、数据位8、停止位1、校验位无。 PCON = 0x80;//SMOD=1,波特率加倍 TMOD = 0x20;//定时器T1设置为工作方式2(自动装载初值的8位定时器)0010,T0任意(不使用T0)0000 TH1 = 0xf9;//设置波特率9600。T1=256-2*12*10^6/(384*2400)=249.489583=0xf9(四舍五入) TL1 = 0xf9; TR1 =1; ES =1; EA =1; } /*串行口中断服务程序*/ void serial_interrupt() interrupt 4 { if(RI) //串行口如果接收到数据,则清除中断标志,并将数据显示到LED { RI=0; P1=SBUF; } if(TI) //串行口如果发送完一次数据,则清除中断标志,并传送下一组按键数据 { TI=0; SBUF=P2; } }
汇编语言版见附件
|