⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uartqq.asm

📁 增强型单片机c8051f230与2.4G射频芯片所组成的无线通信系统
💻 ASM
📖 第 1 页 / 共 2 页
字号:
		MOV		4AH,#4BH					;UART接收缓冲区首地址
		LCALL CTSENT
		LCALL SENT							;SPI发送数据
		LCALL CTCEIVER
		AJMP CXUN
BZ:
		LCALL CEIVER						;SPI接收数据													
														;发送回馈信号   <8MS
		LCALL SENTUART 					;uart sent
    AJMP CXUN


TABLE:
		DB 00H,0A0H,00H,00H,00H,00H,00H,41H,42H,43H,44H,45H,0A3H,4FH,31H ;接收
		;DB 00H,30H,00H,00H,00H,00H,00H,7DH,7DH,7DH,7DH,7DH,0A3H,4FH,31H 

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;-----------------------------------------------
;
;   >> 子程序 -- nRF2401写配置字 
;            
;					          所用寄存器:R2,ACC,延时调用
;										入口参数:	DPTR
;-----------------------------------------------
NRFPZ:
		PUSH ACC
		PUSH 02H
		MOV R2,#00H
AGAIN:
		MOV A,R2
		MOVC A,@A+DPTR
		MOV SPI0DAT,A
		ACALL DELAY16US								;spi寄存器内容移出等待
		INC R2
		CJNE R2,#0FH,AGAIN						;写十五个字节
		MOV SPI0CN,#03H               ;清除SPI中断标志
		POP 02H
		POP ACC
RET
;.................................................................

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;--------------------------------
;		>> 子程序 --- UART 发送
;          30H起,25字节   R0  R1
;--------------------------------
SENTUART:
		MOV R1,#30H
		MOV R0,#20
SENTUART_1:
		MOV A,@R1
		MOV SBUF,A
SENTUART_2:
		MOV A,PCON
		JNB	ACC.2,SENTUART_2
		ANL PCON,#0FBH
		INC R1
		DJNZ R0,SENTUART_1
RET

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;--------------------------------
;		>> 子程序 --- 延时程序
;          50us,3ms,5us,16us,200ms
;--------------------------------
DELAY200MS:
		PUSH 02H
		MOV R2,#40H
DL200MA:
		ACALL DELAY3MS
		DJNZ R2,DL200MA
		POP 02H
RET
DELAY50US:
		PUSH 00H
		PUSH 01H
		PUSH ACC
		MOV R0,#07H
DL50A:
		MOV R1,#0FFH
		DJNZ R1,$
		DJNZ R0,DL50A
		POP ACC
		POP 01H
		POP 00H
RET

DELAY3MS:
    PUSH 00H
		PUSH 01H
		PUSH ACC
		MOV R0,#010H
DL3MA:
    MOV R1,#0FFH
DL3MB:
		NOP
		NOP
		NOP
		NOP
		NOP
		DJNZ R1,DL3MB
		DJNZ R0,DL3MA
		POP ACC
		POP 01H
		POP 00H
RET

DELAY5US:
    PUSH 00H
		PUSH ACC
		MOV R0,#0A8H
		DJNZ R0,$
		POP ACC
		POP 00H
RET

DELAY16US:             
		PUSH 00H
		PUSH 01H
		PUSH ACC
		MOV R0,#03H
DL16A:
		MOV R1,#0FFH
		DJNZ R1,$
		DJNZ R0,DL16A
		POP ACC
		POP 01H
		POP 00H
RET
;.................................................................

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;-----------------------------------------------------------------
;
;  >>子程序 --- nRF2401配置为接收状态
;									<43US
;-----------------------------------------------------------------
CTCEIVER:
		CLR CE
		CLR CS
		CLR EA
		NOP
		SETB CS
		ACALL DELAY5US
		MOV A,#31H
		MOV SPI0DAT,A
		ACALL DELAY16US
		MOV SPI0CN,#03H				;清除spi中断标志
		CLR CS
		ACALL DELAY16US				;等待配置结束
		SETB CE								;启动接收
		ACALL DELAY5US
		SETB EA
RET
		
;-----------------------------------------------------------------
;
;  >>子程序 --- nRF2401配置为发送状态
;
;-----------------------------------------------------------------
CTSENT:	 
		CLR CS
		CLR CE
		CLR EA
		NOP
		SETB CS
		ACALL DELAY5US
		MOV A,#30H
		MOV SPI0DAT,A
		ACALL DELAY16US
		MOV SPI0CN,#03H
		CLR CS
		ACALL DELAY16US
		SETB CE
		ACALL DELAY5US
		SETB EA
RET


;-------------------------------------------------------
;
; >> 子程序 ——— 接收数据
;					
; 								<8MS      R0  R1
;-------------------------------------------------------
CEIVER:
		SETB	CE
		ACALL DELAY50US
		MOV A,SPI0DAT						;清空接收缓冲区
		CLR EA
		MOV R1,#20
		MOV R0,#30H
CEIVER_2:
		MOV A,#0FFH
		MOV SPI0DAT,A						;启动SPI接收
		ACALL DELAY16US					;
		MOV A,SPI0DAT
		MOV @R0,A
		INC R0
		DJNZ R1,CEIVER_2
		;CLR CE
		SETB EA
		ACALL DELAY3MS
RET
;............................................................

;-------------------------------------------------------
;
; >> 子程序 ——— 发送数据
;									
; 								<8MS      R0  R1
;-------------------------------------------------------
SENT:
		SETB CE
		ACALL DELAY16US
		MOV A,#41H
		MOV SPI0DAT,A
		ACALL DELAY16US
		MOV A,#42H
		MOV SPI0DAT,A
		ACALL DELAY16US
		MOV A,#43H
		MOV SPI0DAT,A
		ACALL DELAY16US
		MOV A,#44H
		MOV SPI0DAT,A
		ACALL DELAY16US
		MOV A,#45H
		MOV SPI0DAT,A
		ACALL DELAY16US                 ;发送地址
		MOV R0,#20
		MOV R1,#4BH
SENT_1:
		MOV A,@R1
		MOV SPI0DAT,A
		ACALL DELAY16US
		INC R1
		DJNZ R0,SENT_1
		CLR CE
		;ACALL CLEAR
		ACALL DELAY3MS
		ACALL DELAY3MS
		SETB CE
RET

CLEAR:
		MOV R0,#20
		MOV R1,#4BH
CLEAR_1:
		MOV A,#0FFH
		MOV @R1,A
		DJNZ R0,CLEAR_1
RET

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;-----------------------------------------------------------------
;
;   >>中断程序 --- 与上位机的UART通信之中断处理
;
;-----------------------------------------------------------------
UART:
		PUSH ACC
		JNB RI,UARTT
UARTR:
		CLR RI
		MOV A,SBUF
		MOV R1,4AH
		MOV @R1,A
		INC 4AH
		DJNZ 49H,UART_1
		ORL PCON,#40H										;UART接收完成标志
		AJMP UART_1
UARTT:
		CLR TI
		ORL PCON,#04H
UART_1:
		POP ACC
RETI


SPI:
		ACALL DELAY16US
		CLR SPIF
		CLR RXOVRN
RETI
;.............................................................
END


⌨️ 快捷键说明

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