用单片机设计15s倒计时器
/*
跳线设置:默认跳线位置,注意蜂鸣器选择跳线J5要选23端
程序效果:利用单片机的定时/计数器设计一个15到0倒计时器,
按S4后启动,要求精确显示到百分之一秒。
发挥部分:
1、定时结束后有提示音报警,并可重新定时
2、定时过程中按独立键盘s5可暂停,按S4继续
运行环境:51hei单片机学习板
*/
ORG 0000H
LJMP START //主程序必须避开地址000BH
ORG 000BH //定时器0的中段服务程序,起始地址为000BH
LJMP IT00
ORG 0030H
START: MOV TH0,#0EBH //装入初始值,定时时间为10ms
MOV TL0,#64H
MOV TMOD,#01H //工作方式1
MOV 33H,#01 //显示初值为15s
MOV 32H,#05
MOV 31H,#00
MOV 30H,#00
SETB ET0 //打开定时0
SETB EA //开总中断
LOOP1: JB P3.6,LOOP //判断高低位,即按键KEY0是否按 下
LCALL DISPLAY //为低,即按键按下,延时消抖
LCALL DISPLAY
JB P3.6,LOOP //按键真的按下,并不是外界的干扰
SETB TR0 //启动定时器
HERE: LCALL DISPLAY //调用显示
JB P3.7,LOOP3 //判断高低,即KEY1按键是否按下
CLR TR0 //按下,关闭定时器,这里并没有消抖
LJMP LOOP1 //等待KEY0的按下
LOOP3: SJMP HERE //KEY1没有按下,就需显示
LOOP: LCALL DISPLAY //KEY1没有按下,就需显示
LJMP LOOP1
//减10ms子程序
SUB1: DEC 30H //百分位减1
MOV A,30H
CJNE A,#0FFH,LOOP2 //判断百分位减到0之后是否 再减1
MOV 30H,#09 //是,装入初值9
DEC 31H //十分位减1
MOV A,31H
CJNE A,#0FFH,LOOP2 //判断百分位减到0之后是否 再减1
MOV 31H,#09
DEC 32H
MOV A,32H
CJNE A,#0FFH,LOOP2
MOV 32H,#09
DEC 33H
MOV A,33H
CJNE A,#0FFH,LOOP2
clr P2.2 //从15s减到0s后,驱动蜂鸣器
LCALL DELAY //延时
LCALL DELAY
SETB P2.2 //关闭蜂鸣器
MOV 33H,#01 //装入初值15s
MOV 32H,#05
MOV 31H,#00
MOV 30H,#00
LOOP2: NOP //空指令
RET //返回
//显示子程序
DISPLAY: MOV DPTR,#TAB //赋表首地址
MOV A,#0FBH
SETB P2.7
MOV P0,A //亮最左边的数码管
CLR P2.7
XCH A,R0 //暂存A的值
MOV A,33H
MOVC A,@A+DPTR //根据表值查找所需的值
SETB P2.6
MOV P0,A //显示值
CLR P2.6
LCALL DELAY //延时
XCH A,R0 //恢复原值
RL A //循环左移,为下次做准备
SETB P2.7
MOV P0,A
CLR P2.7
XCH A,R0
MOV A,32H
MOVC A,@A+DPTR
SETB P2.6
MOV P0,A
CLR P2.6
LCALL DELAY
XCH A,R0
RL A
SETB P2.7
MOV P0,A
clr P2.7
XCH A,R0
MOV A,31H
MOVC A,@A+DPTR
SETB P2.6
MOV P0,A
clr P2.6
LCALL DELAY
XCH A,R0
RL A
SETB P2.7
MOV P0,A
clr P2.7
XCH A,R0
MOV A,30H
MOVC A,@A+DPTR
SETB P2.6
MOV P0,A
clr P2.6
LCALL DELAY
RET
TAB: DB 3FH,06H,5BH,4FH,66H ;数码管显示的数值
DB 6DH,7DH,07H,7FH,6FH
IT00: MOV TH0,#0EBH //装入初值,时间为10ms
MOV TL0,#64H
LCALL SUB1 //减10ms
RETI //返回
DELAY: MOV R7,#04 //延时子程序,时间大约为:2us*4*250
DEL2: MOV R6,#250
DEL1: DJNZ R6,DEL1
DJNZ R7,DEL2
RET
END //结束
- FPGA的DSP性能揭秘(06-16)
- 基于单片机通用引脚的软件UART设计(10-16)
- 分时操作系统思想在单片机中的具体应用 (10-30)
- 基于AT89C51+DSP的双CPU伺服运动控制器的研究(05-26)
- 关于RTX51 TINY的分析与探讨(05-30)
- 基于MC9S12DGl28单片机的智能寻迹车设计(04-03)