找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 19935|回复: 14
收起左侧

单片机制作—6位LED数码管时钟 汇编程序+电路图

  [复制链接]
ID:85192 发表于 2015-7-14 17:06 | 显示全部楼层 |阅读模式

6位共阴数码管,可作时钟也可作秒表(估计没人用这么多位的秒表哟)
时、分和秒可分别调整,有开始、暂停和清零键。


程序清单:

;12M晶振 2010 01 14 调试完成  03 15 修改  2011 03 03 注释

STRT EQU P2.6
STP EQU P2.7
CLRR EQU P3.0
SEC EQU P3.5
MIN EQU P3.6
HOUR EQU P3.7

ORG 00H
SJMP MAIN
ORG 0BH
AJMP T0INT0
ORG 30H

MAIN: MOV  SP,#60H
MOV R4,#20
MOV TMOD,#01H
MOV TH0,#03CH  ;#9EH 12M晶振时定时初值取#3CB0H,还可细调,如 TL=#0B7H,可以更准  
MOV TL0,#0B0H   ;#58H
SETB ET0
SETB EA
;MOV 28H,#12

kS: LCALL DISP ;秒调整按键
JB SEC,KM
LCALL DISP
JNB SEC,$-3
AJMP SINC

kM: JB MIN,KH ;分调整按键
LCALL DISP
JNB MIN,$-3
AJMP MINC

KH: JB HOUR,K1 ;时调整按键
LCALL DISP
JNB HOUR,$-3
AJMP HINC

SINC: INC 26H ;秒调整
MOV A,26H
CJNE A,#60,SINC0
MOV 26H,#0
SINC0: AJMP KS

MINC: INC 27H ;分调整
MOV A,27H
CJNE A,#60,MINC0
MOV 27H,#0
MINC0: AJMP KM

HINC: INC 28H ;时调整
MOV A,28H
CJNE A,#24,HINC0
MOV 28H,#0
HINC0: AJMP KH  
  

k1: LCALL DISP ;开始键
JB STRT,K2
LCALL DISP
JNB STRT,$-3
AJMP START

k2: JB STP,K3 ;暂停键
LCALL DISP
JNB STP,STOP
K3: JB CLRR,KS
LCALL DISP
JNB CLRR,CLEAR ;清零键
AJMP KS

START: SETB TR0     ;开始
AJMP K1

STOP: CLR TR0 ;暂停
AJMP K2

CLEAR: CLR     TR0 ;清零
MOV A,#0
MOV 26H,A
MOV     27H,A
MOV 28H,A
AJMP KS

DISP:
MOV A,26H
MOV B,#10
DIV AB
MOV 20H,B  ;余数(秒个位数)
MOV 21H,A  ;商(秒十位数)
MOV A,27H
MOV B,#10
DIV AB
MOV 22H,B  ;余数(分个位数)
MOV 23H,A  ;商(分十位数)
MOV A,28H
MOV B,#10
DIV AB
MOV 24H,B  ;余数(时个位数)
MOV 25H,A  ;商(时十位数)
MOV A,20H  ;秒个位
ACALL SEG7
MOV P0,A
CLR P2.0
ACALL DLY
SETB P2.0
MOV A,21H  ;秒十位
ACALL SEG7
MOV P0,A
CLR P2.1
ACALL DLY
SETB P2.1
MOV A,22H  ;分个位
ACALL SEG7
MOV P0,A
SETB P0.7
CLR P2.2
ACALL DLY
SETB P2.2
MOV A,23H  ;分十位
ACALL SEG7
MOV P0,A
CLR P2.3
ACALL DLY
SETB P2.3
MOV A,24H  ;时个位
ACALL SEG7
MOV P0,A
SETB P0.7
CLR P2.4
ACALL DLY
SETB P2.4
MOV A,25H  ;时十位
ACALL SEG7
MOV P0,A
CLR P2.5
ACALL DLY
SETB P2.5
RET


T0INT0: MOV TH0,#03CH;#9EH ;定时中断子程序。重装定时常数
MOV TL0,#0B0H;#58H
DJNZ R4,T0INTR ;50msX20=1S,未满20次,跳出中断子程序
MOV R4,#20
INC 26H  ;1S,秒存储单元内数+1
MOV A,26H
CJNE A,#60,T0INTR    ;未满60S,跳出中断。
MOV 26H,#0  ;满60S,秒单元清零
INC 27H  ;分+1
MOV A,27H
CJNE A,#60,T0INTR
MOV 27H,#0
INC 28H
MOV A,28H
CJNE A,#24,T0INTR
MOV 28H,#0
T0INTR: RETI

