;用LED数码显示器显示计时的时间,显示两位即可,最大显示时间为99s;
;K1按下时,计时开始,指示灯1亮,再按一下停止计时,指示灯2亮;
;K2按下去,时间显示清0,指示灯3亮;
;延时一段时间后3个指示灯熄灭。
;两位共阳数码管
;P0接段码、P2位码
电路如下:
图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/74d5c34f251f95cadaed7f03c9177f3e66095248.html
程序用汇编语言编写,如下所示:
sbit K1 = P3.2
sbit K2 = P3.3
sbit LED1 = P3.5
sbit LED2 = P3.6
sbit LED3 = P3.7
ORG 0000H
SJMP START
ORG 000BH
SJMP INT_T0
START:
MOV TMOD, #0x01 ;使用T0定时50ms
MOV TH0, #0x3C ;(65536-50000)/256;
MOV TL0, #0xB0 ;(65536-50000)%256;
SETB ET0 ;开启定时中断
SETB EA
MOV R2, #0 ;秒数
MOV R3, #0
MOV R4, #20 ;中断次数, 20即为1s
M_LOOP:
CALL DISP ;显示
JNB K1, K11 ;K1按下转移
JNB K2, K21 ;K2按下转移
SJMP M_LOOP
;------------------------------------
;K1按下时,计时开始,指示灯1亮,再按一下停止计时,指示灯2亮;
K11:CALL DISP ;K1按下了
CALL DISP ;显示当做延时
JB K1, M_LOOP ;松开了, 是抖动
K12:
CALL DISP ;显示
JNB K1, K12 ;等待释放
;------------------------
JB TR0, K13
SETB TR0 ;开启定时器
CLR LED1 ;指示灯1亮
SETB LED2 ;指示灯2灭
SJMP LOOP1 ;完成本次操作
;------------------------
K13:CLR TR0 ;关闭定时器
SETB LED1 ;指示灯1灭
CLR LED2 ;指示灯2亮
SJMP LOOP1 ;完成本次操作
;------------------------------------
;K2按下去时间清0,指示灯3亮
K21:CALL DISP ;显示当做延时
JB K2, M_LOOP ;松开了, 是抖动
K22:CALL DISP ;显示
JNB K2, K22 ;等待释放
;------------------------
CLR LED3 ;指示灯3亮
MOV R2, #0
MOV R3, #0 ;时间清零
;------------------------------------
LOOP1: ;延时一段时间后3个指示灯熄灭。
MOV R5, #0
W_T:CALL DISP ;反复循环,即延时一段时间
CALL DISP
CALL DISP
CALL DISP
DJNZ R5, W_T
MOV P3, #255 ;指示灯全灭
LJMP M_LOOP ;转去等待按键
;-------------------------
INT_T0:
MOV TH0, #0x3C ;(65536-50000)/256;
MOV TL0, #0xB7 ;(65536-50000)%256;
DJNZ R4, E_T0
MOV R4, #20
INC R3 ;个位
CJNE R3, #10, E_T0
MOV R3, #0
INC R2 ;十位
CJNE R2, #10, E_T0
MOV R2, #0
E_T0:
RETI
;-------------------------
DL2MS:
MOV R6, #2
D1: MOV R7, #250
D2: DJNZ R7, D2
DJNZ R6, D1
RET
;-------------------------
DISP:
MOV DPTR, #TAB
MOV A, R2 ;取来十位数
MOVC A, @A + DPTR
MOV P0, A ;在P0口输出段码
MOV P2, #2 ;在P2口输出位码
CALL DL2MS ;发光2ms
MOV P2, #0
MOV A, R3
MOVC A, @A + DPTR
MOV P0, A
MOV P2, #1
CALL DL2MS
MOV P2, #0
RET
;-------------------------
TAB:
DB 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0xFF
;-------------------------
END
本程序、电路都是正确的,可以满足题目的要求,可以提问者看到了答案,却关闭了题目。
原题网址:http://zhidao.baidu.com/question/129444921.html