- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用单片机做的倒计时15s
用单片机设计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
文档评论(0)