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

📄 crycomm rx.a51

📁 uart communication uart communication
💻 A51
📖 第 1 页 / 共 2 页
字号:
INCLUDE REG_51.PDF
RB0     EQU     000H    ; Select Register Bank 0
RB1     EQU     008H    ; Select Register Bank 1  ...poke to PSW to use

;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;		PORT DECLERATION
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
BUZZER	EQU	P3.1

RECEIVE	EQU	P3.3
READ		EQU	P3.4

; ***LCD CONTROL***
LCD_RS    EQU    P1.7     ;LCD REGISTER SELECT LINE
LCD_E     EQU    P1.6    ;LCD ENABLE LINE
LCD_DB4   EQU    P1.5     ;PORT 1 IS USED FOR DATA
LCD_DB5   EQU    P1.4     ;USED FOR DATA
LCD_DB6   EQU    P1.3    ;FOR DATA
LCD_DB7   EQU    P1.2    ;FOR DATA

; ***CURSOR CONTROL INSTRUCTIONS***

OFFCUR    EQU    0CH
BLINKCUR  EQU    0DH

; ***DISPLAY CONTROL INSTRUCTIONS***

CLRDSP    EQU    01H
ONDSP     EQU    0CH

; ***SYSTEM INSTRUCTIONS***

CONFIG    EQU    28H      ; 4-BIT DATA,2 LINES,5X7 MATRIX LCD
ENTRYMODE EQU    6        ; INCREMENT CURSOR DON'T SHIFT DISPLAY 

DSEG            ; This is internal data memory
ORG     20H     ; Bit adressable memory
COUNT:	DS	1
;CRYP:		DS	1
;COUNTS:	DS 1
CNN:		DS	1
MSG:	DS		66

STACK:	DS	1
CSEG            ; Code begins here
         
;  ---------==========----------==========---------=========---------
;  Main routine. Program execution starts here.
;  ---------==========----------==========---------=========---------
		ORG     00H    ; Reset

;  ---------==========----------==========---------=========---------		
		
MAIN:	
         MOV SP,#65H
         MOV    PSW,#RB0    		  ; Select register bank 0
        	CLR BUZZER
        	

			CALL RESETLCD4
			CALL INITLCD4
			CALL TITLE1
			MOV TMOD,#20H
			MOV TH1,#0A0H			;300
			MOV SCON,#50H
			MOV R1,#MSG		
			SETB TR1	
			CALL DISP
			
TGH1:		CALL CLEAR_RAM
TGH:		JNB RI,$
			CLR RI
			MOV A,SBUF				
			CJNE A,#0AAH,TGH		;SYNC			
			JNB RI,$
			CLR RI
			MOV CNN,SBUF				;GET MESSAGE LENGTH
			MOV R2,CNN
			MOV R1,#MSG
DOWNS:	JNB RI,$
			CLR RI
			MOV A,SBUF	
			CLR C
			SUBB A,#7AH	
			JNC TGH1				;JMP IF ABNORMAL
			MOV A,SBUF
			CLR C
			SUBB A,#19H
			JC TGH1					;JMP IF ABNORMAL
			MOV @R1,SBUF
			INC R1	
			DJNZ R2,DOWNS
			
			SETB BUZZER
			CALL MSG_RECEIVED
			
			SETB READ
			SETB RECEIVE
SDF3:		JNB READ,SDF1
			JNB RECEIVE,SDF2
			AJMP SDF3
SDF1:		CLR BUZZER
			CALL DELAY
			JNB READ,$
			CALL DELAY
			AJMP SDF4
SDF2:		CLR BUZZER
			CALL DELAY
			JNB RECEIVE,$
			CALL DELAY
			AJMP SDF4
			
SDF4:		CALL ALGO_DISP					;DISP SELECT ALGORITHM
			SETB RECEIVE 
			SETB READ
FGB3:		JNB RECEIVE,FGB1
			JNB READ,FGB2
			AJMP FGB3
			
FGB1:		CALL DELAY
			JNB RECEIVE,$	
			MOV COUNT,#30H
			MOV A,MSG
			CJNE A,#20H,KEY_WRONG
			CALL SELECT_KEY			
			MOV A,COUNT
			CJNE A,MSG+1,KEY_WRONG
			AJMP DISPLAY_TEXT
FGB2:		
			CALL DELAY
			JNB READ,$
			MOV COUNT,#30H
			MOV A,MSG
			CJNE A,#21H,KEY_WRONG
			CALL SELECT_KEY			
			MOV A,COUNT
			CJNE A,MSG+1,KEY_WRONG
			AJMP DISPLAY_TEXT				
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
KEY_WRONG:
	MOV DPTR,#MSG32                                 
	CALL LCD_MSG
	ajmp $
MSG32:                                                                                                                                                                      
	DB 1H,80H,'* Invalid Key *',0C0H,'################',00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
		
DISPLAY_TEXT:					
			MOV R4,#01H							;DISPLAY ON LCD
			CALL WRLCDCOM4
			CALL MDELAY
			MOV R4,#80H							;FIRST LINE
			CALL WRLCDCOM4
			CALL MDELAY
			MOV R1,#MSG+2
			MOV R2,#16		
TOPS:		MOV A,@R1
			INC R1
			MOV R4,A
			CALL WRLCDDATA
			CALL MDELAY
			DJNZ R2,TOPS
			
			MOV R4,#0C0H					;SECOND LINE
			CALL WRLCDCOM4
			CALL MDELAY
			MOV R1,#MSG+18
			MOV R2,#16		
TOPS1:	MOV A,@R1
			INC R1
			MOV R4,A
			CALL WRLCDDATA
			CALL MDELAY
			DJNZ R2,TOPS1
			
			SETB READ
			SETB RECEIVE
HEH1:		JNB RECEIVE,DDWN
			JB READ,HEH1
			
			CALL MDELAY
			JNB READ,$
;SECOND DISP
			
			MOV R4,#01H							;DISPLAY ON LCD
			CALL WRLCDCOM4
			CALL MDELAY
			MOV R4,#80H							;FIRST LINE
			CALL WRLCDCOM4
			CALL MDELAY
			MOV R1,#MSG+34
			MOV R2,#16		
TAPS:		MOV A,@R1
			INC R1
			MOV R4,A
			CALL WRLCDDATA
			CALL MDELAY
			DJNZ R2,TAPS
			
			MOV R4,#0C0H					;SECOND LINE
			CALL WRLCDCOM4
			CALL MDELAY
			MOV R1,#MSG+50
			MOV R2,#16		
TAPS1:	MOV A,@R1
			INC R1
			MOV R4,A
			CALL WRLCDDATA
			CALL MDELAY
			DJNZ R2,TAPS1			
			
			SETB RECEIVE
			SETB READ
EDF2:		JNB READ,EDF1
			JB RECEIVE,EDF2
DDWN:		CALL DELAY
			CALL DISP
			JNB RECEIVE,$
			CALL DELAY
			AJMP TGH1

EDF1:		CALL DELAY
			JNB READ,$
			CALL DELAY
			AJMP DISPLAY_TEXT
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DELAY:
		MOV R6,#0FFH
RE1:	MOV R7,#0FFH
RE:	NOP
		DJNZ R7,RE
		DJNZ R6,RE1
		RET
;**********************************************************		
CLEAR_RAM:
			MOV R0,#MSG 
   		MOV R5,#66  
   		MOV A,#' '
PEER:		MOV @R0,A
   		INC R0
   		DJNZ R5,PEER 
   		RET	
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
SELECT_KEY:
		MOV A,COUNT
		CJNE A,#30H,CVF0
		CALL ASK_KEY0
		AJMP CVFF
CVF0:	CJNE A,#31H,CVF1
		CALL ASK_KEY1
		AJMP CVFF
CVF1:	CJNE A,#32H,CVF2
		CALL ASK_KEY2
		AJMP CVFF
CVF2:	CJNE A,#33H,CVF3
		CALL ASK_KEY3
		AJMP CVFF
CVF3:	CJNE A,#34H,CVF4
		CALL ASK_KEY4
		AJMP CVFF
CVF4:	CJNE A,#35H,CVF5
		CALL ASK_KEY5
		AJMP CVFF
CVF5:	CJNE A,#36H,CVF6
		CALL ASK_KEY6
		AJMP CVFF
CVF6:	CJNE A,#37H,CVF7
		CALL ASK_KEY7
		AJMP CVFF
CVF7:	CJNE A,#38H,CVF8
		CALL ASK_KEY8
		AJMP CVFF
CVF8:	CJNE A,#39H,CVF9
		CALL ASK_KEY9
		AJMP CVFF
CVF9:	MOV COUNT,#30H
		AJMP SELECT_KEY
CVFF:

		SETB RECEIVE
		SETB READ
FCD3:	JNB RECEIVE,FCD1
		JNB READ,FCD2	
		AJMP FCD3	

FCD2:	CALL DELAY
		JNB READ,$
		RET
FCD1:	INC COUNT
		MOV A,COUNT
		CALL DELAY
		JNB RECEIVE,$
		AJMP SELECT_KEY	
;##########################################################
;		DISPLAY ROUTINES
;##########################################################
TITLE1:
	MOV DPTR,#MSAG1
	CALL LCD_MSG
	RET
MSAG1:
	DB 1H,80H,'Securred Comm',0C3H,'Automation',00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~	
DISP:
	MOV DPTR,#MSAG2
	CALL LCD_MSG
	RET

⌨️ 快捷键说明

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