;在P0.0有一拨动开关;
;当开关置高电平时,接P1端口有一数码管开始计时;
;当按钮置低电平是数码管显示0。
;----------------------------
;分析:
;本题目可算是个1位数的秒表,只是把暂停和清零功能合并了。
;这种秒表,实际应用起来,好像并不方便。
;秒表走时的时候,并不便于观察数值,一旦停止,却又立刻就清零。
;没有办法,题目就是这样要求的,写程序吧。
;仿真截图如下:
;图片链接:http://xiangce.baidu.com/picture/detail/a25c9c6836dbfcba9db242c000dfde5ded193192
;程序如下:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV TMOD, #01H ;T0定时方式1
MOV TH0, #3CH ;50ms@12MHz
MOV TL0, #0B0H
SETB TR0
;
MOV R7, #20 ;50ms中断次数.
MOV R6, #0 ;秒数置零.
DISP:
MOV DPTR, #DUAN_TAB ;段码表地址.
MOV A, R6
MOVC A, @A+DPTR ;查表.
MOV P1, A ;送到P1去显示.
M_LOOP:
JNB TF0, $ ;50ms?
CLR TF0
MOV TL0, #0B0H ;重写初始值.
MOV TH0, #3CH ;50ms@12MHz
DJNZ R7, M_LOOP ;不到20次继续等待.
MOV R7, #20
INC R6 ;秒加一.
CJNE R6, #10, DET_P00 ;不到10,就去查P0.0
MOV R6, #0 ;秒数置零.
DET_P00:
JNB P0.0, DISP ;P0.0开关置高电平时,数码管计时.
AJMP MAIN ;否则重新开始.
DUAN_TAB:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB 80H,90H,88H,83H,86H,0A1H,86H,8EH
END
;=============================================
;本题目来自百度知道,提问者选择了一个错误的“最佳答案”。
;大家可以按照下面的链接,运行一下错误的程序,看看会出什么结果。
;原题网址:http://zhidao.baidu.com/question/268267264.html
;=============================================