秒表的数码管小数点的显示C语言,汇编语言实现的秒表 为什么数码管不能正常显示...

该程序实现了一个基于51单片机的实时计时系统,使用了外部中断INT0和INT1以及定时器T0进行时间的精确计数。系统能够分别显示1ms、10ms、100ms和1s的时间,并通过外部中断处理中断事件,更新显示。同时,程序还包含了按键扫描功能,用于复位和查看不同时间单位的显示。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

实验程序:

ORG 0000H

LJMP MAIN

ORG 0003H ;外部中断INT0中断入口

LJMP TINGZHI

ORG 000BH ;定时器T0中断入口

LJMP UPDATE

ORG 0013H ; 外部中断INT1中断入口

LJMP KAISHI

MAIN: MOV DPTR, #TAB ; ;存入表头地址

MOV TMOD, #00H ; ;置T0为方式0

MOV TH0, #0E0H ;;赋定时器初值

MOV TL0, #18H

MOV 79H, #00H ;;显示缓存区清零

MOV 7AH, #00H

MOV 7BH, #00H

MOV 7CH, #00H

MOV 7DH, #00H

MOV R0, #00H ;;溢出计数区清零

MOV R1, #00H

MOV R2, #00H

MOV R3, #00H

MOV R4, #00H

SETB EA ;;CPU开中断

SETB EX0 ;;开外部中断0

SETB EX1 ;;开外部中断1

SETB IT0 ; ;外部中断0位边沿触发方式

SETB IT1 ; ;外部中断1位边沿触发方式

SETB ET0 ;;定时器0允许位

XIAN: MOV A, 79H ; ;显示1ms位数字

MOVC A, @A+DPTR

MOV P0, A

SETB P2.0

LCALL DELAY

CLR P2.0

MOV A, 7AH ;;显示10ms位数字

MOVC A, @A+DPTR

MOV P0, A

SETB P2.1

LCALL DELAY

CLR P2.1

MOV A, 7BH ;;显示100ms位数字

MOVC A, @A+DPTR

MOV P0, A

SETB P2.2

LCALL DELAY

CLR P2.2

MOV A, 7CH ;;显示1s位数字

MOVC A, @A+DPTR

MOV P0, A

SETB P2.3

LCALL DELAY

CLR P2.3

MOV A, 7DH ; ;显示10s位数字

MOVC A, @A+DPTR

MOV P0, A

SETB P2.4

LCALL DELAY

CLR P2.4

MOV P0, #80H ;;显示小数点

SETB P2.3

LCALL DELAY

CLR P2.3

JNB P1.1, AA ;;扫描复位键是否按下

JNB P2.5, LAST ;;扫描查看键是否按下

LJMP XIAN ; ;返回显示程序,重新进行显示

AA: LJMP MAIN

LAST: JB P2.5, XIAN ;;扫描查看键是否抬起

MOV A, 59H ; ;调用最终缓存区数据进行显示

MOVC A,@A+DPTR

MOV P0,A

SETB P2.0

LCALL DELAY

CLR P2.0

MOV A, 5AH ;;显示10ms位数字

MOVC A, @A+DPTR

MOV P0, A

SETB P2.1

LCALL DELAY

CLR P2.1

MOV A, 5BH ;;显示100ms位数字

MOVC A, @A+DPTR

MOV P0, A

SETB P2.2

LCALL DELAY

CLR P2.2

MOV A, 5CH ;;显示1s位数字

MOVC A, @A+DPTR

MOV P0, A

SETB P2.3

LCALL DELAY

CLR P2.3

MOV A, 5DH ;;显示10s位数字

MOVC A, @A+DPTR

MOV P0, A

SETB P2.4

LCALL DELAY

CLR P2.4

MOV P0, #80H ; ;显示小数点

SETB P2.3

LCALL DELAY

CLR P2.3

LJMP LAST

KAISHI: MOV 59H, 69H ;;将中间缓存区的数据存入最终缓存区

MOV 5AH, 6AH

MOV 5BH, 6BH

MOV 5CH, 6CH

MOV 5DH, 6DH

SETB TR0 ;启动定时器T0

RETI

TINGZHI: CLR TR0 ;;停止定时器T0

MOV 69H, 79H ;;将显示缓存区的数据存入中间缓存区

MOV 6AH, 7AH

MOV 6BH, 7BH

MOV 6CH, 7CH

MOV 6DH, 7DH

RETI

UPDATE: MOV TH0, #0E0H ;;重赋定时器初值

MOV TL0, #18H

MOV A, 79H

ADD A, #01H ;;1ms位加一

MOV 79H, A

MOV A, R0

ADD A, #01H

MOV R0, A

CJNE R0, #0AH, EXIT ;;判断1ms位是否满10

MOV 79H, #00H ;;对1ms位清零

MOV R0, #00H

MOV A, 7AH

ADD A, #01H ; ;10ms位加一

MOV 7AH, A

MOV A, R1

ADD A, #01H

MOV R1, A

CJNE R1, #0AH, EXIT ;;判断10ms位是否满10

MOV 7AH, #00H ;;对10ms位清零

MOV R1, #00H

MOV A, 7BH

ADD A, #01H ; ;100ms位加一

MOV 7BH, A

MOV A, R2

ADD A, #01H

MOV R2, A

CJNE R2, #0AH, EXIT ; ;判断100ms位是否满10

MOV 7BH, #00H ; ;对100ms位清零

MOV R2, #00H

MOV A, 7CH

ADD A, #01H ;;1s位加一

MOV 7CH, A

MOV A, R3

ADD A, #01H

MOV R3, A

CJNE R3, #0AH, EXIT ;;判断1s位是否满10

MOV 7CH, #00H ; ;对1s位清零

MOV R3, #00H

MOV A, 7DH

ADD A, #01H ;;10s位加一

MOV 7DH, A

MOV A, R4

ADD A, #01H

MOV R4, A

CJNE R4, #0AH, EXIT ;;判断10s位是否满10

MOV 7DH, #00H ;;对10s位清零

EXIT:RETI

DELAY :MOV R7, #5 ;;延时程序

DEL1: MOV R6, #7

DEL2: DJNZ R6, DEL2

DJNZ R7, DEL1

RET

TAB: DB 3FH,06H,5BH,4FH, 66H

DB 6DH, 7DH, 07H, 7FH, 6FH

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值