📄 clock.lst
字号:
页 1
07-08-06
16:20:10
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
;相关知识内容请参阅S51E 文档内容--电子时钟实验。
;这是一个使用单片机实现电子时钟功能的程序,无需扩展.
;六个数码管分别显示时,分,秒
;使用SW1-SW6键盘分别设定时,分,秒,按键时伴有提示音!
BUFF_KEY EQU 21H ;键盘键
BUFF_LED1 EQU 22H ;数码管显示缓存
BUFF_LED2 EQU 23H
BUFF_LED3 EQU 24H
BUFF_LED4 EQU 25H
BUFF_LED5 EQU 26H
BUFF_LED6 EQU 27H
BUFF_LED_LP EQU 28H ;T0键盘显示扫描缓存
HOR EQU 30H ;小时值缓存
MIN EQU 31H ;分钟值缓存
SEC EQU 32H ;秒值缓存
F_BEEP BIT 01H
LED_PORT EQU P0
DIG_PORT EQU P2
KEY_PORT EQU P2
SW1 BIT P2.7
SW2 BIT P2.6
SW3 BIT P2.5
SW4 BIT P2.4
SW5 BIT P2.3
SW6 BIT P2.2
BEEP BIT P2.0
KEY BIT P3.3
org 000h
0000 020100 JMP main
ORG 00BH
000B 02022D JMP T0_INT
ORG 100H
0100 758140 MAIN: MOV SP ,#40H
0103 75D000 MOV PSW,#00H
0106 787F MOV R0,#7FH ;初始化RAM区,
0108 7400 CLR_RAM:MOV A,#00H
010A F6 MOV @R0,A
010B D8FB DJNZ R0,CLR_RAM
010D 85FF90 MOV P1,0FFH ;INIT
0110 85FFA0 MOV P2,0FFH
0113 85FF80 MOV P0,0FFH
0116 85FFB0 MOV P3,0FFH
0119 758921 MOV TMOD,#21h
011C 758CF0 MOV TH0,#240 ;T0=4MS
011F 758A60 MOV TL0,#96
0122 D28C SETB TR0
0124 D2A9 SETB ET0
E:\单片机\SMT-MCU\S51E文档资料\ASM程序\CLOCK.ASM
页 2
07-08-06
16:20:10
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
0126 D2AF SETB EA
0128 20B3FD WAIT_KEY:JB KEY,$ ;等候按键!
012B 30A717 JNB SW1,SW1_OK
012E 30A638 JNB SW2,SW2_OK
0131 30A557 JNB SW3,SW3_OK
0134 30A478 JNB SW4,SW4_OK
0137 30A305 JNB SW5,SW5_OKA
013A 30A205 JNB SW6,SW6_OKA
013D 80E9 JMP WAIT_KEY
013F 0201D3 SW5_OKA: JMP SW5_OK
0142 0201F7 SW6_OKA: JMP SW6_OK
0145 E530 SW1_OK: MOV A,HOR
0147 B41810 CJNE A,#24,SW1_OVER
014A 753000 MOV HOR,#00H
014D D201 SETB F_BEEP
014F C2A0 CLR BEEP
0151 12021B LCALL DEL
0154 D2A0 SETB BEEP
0156 C201 CLR F_BEEP
0158 80CE JMP WAIT_KEY
015A 0530 SW1_OVER:INC HOR ;时加1
015C D201 SETB F_BEEP
015E C2A0 CLR BEEP
0160 12021B LCALL DEL
0163 D2A0 SETB BEEP
0165 C201 CLR F_BEEP
0167 80BF JMP WAIT_KEY
0169 E530 SW2_OK: MOV A,HOR
016B B40010 CJNE A,#00,SW2_OVER
016E 753017 MOV HOR,#23
0171 D201 SETB F_BEEP
0173 C2A0 CLR BEEP
0175 12021B LCALL DEL
0178 D2A0 SETB BEEP
017A C201 CLR F_BEEP
017C 80AA JMP WAIT_KEY
017E 1530 SW2_OVER:DEC HOR ;时减1
0180 D201 SETB F_BEEP
0182 C2A0 CLR BEEP
0184 12021B LCALL DEL
0187 D2A0 SETB BEEP
0189 809D JMP WAIT_KEY
018B E531 SW3_OK: MOV A,MIN
018D B43B10 CJNE A,#59,SW3_OVER
0190 753100 MOV MIN,#00H
E:\单片机\SMT-MCU\S51E文档资料\ASM程序\CLOCK.ASM
页 3
07-08-06
16:20:10
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
0193 D201 SETB F_BEEP
0195 C2A0 CLR BEEP
0197 12021B LCALL DEL
019A D2A0 SETB BEEP
019C C201 CLR F_BEEP
019E 8088 JMP WAIT_KEY
01A0 0531 SW3_OVER:INC MIN ;分加1
01A2 D201 SETB F_BEEP
01A4 C2A0 CLR BEEP
01A6 12021B LCALL DEL
01A9 D2A0 SETB BEEP
01AB C201 CLR F_BEEP
01AD 2128 JMP WAIT_KEY
01AF E531 SW4_OK: MOV A,MIN
01B1 B40010 CJNE A,#00,SW4_OVER
01B4 75313B MOV MIN,#59
01B7 D201 SETB F_BEEP
01B9 C2A0 CLR BEEP
01BB 12021B LCALL DEL
01BE D2A0 SETB BEEP
01C0 C201 CLR F_BEEP
01C2 2128 JMP WAIT_KEY
01C4 1531 SW4_OVER:DEC MIN ;分减1
01C6 D201 SETB F_BEEP
01C8 C2A0 CLR BEEP
01CA 12021B LCALL DEL
01CD D2A0 SETB BEEP
01CF C201 CLR F_BEEP
01D1 2128 JMP WAIT_KEY
01D3 E532 SW5_OK: MOV A,SEC
01D5 B43B10 CJNE A,#59,SW5_OVER
01D8 753200 MOV SEC,#00H
01DB D201 SETB F_BEEP
01DD C2A0 CLR BEEP
01DF 12021B LCALL DEL
01E2 D2A0 SETB BEEP
01E4 C201 CLR F_BEEP
01E6 2128 JMP WAIT_KEY
01E8 0532 SW5_OVER:INC SEC ;秒加1
01EA D201 SETB F_BEEP
01EC C2A0 CLR BEEP
01EE 12021B LCALL DEL
01F1 D2A0 SETB BEEP
01F3 C201 CLR F_BEEP
01F5 2128 JMP WAIT_KEY
E:\单片机\SMT-MCU\S51E文档资料\ASM程序\CLOCK.ASM
页 4
07-08-06
16:20:10
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
01F7 E532 SW6_OK: MOV A,SEC
01F9 B40010 CJNE A,#00,SW6_OVER
01FC 75303B MOV HOR,#59
01FF D201 SETB F_BEEP
0201 C2A0 CLR BEEP
0203 12021B LCALL DEL
0206 D2A0 SETB BEEP
0208 C201 CLR F_BEEP
020A 2128 JMP WAIT_KEY
020C 1532 SW6_OVER:DEC SEC ;时减1
020E D201 SETB F_BEEP
0210 C2A0 CLR BEEP
0212 12021B LCALL DEL
0215 D2A0 SETB BEEP
0217 C201 CLR F_BEEP
0219 2128 JMP WAIT_KEY
021B 7D02 DEL: MOV R5,#02 ;为演示方便,人为插入的延时
021D 7EC8 DEL01: MOV R6,#200
021F 7FC8 DEL02: MOV R7,#200
0221 DFFE DJNZ R7,$
0223 DEFA DJNZ R6,DEL02
0225 DDF6 DJNZ R5,DEL01
0227 22 RET
0228 75F00A BIN_BCD: MOV B,#10
022B 84 DIV AB
022C 22 RET
;------------- T0 INTRRUPT 数码管扫描定时中断---------------------------
022D C0E0 T0_INT: PUSH ACC
022F C0D0 PUSH PSW
0231 758CF0 MOV TH0,#240 ;T0=4MS
0234 758A60 MOV TL0,#96
0237 0528 INC BUFF_LED_LP
0239 E528 MOV A,BUFF_LED_LP
023B B4FA2C CJNE A,#250,CONT_SCAN ;250*4MS=1S
023E 752800 MOV BUFF_LED_LP,#00H
0241 0532 INC SEC
0243 E532 MOV A,SEC
0245 B43C22 CJNE A,#60,CONT_SCAN
0248 753200 MOV SEC,#00H
024B 0531 INC MIN
024D E531 MOV A,MIN
024F B43C18 CJNE A,#60,CONT_SCAN
0252 753100 MOV MIN,#00H
0255 0530 INC HOR
E:\单片机\SMT-MCU\S51E文档资料\ASM程序\CLOCK.ASM
页 5
07-08-06
16:20:10
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
0257 E530 MOV A,HOR
0259 B4180E CJNE A,#24,CONT_SCAN
025C 753000 MOV HOR,#00H
025F C2A0 clr beep
0261 C290 clr p1.0
0263 12021B lcall del
0266 D2A0 setb beep
0268 D290 setb p1.0
026A E532 CONT_SCAN:MOV A,SEC
026C 120228 LCALL BIN_BCD
026F 85F027 MOV BUFF_LED6,B
0272 F526 MOV BUFF_LED5,A
0274 E531 MOV A,MIN
0276 120228 LCALL BIN_BCD
0279 85F025 MOV BUFF_LED4,B
027C F524 MOV BUFF_LED3,A
027E E530 MOV A,HOR
0280 120228 LCALL BIN_BCD
0283 85F023 MOV BUFF_LED2,B
0286 F522 MOV BUFF_LED1,A
0288 E528 MOV A,BUFF_LED_LP
028A 75F006 MOV B,#06
028D 84 DIV AB
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -