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

📄 elcclk.s

📁 电子时钟汇编源程序
💻 S
字号:
; E2003a.ASM 
; (Keyboard scan and Digital display)
; Reference for Grade 2003, s.c.u.t.
; Edit by Lin
; 2006.3;
		ORG  0000H
		AJMP  MAIN
		ORG  0030H
MAIN:	NOP
		MOV  SP,#60H
		MOV  30H,#0FFH		; buffer for display
M01:	ACALL  KEYS
		AJMP  M01
								; ------
KEYS:	NOP					; sub:
		ACALL  DISP			; used for delay
		MOV  P2,#0F0H			; set all rows 0
		MOV  A,P2
		ANL  A,#0F0H
		CJNE  A,#0F0H,K01		; any key push ?
		AJMP  KEYS			; wait again
								; ---
K01:	ACALL  DISP			; for delay
		MOV  P2,#0F0H			; set  all rows 0
		MOV  A,P2
		ANL  A,#0F0H
		CJNE  A,#0F0H,K02		; be sure any key push ?
		AJMP  KEYS			; wait again
								; ---
K02:	MOV  R3,A				; remain No. of row
		MOV  P2,#0FH			; set all column 0
		MOV  A,P2
		ANL  A,#0FH
		CJNE  A,#0FH,K03		; any key push ?
		AJMP  KEYS			; wait again
								; ---
K03:	ACALL  DISP			; for delay
		MOV  P2,#0FH			; set all column 0
		MOV  A,P2
		ANL  A,#0FH
		CJNE  A,#0FH,K04		; any key push ?
		AJMP  KEYS			; wait again
								; ---
K04:	ORL  A,R3				; merge value of R & C
		MOV  R3,A
								; ---
K05:	ACALL  DISP			; for delay
		MOV  P2,#0FH			; set all column 0
	MOV  A,P2
		ANL  A,#0FH
		CJNE  A,#0FH,K05		; key release ?
								; ---
		MOV  DPTR,#KEYT		; table for beyboard
		MOV  B,#12				; key counter
		MOV  A,#0				; shift value
K06:	PUSH  ACC				; temp. keep
		MOVC  A,@A+DPTR		; get value
		CJNE  A,3H,K07			; value (R3) equals ?
		POP  ACC				; yes
		ADD  A,#12				; table for display
		MOVC  A,@A+DPTR
		MOV  30H,A			; buffer for display
		ACALL  DISP			; show
		AJMP  KEY1			; scan again
k07:		POP  ACC				; take temp.
		INC  A					; shift +1
		DJNZ  B,K06			; up to end ?
KEY1:	RET
								; ------
DISP:	NOP					; sub:
		MOV  P0,#0C0H			; send first digit '0'
		CLR  P1.5				; first LEDs on
		ACALL  DELAY
		SETB  P1.5				; first LEDs off
		MOV  P0,30H			; send second digit
		CLR  P1.4				; second LEDs on
		ACALL  DELAY
		SETB  P1.4				; second LEDs off
		RET
								; ------
DELAY:							; sub:
		MOV  28H,#03H			; delay 6.148ms
D02:	MOV  29H,#0FFH
D01:	DJNZ  29H,D01
		DJNZ  28H,D02
		RET
								; ------
								; keyboard value
KEYT:	DB  0D7H				; for '0'
		DB  0EEH				; for '1'
		DB  0DEH				; for '2'
		DB  0BEH				; for '3'
		DB  0EDH				; for '4'
		DB  0DDH				; for '5'
		DB  0BDH				; for '6'
		DB  0EBH				; for '7'
		DB  0DBH				; for '8'
		DB  0BBH				; for '9'
		DB  0E7H				; for '#'
		DB  0B7H				; for '*'
								; ------
								; display value
	DB  0C0H				; for '0'
		DB  0F9H				; for '1'
		DB  0A4H				; for '2'
		DB  0B0H				; for '3'
		DB   99H				; for '4'
		DB   92H				; for '5'
		DB   82H				; for '6'
		DB  0F8H				; for '7'
		DB   80H				; for '8'
		DB   90H				; for '9'
	DB   8CH				; for *(P)
	DB   86H				; for #(E)
	END

⌨️ 快捷键说明

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