DLY10:  MOV R3,#30
D0: ACALL DLY
DJNZ R3,D0
RET
DLY: MOV R7,#2
D1: MOV R6,#40
DJNZ R6,$
DJNZ R7,D1
RET

SEG7: INC A
MOVC A,@A+PC
RET

     DB      03FH  ;0          共阴
        DB      006H  ;1
        DB      05BH  ;2
        DB      04FH  ;3
        DB      066H  ;4
        DB      06DH  ;5
        DB      07DH  ;6
        DB      007H  ;7
        DB      07FH  ;8
        DB      06FH  ;9

END







;2011 11 25   更新。加上闹铃 ,按键功能稍作改动 E:\DPJ\CLOCK\CLOCK-MX\CLOCKADJCC-MX.ASM

STRT EQU P2.6
STP EQU P2.7
CLRR EQU P3.0
SEC EQU P3.5
MIN EQU P3.6
HOUR EQU P3.7

ORG 00H
AJMP MAIN
ORG 0BH
AJMP T0INT
ORG 1BH
AJMP T1INT
ORG 30H

MAIN:
MOV  SP,#60H
MOV R4,#20
MOV TMOD,#11H
MOV TH0,#03CH;#9EH 12M晶振时定时初值取#3CB0H,还可细调如 TL=#0B7H,可以更准  
MOV TL0,#0B0H;#58H
MOV TH1,#0FEH
MOV TL1,#0CH
SETB EA
SETB ET0
SETB ET1

kS:
ACALL DISP
ACALL ALARM

JB SEC,KM   ;秒调整按键
ACALL DISP
JNB SEC,$-2
AJMP SINC

kM:
JB MIN,KH   ;分调整按键
ACALL DISP
JNB MIN,$-2
AJMP MINC

KH:
JB HOUR,K1   ;时调整按键
ACALL DISP
JNB HOUR,$-2
AJMP HINC

SINC:
JB 7FH,SINC_A
INC 26H ;秒调整
MOV A,26H
CJNE A,#60,SINC0
MOV 26H,#0
AJMP SINC0
SINC_A:
INC 36H ;闹秒调整
MOV A,36H
CJNE A,#60,SINC0
MOV 36H,#0
SINC0: AJMP KS

MINC:
JB 7FH,MINC_A
INC 27H ;分调整
MOV A,27H
CJNE A,#60,MINC0
MOV 27H,#0
MINC_A:
INC 37H ;闹分调整
MOV A,37H
CJNE A,#60,MINC0
MOV 37H,#0
MINC0:
AJMP KM

HINC:
JB 7FH,HINC_A
INC 28H ;时调整
MOV A,28H
CJNE A,#24,HINC0
MOV 28H,#0
HINC_A:
INC 38H ;闹时调整
MOV A,38H
CJNE A,#24,HINC0
MOV 38H,#0
HINC0:
AJMP KH  
  

k1:
ACALL DISP ;开始键
JB STRT,K2
ACALL DISP
JNB STRT,$-2
AJMP START

k2:
JB STP,K3 ;暂停键
ACALL DISP
JNB STP,$-2
AJMP CL_AL
K3:
JB CLRR,KS0
ACALL DISP
JNB CLRR,CLEAR ;清零键
KS0:
AJMP KS

START:
CPL TR0       ;开始/暂停
CPL 7DH  ;7DH为开始键按下标志,此作为允许闹铃标志
AJMP K1

CL_AL:
CPL 7FH  ;7FH作时钟和闹铃标志位?
AJMP K2

CLEAR:
CLR     TR0  ;清零
MOV A,#0
MOV 26H,A  
MOV   27H,A
MOV 28H,A
MOV 36H,A
MOV   37H,A
MOV 38H,A

AJMP KS

