two.asm

来自「C51通信程序」· 汇编 代码 · 共 61 行

ASM
61
字号
			E_G	EQU	  10001110B
			S_G	EQU	  01100100B
                        W_G     EQU       01011010B
                        N_G     EQU       01001101B
        		ORG     0000H
        		LJMP    START           	;转初始化程序
        		ORG     0023H
        		LJMP    INTR              	;转中断子程序
			ORG     0030H
START:
        		MOV     TMOD,#20H
        		MOV     TH1,#0FDH
        		MOV     TL1,#0FDH
        		SETB    TR1             	;启动定时器
        		MOV     SCON,#50H       	;串口初始化
        		MOV     PCON,#00H       	;SMOD=0
        		SETB    EA              	;允许CPU中断
        		SETB    ES             		;允许串行口中断
			SETB 	  REN 			;允许接收
N2:
        		MOV     R0,#00H
        		MOV     P2,#0FFH
LOOP:
        		MOV     A,R0
        		JZ      LOOP
        		CJNE    A,#031H,N1
        		MOV     P2,#E_G
        		SJMP    LOOP
N1:
        		CJNE    A,#032H,N3
        		MOV     P2,#S_G
        		SJMP    LOOP
N3:
                        CJNE    A,#033H,N4
                        MOV     P2,#W_G
                        JMP     LOOP
N4:
                        CJNE    A,#034H,N2
                        MOV     P2,#N_G
                        JMP     LOOP
INTR:
        		PUSH  A
        		JNB     RI,SND      		;判断是发送还是接收
RCV:
        		CLR     EA              	;接收子程序,关中断
        		CLR     RI              	;清除中断标志
        		MOV    A,SBUF     		;接收地址并送到A
        		MOV    R0,A
                        MOV    A,#0AAH
        		MOV    SBUF,A      		;将数据送SBUF
        		SETB    EA              	;开中断
        		POP     A
        		RETI
SND:
        		CLR     EA              	;发送子程序,关中断
        		CLR     TI               	;清除中断标志
        		SETB   EA              		;开中断
        		POP     A
        		RETI
        		END

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?