T2作为波特率控制UART_RXD 是硬中断0或1口,如果能进入中断,说明该线有一个起始位产生,进入中断后调用下面的接收程序。退出硬中断之前还需要将硬中断标志重新复位。UART_TXD 是任何其它IO即可。UART_SEND: PUSH IE PUSH DPH PUSH DPL PUSH PSW PUSH 00H PUSH ACC CLR EA SETB UART_TXD ;START BIT MOV R0,A CLR TR2 ;TR2置1,计数器2启动,时间计数启动。 MOV A,RCAP2L;计数器2重新装载值 MOV TL2,A ;置计数器2初值 ;T2需要重新装载 MOV A,DPH MOV A,RCAP2H MOV TH2,A MOV A,R0 SETB TR2 ;TR2置1,计数器 JNB TF2,$ CLR TF2 JNB TF2,$ CLR TF2
文档解析
这段代码是用于8051微控制器的串行通信协议(UART)的发送和接收程序。它详细描述了如何通过UART接口发送数据(UART_SEND)和接收数据(UART_REC)。在发送数据时,代码首先保存中断使能寄存器(IE)、数据指针(DPH和DPL)和状态寄存器(PSW),然后清除中断使能(EA),设置开始位(UART_TXD),并使用定时器2(TR2)来控制数据位的发送时间。数据位通过循环依次发送,每个位的发送都由定时器2的溢出标志(TF2)控制。发送完8个数据位后,设置停止位,然后恢复中断使能和寄存器状态。
接收数据的程序同样首先保存中断使能和数据指针,然后清除中断使能,使用定时器2来同步接收数据。在接收每个数据位时,程序检测UART_RXD线上的电平状态,并将其存储在累加器(ACC)的相应位上。接收完8个数据位后,程序等待停止位的到来,然后恢复中断使能和寄存器状态。整个程序通过精确控制定时器和中断标志,确保数据的准确发送和接收。
猜您喜欢
推荐内容
开源项目推荐 更多
热门活动
热门器件
用户搜过
随便看看
热门下载
热门文章
评论