⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 可预制的倒计时钟,p35个位,p34十位,p32确.htm

📁 包含大量程序:AD转换类
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0039)http://www.8951.com/TEST/TEST/tl013.htm -->
<HTML><HEAD><TITLE>单片机通信</TITLE><LINK 
href="可预制的倒计时钟,p35个位,p34十位,p32确.files/gpszx.css" type=text/css 
rel=stylesheet><LINK href="../index.files/gpszx.css" type=text/css 
rel=stylesheet>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2900.2523" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId></HEAD>
<BODY>
<DIV align=center>
<TABLE height=356 cellSpacing=0 cellPadding=0 width=769 bgColor=#66ccff 
borderColorLight=#000000 border=0>
  <TBODY>
  <TR>
    <TD align=middle width=752 bgColor=#ffffff colSpan=5 height=356>
      <P align=left><FONT font><FONT color=#ff0000>单片机提高</FONT><FONT 
      color=#ff0000><IMG height=11 
      src="可预制的倒计时钟,p35个位,p34十位,p32确.files/gif091.gif" width=28 
      border=0></FONT><FONT color=#454545>WWW.51C51.COM 
      自学单片机的网站:作中国单片机编程技术普及推广第一站!倚天一出宝刀屠龙</FONT></FONT><IMG height=100 
      src="可预制的倒计时钟,p35个位,p34十位,p32确.files/titou2.jpg" width=760 border=0> <FONT 
      color=#454545 font><A href="http://www.8951.com/index.htm">返回主页 给我留言</A> 
      <A href="http://www.8951.com/jiaoxue.htm">单片机教学</A> <A 
      href="http://www.8951.com/tigao.htm">单片机提高</A>&nbsp; <A 
      href="http://www.8951.com/pinzhi.htm">品质技术</A> <A 
      href="http://www.8951.com/1000/WANGZHI.HTM">单片机网址</A> <A 
      href="http://www.8951.com/down/down.htm">软件下载</A>&nbsp; <A 
      href="http://www.8951.com/yejin/yejin.htm">学液晶显示</A> <A 
      href="http://www.8951.com/chanpin.htm">产品介绍</A> <A 
      href="http://www.8951.com/10/huikan.htm">如何购买</A></FONT><FONT size=2> 
      <BR></FONT><BR>;可预制的倒计时钟,p35个位,p34十位,p32确定<BR><FONT 
      size=2>;***************************************************************************<BR>;*&nbsp; 
      E-mail:sxj1974@163.com (51c51 test web)&nbsp; 51单片机学习网,自学单片机的网站&nbsp; 
      *<BR>;* Create by :石学军 <A 
      href="http://www.51c51.com/">http://www.51c51.com/</A>&nbsp;&nbsp; 
      www.8951.com 更多例程请登陆网站&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      *<BR>;***************************************************************************</FONT><BR>keyok 
      bit 00h ;是否有键按下的标志<BR>startrun bit 01h ;是否开始运行<BR>value equ 21h 
      ;秒计时值<BR>setval equ 22h ;设置的数值<BR>counter equ 23h ;用于显示的计数器<BR>count equ 
      24h ;秒计数器<BR>keyval equ 25h ;按键寄存器<BR>dispbuf equ 5eh ;显示缓冲区<BR>first bit 
      p2.5 ;第一个数码管控制<BR>second bit p2.6 ;第二个数码管控制<BR>tmrvar equ 60110 
      ;定时器的初值65536-5000<BR>hidden equ 0ffh ;显示器的消隐<BR>org 0000h<BR>jmp 
      start<BR>org 1*8+3 ;time0中断入口<BR>jmp int_t0 
      ;到定时器t0中断服务程序的入口<BR>start:<BR>mov sp,#5fh ; 设置堆栈<BR>mov p1,#0ffh ; 
      所有led熄灭<BR>mov setval,#59 ;初值59<BR>mov value,setval ;开始不运行,按键后运行<BR>clr 
      startrun<BR>clr keyok ;清除有键按下的标志<BR>mov tmod,#01h<BR>mov th0,#HIGH(TMRVAR) 
      ;取tirvar的高8位<BR>MOV TL0,#LOW(TMRVAR) ; 取tirvar的低8位<BR>SETB ET0 ; 
      开t0中断<BR>SETB TR0 ;定时器开始运行<BR>; CLR SEC<BR>SETB EA ; 开总中断<BR>LOOP:CALL KEY 
      ;调用键盘程序<BR>JB KEYOK,KEYPROC;如果有键盘按下则转键盘处理<BR>NEXT:MOV A,VALUE 
      ;获得秒的数值<BR>MOV B,#10<BR>DIV AB ;二进制转10进制10位个位分别送显示缓冲<BR>NEXT1:MOV 
      DISPBUF,A ;<BR>MOV DISPBUF+1,B ;个位送显示缓冲<BR>JMP LOOP<BR>KEYPROC:MOV 
      A,KEYVAL ;取得键值<BR>JZ KEYRUN ;如果为0转keyrun<BR>DEC A<BR>JZ KEYSTOP ;如果键值1 
      转stop<BR>DEC A<BR><BR>JZ KEYLEFT ;如果键值2转left<BR>JMP KEYRIGHT 
      ;如果为3转right<BR>KEYRUN:&nbsp;<BR>SETB STARTRUN ;将开始运行的标志送1<BR>JMP 
      LOOP<BR>KEYSTOP:<BR>CLR STARTRUN ;开始运行位送0<BR>JMP LOOP<BR>KEYLEFT: 
      ;键盘处理,10位加1并在0-5循环<BR>CLR STARTRUN ;先停止秒<BR>MOV A,SETVAL ;取设置位<BR>ADD 
      A,#10 ;加10<BR>CJNE A,#60,LEFT0 ;到60了么?<BR>MOV A,#0 ;是则清零<BR>JMP LEFT2 
      ;转left2<BR>LEFT0:JNC LEFT1 ;比60大么, 是则转left1<BR>JMP LEFT2 ; 
      转left2<BR>LEFT1:SUBB A,#60 ;减60<BR>LEFT2:MOV SETVAL,A 
      ;处理后的a送回setval<BR>MOV VALUE,SETVAL ; 送显示<BR>JMP LOOP<BR>KEYRIGHT: ; 
      键盘处理,10位加1并在0-5循环<BR>CLR STARTRUN ;先停止秒<BR>INC DISPBUF+1 ;显示器的低位加1<BR>MOV 
      A,DISPBUF+1 ; 送到a<BR>CJNE A,#10,REFT0 ;与10比较不等于则转移<BR>MOV DISPBUF+1,#0 ; 
      等于10则送0<BR>REFT0:MOV A,DISPBUF ; 取出显示缓冲的高位<BR>MOV B,#10<BR>MUL AB 
      ;乘10<BR>ADD A,DISPBUF+1 ;加低位<BR>MOV SETVAL,A ;送到setval暂存<BR>MOV 
      VALUE,SETVAL ;送显示<BR>JMP LOOP<BR>KEY: ORL P3,#00111100B ;键盘口先送1<BR>CLR 
      KEYOK ;清key标志<BR>MOV A,P3 ;取p3的值<BR>ORL A,#11000011B ;把无关的4位置位<BR>CPL A 
      ;取反a<BR>JZ KEY_RET ;没有按则所有位都是1 取反则为0<BR>CALL DELAY<BR><BR>MOV A,P3 
      ;再读p3的值<BR>ORL A,#11000011B<BR>CPL A<BR>JZ KEY_RET<BR>SETB KEYOK 
      ;确实有按下<BR>JNB ACC.2,KEY_1 ;s1没有按转key1<BR>MOV KEYVAL,#0 ;如按下则值为0<BR>JMP 
      KEY_RET<BR>KEY_1:JNB ACC.3,KEY_2 ;s1没有按转key2<BR>MOV KEYVAL,#1 
      ;如按下则值为1<BR>JMP KEY_RET<BR>KEY_2:JNB ACC.4,KEY_3<BR>MOV KEYVAL,#2<BR>JMP 
      KEY_RET<BR>KEY_3:MOV KEYVAL,#3<BR>KEY_RET:<BR>MOV A,P3<BR>ORL 
      A,#11000011B<BR>CPL A<BR>JNZ KEY_RET ;等按键释放<BR>RET<BR>DELAY: mov r5,#2 
      ;延时20MS<BR>d1:mov r6,#2<BR><BR>D2:djnz r6,d2<BR>djnz 
      r5,d1<BR>ret<BR><BR>INT_T0: ;定时器t0的中断响应<BR>PUSH ACC<BR>PUSH PSW 
      ;压堆栈<BR>MOV TH0,#HIGH(TMRVAR)<BR>MOV TL0,#LOW(TMRVAR)<BR>INC COUNT 
      ;软件计数器加1<BR>MOV A,COUNT ;<BR>CJNE A,#200,INT_N2<BR>MOV COUNT,#0 
      ;到了200清除<BR>INT_N1:JNB STARTRUN,INT_N2 ; 停止运转,转<BR>DEC VALUE ;计数器减1<BR>MOV 
      A,VALUE<BR>JNZ INT_N2 ; 不为0则转<BR>MOV VALUE,SETVAL ; 
      否则再置初值<BR>INT_N2:<BR>SETB FIRST<BR>SETB SECOND ;关显示<BR>MOV A,#DISPBUF ; 
      显示缓冲的首地址<BR>ADD A,COUNTER<BR>MOV R0,A<BR>MOV A,@R0 ;根据计数器的值取相应缓冲的值<BR>MOV 
      DPTR ,#DISPTAB ;字型表的首地址<BR>MOVC A,@A+DPTR<BR>MOV P0,A ; 送显示<BR>MOV 
      A,COUNTER ;取计数器的值<BR>JZ DISPFIRST ; 如果为0则显示第一位<BR>CLR SECOND ; 
      否则显示第二位<BR>AJMP DISPNEXT<BR>DISPFIRST:<BR>CLR FIRST 
      ;显示第一位<BR>DISPNEXT:<BR>INC COUNTER ;计数器加1<BR>MOV A,COUNTER<BR>DEC A<BR>DEC 
      A ;如果为2则回0<BR>JZ RSTCOUNT<BR>AJMP DISPEXIT<BR>RSTCOUNT:<BR>MOV COUNTER,#0 
      ;计数器的值只能为0或者1<BR>DISPEXIT:<BR>POP PSW<BR>POP ACC<BR>RETI<BR>DISPTAB:DB 
      28H,7EH,0A2H,62H,74H,61H,21H,7AH,20H,60H<BR><BR>END<BR><BR><BR><BR></P></TD></TR></TBODY></TABLE></DIV></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -