《51单片机汇编模拟串口通信程序》由会员分享,可在线阅读,更多相关《51单片机汇编模拟串口通信程序(5页珍藏版)》请在金锄头文库上搜索。
1、5151 单片机汇编模拟串口通信程序单片机汇编模拟串口通信程序T2 作为波特率控制 UART_RXD 是硬中断 0 或 1 口,如果能进入中断,说明该线有一个起始位产生,进入中断后调用下面的接收程序。退出硬中断之前还需要将硬中断标志重新复位。UART_TXD 是任何其它 IO 即可。UART_SEND:PUSH IEPUSH DPHPUSH DPLPUSH PSWPUSH 00HPUSH ACCCLR EASETB UART_TXD ;START BITMOV R0,ACLR TR2 ;TR2 置 1,计数器 2 启动,时间计数启动。MOV A,RCAP2L;计数器 2 重新装载值MOV TL
2、2,A ;置计数器 2 初值 ;T2 需要重新装载MOV A,DPHMOV A,RCAP2HMOV TH2,AMOV A,R0SETB TR2 ;TR2 置 1,计数器JNB TF2,$CLR TF2JNB TF2,$CLR TF2CLR UART_TXD ;START BITJNB TF2,$CLR TF2JNB TF2,$CLR TF2MOV R0,#08HUART_SEND_LOOP:RRC AMOV UART_TXD,C ;8 BITJNB TF2,$CLR TF2JNB TF2,$CLR TF2DJNZ R0,UART_SEND_LOOPSETB UART_TXD ;END BITJ
3、NB TF2,$CLR TF2JNB TF2,$CLR TF2POP ACCPOP 00HPOP PSWPOP DPLPOP DPHPOP IERET;UART_REC:PUSH IEPUSH DPHPUSH DPLCLR EACLR TR2 ;TR2 置 1,计数器 2 启动,时间计数启动。MOV A,RCAP2L;计数器 2 重新装载值MOV TL2,A ;置计数器 2 初值 ;T2 需要重新装载MOV A,DPHMOV A,RCAP2HMOV TH2,AJB UART_RXD,$ ;RECSETB TR2 ;TR2 置 1,计数器 2 启动,时间计数启动。JNB TF2,$CLR TF2
4、 ;0.5 BITJNB TF2,$CLR TF2 ;1 BITJNB TF2,$CLR TF2 ;1.5 BITMOV C,UART_RXDMOV ACC.0,CJNB TF2,$CLR TF2JNB TF2,$CLR TF2 ;2.5MOV C,UART_RXDMOV ACC.1,CJNB TF2,$CLR TF2JNB TF2,$CLR TF2 ;3.5MOV C,UART_RXDMOV ACC.2,CJNB TF2,$CLR TF2JNB TF2,$CLR TF2 ;4.5MOV C,UART_RXDMOV ACC.3,CJNB TF2,$CLR TF2JNB TF2,$CLR TF2
5、 ;5.5MOV C,UART_RXDMOV ACC.4,CJNB TF2,$CLR TF2JNB TF2,$CLR TF2 ;6.5MOV C,UART_RXDMOV ACC.5,CJNB TF2,$CLR TF2JNB TF2,$CLR TF2 ;7.5MOV C,UART_RXDMOV ACC.6,CJNB TF2,$CLR TF2JNB TF2,$CLR TF2 ;8.5MOV C,UART_RXDMOV ACC.7,CJNB TF2,$CLR TF2 ;9.5JNB UART_RXD,$ ;等待停止位,并重新复位计数器SETB UART_RXDPOP DPLPOP DPHPOP IERET