📄 串并转换.asm
字号:
;***********************************************************
;***** This demonstration is a program *****
;***** for Electronic Clock with adjuctment function *****
;***********************************************************
ORG 0000h
LJMP INIT
ORG 0030H
INIT:CLR EA
MOV A,#10H
MOV 79H,A
MOV 7AH,A
MOV 7BH,A
MOV 7CH,A
MOV 7DH,A
MOV 7EH,A
MOV 30H,#00H
;********************************************************
;***** This following is main program module ***
;***** there are three tasks in it. one is Key_scan ***
;***** one is display. one is Port 1 initialization ***
;********************************************************
MAIN:LCALL SP8_SUB
LCALL HALFHEX
INC 30H
MOV R7,#0FFH
LOOP88:LCALL DISP_SUB
DJNZ R7,LOOP88
AJMP MAIN
;****************************************************
;***** SERIEAL DATA TO 74LS164 *****
;****************************************************
SP8_SUB:SETB P1.1
MOV A,30H
MOV R7,#08H
LOOP77:RRC A
MOV P1.0, C
SETB P1.1
CLR P1.1
NOP
NOP
SETB P1.1
DJNZ R7,LOOP77
RET
HALFHEX:MOV A,30H
ANL A,#0FH
MOV 7DH,A
MOV A,30H
ANL A,#0F0H
SWAP A
MOV 7EH,A
RET
;***********************************************
;*** This following is display subroutine. ***
;*** #0FF21H is LDD digital control address ***
;*** #0FF22H is LDD 7-Segment address ***
;***********************************************
DISP_SUB:MOV R1, #7EH ; First LDD BCD value address
MOV R2, #00100000B ; Frist LDD latch control bit
MOV R3, #00H
DISP1:MOV DPTR, #0FFddH
MOV A, R2
MOVX @DPTR, A ; Control latch implement
MOV DPTR, #4000H ; 7_segment_code table first address
MOV A, @R1
MOVC A, @A+DPTR
MOV DPTR, #0FFdcH
MOVX @DPTR, A
DISP2:DJNZ R3, DISP2 ; Delay 512US
DEC R1 ; Second LDD BCD bit is 7DH
CLR C
MOV A, R2
RRC A ;Move '1' to next latch control bit
MOV R2, A
JNZ DISP1 ; R2 isnot moved to "00000000" disp1
RET
;***************************************************************
;***** This following is a table for BCD to 7_segment_code **
;***** You have to notice the starting address is 1000h **
;***************************************************************
ORG 4000H
DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H ; 0123456789
DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH ;ABCDEF
END
DP G F E D C B A
1 0 0 0 1 1 1 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -