用单片机制作倒计时秒表的发现

来源:百度知道 编辑:UC知道 时间:2024/08/23 18:39:42
用protues和keil联调时,合上开关1,数码管某些段不停地闪烁,但不能正确显示数字。望高手指教!
程序、原理图如下:
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP NT0 ;外中断0
ORG 000BH
AJMP TCT0 ;定时器0
ORG 0030H
;**************************************************
MAIN: MOV SP,#60H
CLR 00H ;工作状态标志位,0为设置,1为工作
CLR 01H ;指示灯状态标志位,0为LED不亮,1为亮
CLR 02H ;控制信号标志位,0为P3.6底,1为P3.6高
MOV 22H,#00H ;100ms计数器清0
MOV 23H,#00H ;秒计数器清0
MOV 25,#10 ;分计数器预置100min
MOV TH0,#3CH ;100ms预置初值
MOV TL0,#0B0H
SETB EA
SETB ET0 ;T0中断允许
SETB EX0 ;外中断0允许
SETB IT0 ;T0优先中断
CLR TR0
MOV

protuse这个软件有很多问题,有时很难找到一个合适的延时值让数码管实现动态显示,延时长了它会一个一个的亮,稍短一点又会显示乱码,这点我很无语的,以前老师说要做实物之前一定要通过仿真没问题再做,我不管这些了,仿真太多实际问题仿不出来,还不如直接找机块面包板插一下就好了。

显示子程序中,有些语句逻辑不顺畅,改了一些,如下:

;显示倒计时器:
;入口:30H单元BCD码十位数
; 31H单元BCD码个位数
DIS:
MOV DPTR,#TAB
MOV A, 30H
MOVC A, @A+DPTR
CLR P3.0
CLR P3.1
MOV P1, A ;显示十位
SETB P3.0
ACALL DELAY10
MOV A, 31H
MOVC A, @A+DPTR
CLR P3.0
MOV P1, A ;显示个位
SETB P3.1
ACALL DELAY10
CLR P3.0
CLR P3.1
RET

你的程序没问题,

我也遇到你这样的情况,同样的程序在protues显示不正常,下载到我的实验板就正常,,我觉的是protues的BUG