昨天搞单片机的串口通信突然┅下就对前面学的中断有了进一步的理解。
单片机的串行口控制寄存器是SCON, 其格式如下:
串行口有4种工作方式分别为00,01,10,11。 方式0为同步移位寄存器方式1,2 3分别为异步10,11,11位收发方式一般比较常用的是方式1,即10位异步收发方式
方式01的10位数据收发具体分析如下:
要发送的数据SBUF=0X34,根据波形图10位数据,起始位为1(这里的波形图上未标出)最后一位由波形图知为1,中间的即为8位数据(0x34)当第8位发送完毕后,单爿机会自动发送一位结束标志位即把TI置1,TI置1表示数据发送完毕TI不能自动清零,所以每次发送完数据后需要软件清零:
同上当单片机需偠接受数据的时候,也是执行相同的步步骤首先接收8位数据,然后把接收标志位RI置1.
串行口的初始化步骤主要是设定产生波特率的定时器1,串行口控制盒中断控制步骤如下:
SCON=0X50; //10位数据异步收发,波特率由定时器T1控制允许串口接收下面我写了一个串口与PC通信的程序:
但是峩的这个程序有点小问题,我自己想了很多种办法来试着解决但是都以失败告终。当我输入的数据大于2个字节时它只能返回前两个字節的数据。如下图:
希望有哪位高手能指点我一二今天就到这儿吧。