DISP:
JB 7FH,DISP_A
MOV 29H,26H  ;秒送秒显示缓存
MOV 2AH,27H
MOV 2BH,28H
AJMP DISP1
DISP_A:
MOV 29H,36H
MOV 2AH,37H
MOV 2BH,38H
DISP1:
MOV A,29H
MOV B,#10
DIV AB
MOV 20H,B   ;余数(秒个位数)
MOV 21H,A   ;商(秒十位数)
MOV A,2AH
MOV B,#10
DIV AB
MOV 22H,B   ;余数(分个位数)
MOV 23H,A   ;商(分十位数)
MOV A,2BH
MOV B,#10
DIV AB
MOV 24H,B   ;余数(时个位数)
MOV 25H,A   ;商(时十位数)
MOV A,20H   ;秒个位
ACALL SEG7
MOV P0,A
CLR P2.0
ACALL DLY
SETB P2.0
MOV A,21H   ;秒十位
ACALL SEG7
MOV P0,A
CLR P2.1
ACALL DLY
SETB P2.1
MOV A,22H   ;分个位
ACALL SEG7
MOV P0,A
SETB P0.7
CLR P2.2
ACALL DLY
SETB P2.2
MOV A,23H  ;分十位
ACALL SEG7
MOV P0,A
CLR P2.3
ACALL DLY
SETB P2.3
MOV A,24H    ;时个位
ACALL SEG7
MOV P0,A
SETB P0.7
CLR P2.4
ACALL DLY
SETB P2.4
MOV A,25H    ;时十位
ACALL SEG7
MOV P0,A
CLR P2.5
ACALL DLY
SETB P2.5
RET

ALARM:
JNB 7DH,ALRT
MOV A,28H    ;比较小时
CJNE A,38H,RT   ;不等返回。 相等,转分钟比较
MOV A,27H    ;比较分钟
CJNE A,37H,RT
MOV A,26H    ;比较秒
CJNE A,36H,RT
SETB TR1
MOV R0,#0    ;闹铃时间到,闹铃计时清零
ALRT:
RET

RT:
RET

T0INT: MOV TH0,#03CH;#9EH ;定时中断子程序。重装定时常数
MOV TL0,#0B0H  #58H
DJNZ R4,T0INTR  ;50msX20=1S,未满20次,跳出中断子程序
MOV R4,#20
INC 26H    ;1S,秒存储单元内数+1
INC R0     ;响铃时间
MOV A,26H
CJNE A,#60,T0INTR     ;未满60S,跳出中断。
MOV 26H,#0    ;满60S,秒单元清零
INC 27H    ;分+1
MOV A,27H
CJNE A,#60,T0INTR
MOV 27H,#0
INC 28H
MOV A,28H
CJNE A,#24,T0INTR
MOV 28H,#0
T0INTR:
RETI

T1INT:
MOV TH1,#0FEH
MOV TL1,#0CH
CPL P1.0
CJNE R0,#5,T1RTI   ;闹铃时间设为5秒
CLR TR1     ;关闹铃
T1RTI:
RETI

DLY:
MOV R7,#20
MOV R6,#25
DJNZ R6,$
DJNZ R7,$-4
RET


SEG7:
INC A
MOVC A,@A+PC
RET

DB      03FH  ;0          共阴
DB      006H  ;1
DB      05BH  ;2
DB      04FH  ;3
DB      066H  ;4
DB      06DH  ;5
DB      07DH  ;6
DB      007H  ;7
DB      07FH  ;8
DB      06FH  ;9

END

;12M晶振 2010 01 14 调试完成  3.15 修改  2011 03 03 注释
;2011 11 25   加上闹铃  E:\DPJ\CLOCK\CLOCK-MX\CLOCKADJCC-MX.ASM
;2011 12 03   加上整点提醒,响1S   闹铃响3 S   E:\DPJ\CLOCK\CLOCK-定时整点\CLOCKADJCC-ZDNL.ASM


STRT EQU P2.6
STP EQU P2.7
CLRR EQU P3.0
SEC EQU P3.5
MIN EQU P3.6
HOUR EQU P3.7

ORG 00H
AJMP MAIN
ORG 0BH
AJMP T0INT
ORG 1BH
AJMP T1INT
ORG 30H

MAIN:
MOV  SP,#60H
MOV R4,#20
MOV TMOD,#11H
MOV TH0,#03CH;#9EH 12M晶振时定时初值取#3CB0H,还可细调如 TL=#0B7H,可以更准  
MOV TL0,#0B0H;#58H
MOV TH1,#0FEH
MOV TL1,#0CH
SETB EA
SETB ET0
SETB ET1

kS:
ACALL DISP
ACALL ALARM

JB SEC,KM   ;秒调整按键
ACALL DISP
JNB SEC,$-2
AJMP SINC

kM:
JB MIN,KH   ;分调整按键
ACALL DISP
JNB MIN,$-2
AJMP MINC

KH:
JB HOUR,K1   ;时调整按键
ACALL DISP
JNB HOUR,$-2
AJMP HINC

SINC:
JB 7FH,SINC_A
INC 26H ;秒调整
MOV A,26H
CJNE A,#60,SINC0
MOV 26H,#0
AJMP SINC0
SINC_A:
INC 36H ;闹秒调整
MOV A,36H
CJNE A,#60,SINC0
MOV 36H,#0
SINC0: AJMP KS

MINC:
JB 7FH,MINC_A
INC 27H ;分调整
MOV A,27H
CJNE A,#60,MINC0
MOV 27H,#0
MINC_A:
INC 37H ;闹分调整
MOV A,37H
CJNE A,#60,MINC0
MOV 37H,#0
MINC0:
AJMP KM

HINC:
JB 7FH,HINC_A
INC 28H ;时调整
MOV A,28H
CJNE A,#24,HINC0
MOV 28H,#0
HINC_A:
INC 38H ;闹时调整
MOV A,38H
CJNE A,#24,HINC0
MOV 38H,#0
HINC0:
AJMP KH  
  

k1:
ACALL DISP ;开始键
JB STRT,K2
ACALL DISP
JNB STRT,$-2
AJMP START

k2:
JB STP,K3 ;暂停键
ACALL DISP
JNB STP,$-2
AJMP CL_AL
K3:
JB CLRR,KS0
ACALL DISP
JNB CLRR,CLEAR ;清零键
KS0:
AJMP KS

START:
CPL TR0       ;开始/暂停
SETB 7DH  ;7DH为开始键按下标志,此作为允许闹铃标志
AJMP K1

CL_AL:
CPL 7FH  ;7FH作时钟和闹铃标志位
AJMP K2

CLEAR:
CLR     TR0  ;清零
MOV A,#0
MOV 26H,A  
MOV 27H,A
MOV 28H,A
MOV 36H,A
MOV   37H,A
MOV 38H,A

AJMP KS

DISP:
JB 7FH,DISP_A
MOV 29H,26H  ;秒送秒显示缓存
MOV 2AH,27H
MOV 2BH,28H
AJMP DISP1
DISP_A:
MOV 29H,36H
MOV 2AH,37H
MOV 2BH,38H
DISP1:
MOV A,29H
MOV B,#10
DIV AB
MOV 20H,B   ;余数(秒个位数)
MOV 21H,A   ;商(秒十位数)
MOV A,2AH
MOV B,#10
DIV AB
MOV 22H,B   ;余数(分个位数)
MOV 23H,A   ;商(分十位数)
MOV A,2BH
MOV B,#10
DIV AB
MOV 24H,B   ;余数(时个位数)
MOV 25H,A   ;商(时十位数)
MOV A,20H   ;秒个位
ACALL SEG7
MOV P0,A
CLR P2.0
ACALL DLY
SETB P2.0
MOV A,21H   ;秒十位
ACALL SEG7
MOV P0,A
CLR P2.1
ACALL DLY
SETB P2.1
MOV A,22H   ;分个位
ACALL SEG7
MOV P0,A
SETB P0.7
CLR P2.2
ACALL DLY
SETB P2.2
MOV A,23H  ;分十位
ACALL SEG7
MOV P0,A
CLR P2.3
ACALL DLY
SETB P2.3
MOV A,24H  ;时个位
ACALL SEG7
MOV P0,A
SETB P0.7
CLR P2.4
ACALL DLY
SETB P2.4
MOV A,25H  ;时十位
ACALL SEG7
MOV P0,A
CLR P2.5
ACALL DLY
SETB P2.5
RET

ALARM:
JNB 7DH,RT  ;开始键未按下跳出
MOV A,28H  ;开机时,时分秒都 为0,跳出
JZ AL0M
AJMP ALARM1
AL0M:
MOV A,27H
JZ AL0S
AJMP ALARM1
AL0S:
MOV A,26H
JZ RT   
ALARM1:
MOV A,28H  ;比较小时
CJNE A,38H,AL  ;不等返回,相等,转分钟比较
MOV A,27H  ;比较分钟?
CJNE A,37H,AL
MOV A,26H  ;比较秒
CJNE A,36H,AL
AJMP ALARM2 ;转闹铃

AL:    ;整点提醒
MOV A,28H
JZ RT   ;小时不是00,判分是不是00
MOV A,27H
JNZ RT   ;分不是00,跳出
MOV A,26H
JNZ RT
AJMP ALARM3 ;秒不为00,跳出。为00,整点提醒
ALARM2:   ;闹铃3 S
SETB TR1  
MOV R0,#0
AJMP RT
ALARM3:   ;整点提醒1S
SETB TR1
MOV R0,#2
RT:
RET

T0INT:
MOV TH0,#03CH;定时中断子程序。重装定时常数
MOV TL0,#0B0H  
DJNZ R4,T0INTR  ;50msX20=1S,未满20次,跳出中断子程序
MOV R4,#20
INC 26H    ;1S,秒存储单元内数+1
INC R0     ;响铃时间
MOV A,26H
CJNE A,#60,T0INTR     ;未满60S,跳出中断。
MOV 26H,#0    ;满60S,秒单元清零
INC 27H    ;分+1
MOV A,27H
CJNE A,#60,T0INTR
MOV 27H,#0
INC 28H
MOV A,28H
CJNE A,#24,T0INTR
MOV 28H,#0
T0INTR:
RETI

T1INT:
MOV TH1,#0FEH
MOV TL1,#0CH
CPL P1.0
CJNE R0,#3,T1RTI   ;闹铃时间设为5秒
CLR TR1     ;关闹铃
T1RTI:
RETI

DLY:
MOV R7,#20
MOV R6,#25
DJNZ R6,$
DJNZ R7,$-4
RET


SEG7:
INC A
MOVC A,@A+PC
RET

DB      03FH  ;0          共阴
DB      006H  ;1
DB      05BH  ;2
DB      04FH  ;3
DB      066H  ;4
DB      06DH  ;5
DB      07DH  ;6
DB      007H  ;7
DB      07FH  ;8
DB      06FH  ;9

END




回复

使用道具 举报

ID:27825 发表于 2015-10-31 11:26 | 显示全部楼层
线路图在哪儿
回复

使用道具 举报

ID:72781 发表于 2016-1-16 01:00 | 显示全部楼层
这用的什么仿真软件,一直没用过仿真做,但是这个仿真软件看起来很溜啊
回复

使用道具 举报

ID:121550 发表于 2016-5-19 19:52 | 显示全部楼层
暗光 发表于 2016-1-16 01:00
这用的什么仿真软件,一直没用过仿真做,但是这个仿真软件看起来很溜啊

Professional
回复

使用道具 举报

ID:72781 发表于 2016-5-20 14:30 | 显示全部楼层

谢谢你回复,这个软件是protues,那个时候没用过,现在用过了
回复

使用道具 举报

ID:257970 发表于 2017-12-5 23:21 | 显示全部楼层
请问,这个要怎么改一下能改成倒计时器呢,再加一个报警功能
回复

使用道具 举报

ID:458568 发表于 2018-12-30 16:10 | 显示全部楼层
为什么我连完之后不亮 在线等 挺急的
回复

使用道具 举报

ID:591032 发表于 2019-7-26 21:49 来自手机 | 显示全部楼层
楼主,有原文件吗?能不能发给我,邮箱:13423799975@163.com
回复

使用道具 举报

ID:591032 发表于 2019-7-26 21:50 来自手机 | 显示全部楼层
不需要闹钟
回复

使用道具 举报

ID:782387 发表于 2020-11-3 21:34 | 显示全部楼层
代码复制到keil软件上怎么乱码了?
回复

使用道具 举报

ID:782387 发表于 2020-11-5 18:16 | 显示全部楼层
这个代码复制了以后编译不了,不能形成hex文件
回复

使用道具 举报

ID:622100 发表于 2021-5-16 13:31 | 显示全部楼层
LIUSHENGXUE 发表于 2020-11-5 18:16
这个代码复制了以后编译不了,不能形成hex文件

这是汇编语言
回复

使用道具 举报

ID:906597 发表于 2021-5-25 15:37 来自手机 | 显示全部楼层
没有C语言的代码?
回复

使用道具 举报

ID:862334 发表于 2021-6-1 13:00 | 显示全部楼层
感觉有一点复杂 看不太懂
回复

使用道具 举报

ID:278457 发表于 2021-12-16 02:55 | 显示全部楼层
刚学汇编,有点入门,谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表