📄 visual.asm
字号:
//--------------------------------------------------------
// QQ:85254194
// 51单片机 软件模拟串口进行通讯
// 晶振12M,波特率19200 BPS
// 有超时等待功能。
// 从设备收到一字节,回复相同的字节给另一设备
// 若超时,则回复 AA 。
//--------------------------------------------------------
_TXD EQU P3.1
_RXD EQU P3.0
VisualBuf EQU 50H
//--------------------------------------------------------
ORG 0X00
SJMP MAIN
ORG 0X30
MAIN:
MOV P3,#0XFF
MAIN_LOOP:
CALL Visual_RXD
JB F0,SEND_AA
CALL Visual_TXD
SJMP MAIN_LOOP
SEND_AA:
MOV VisualBuf,#0XAA
CALL Visual_TXD
SJMP MAIN_LOOP
//--------------------------------------------------------
Visual_TXD:
CLR _TXD
CALL DELAY_44
MOV R5,#8
NOP
NOP
NOP
MOV A,VisualBuf
Visual_TXD_BIT:
RRC A ;1
JC Visual_SEND_HI ;2
CLR _TXD ;1
SJMP Visual_SEND_DELAY ;2
Visual_SEND_HI:
SETB _TXD
SJMP Visual_SEND_DELAY
Visual_SEND_DELAY:
CALL DELAY_44 ;44
DJNZ R5,Visual_TXD_BIT ;2
NOP
NOP
NOP
NOP
NOP
SETB _TXD
CALL DELAY_44
CALL DELAY_44
RET
//--------------------------------------------------------
DELAY_44:
MOV R6,#19
DJNZ R6,$
NOP
RET
//--------------------------------------------------------
Visual_RXD:
SETB _RXD
SETB F0
MOV R5,#8
MOV R6,#0
MOV R7,#0
Visual_RXD_WAIT:
JB _RXD,Visual_RXD_DELAY
SJMP Visual_RXD_SBIT
Visual_RXD_DELAY:
DJNZ R7,Visual_RXD_WAIT
DJNZ R6,Visual_RXD_WAIT
DJNZ R5,Visual_RXD_WAIT
RET
Visual_RXD_SBIT:
JB _RXD,Visual_RXD_WAIT
MOV R6,#10
DJNZ R6,$
MOV R5,#8
Visual_RXD_RECE_LOOP:
MOV R6,#23 ;1
DJNZ R6,$ ;46
NOP ;1
MOV C,_RXD ;1
RRC A ;1
DJNZ R5,Visual_RXD_RECE_LOOP ;2
MOV VisualBuf,A
CLR F0
RET
//--------------------------------------------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -