com_a.asm

来自「初学者首选各种实验原代码」· 汇编 代码 · 共 75 行

ASM
75
字号

			NAME COM_A    ;模块名
;定义重定位段
?PR?Data_Send?COM_A   	SEGMENT CODE
?PR?Data_Recv?COM_A   	SEGMENT CODE
?PR?Delay?COM_A   	SEGMENT CODE

;对外声明4个不可重入函数
        		PUBLIC Data_Send
			PUBLIC Data_Recv
			PUBLIC Delay

;子程序
;-------------------------------------------------------------------------
        		RSEG ?PR?Data_Send?COM_A
Data_Send:
			PUSH ACC
			PUSH 01H
			MOV R1,#8
			MOV A,R7
	

			CLR P3.4
			LCALL Delay
			LCALL Delay
LOOP:			RRC A
	 		MOV P3.4,C
	 		LCALL Delay
			LCALL Delay
	 		DJNZ R1,LOOP
	 	
	 		SETB P3.4
	 		LCALL Delay
	 		LCALL Delay
			POP 01H
			POP ACC
			RET

;-------------------------------------------------------------------------
		      	RSEG ?PR?Delay?COM_A
Delay:			PUSH 00H
			PUSH 01H
			MOV R0,#1	
LOOP2:			MOV R1,#12     //12MHZ R1=#12
LOOP1:			NOP
		        DJNZ R1,LOOP1
			DJNZ R0,LOOP2
			POP 01H
			POP 00H
			RET

;-------------------------------------------------------------------------
			RSEG ?PR?Data_Recv?COM_A
Data_Recv:		PUSH ACC
			PUSH PSW
			PUSH 00H
			MOV R0,#8
Data_Recv1:		JB P3.5,Data_Recv1
			LCALL Delay
			JB P3.5,Data_Recv1
			LCALL Delay
			
LOOP3:			LCALL Delay
			MOV C,P3.5
			RRC A
			LCALL Delay		
			DJNZ R0,LOOP3
			MOV R7,A
EXT:			POP 00H
			POP PSW
			POP ACC
			RET

			END

⌨️ 快捷键说明

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