四位秒表LED显示,求高人指教 精简程序的方**

[复制链接]
 楼主| dream2010 发表于 2008-10-24 11:57 | 显示全部楼层 |阅读模式
#include”pic.h”<br />#include”pic1687x.h”<br />#include”math.h”<br /><br />Unsigned&nbsp;char&nbsp;s0,s1,s2,s3;<br />Unsigned&nbsp;char&nbsp;s[4];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />Unsigned&nbsp;char&nbsp;data;<br />Unsigned&nbsp;char&nbsp;sreg;&nbsp;&nbsp;//定义一个变量&nbsp;&nbsp;sreg&nbsp;,中断次数变量。<br /><br />Void&nbsp;FZinitial()<br />{<br />S0=s1=s2=s3=0;<br />S[0]=s0;<br />S[1]=s1;<br />S[2]=s2;<br />S[3]=s3;&nbsp;<br /><br />Sreg=0;<br />}<br /><br />Void&nbsp;T0initial()<br />{<br />INTCON=0XFF;<br />T0CS=1;<br />T0SE=1;<br />T0IF=0;<br />T0IE=1;&nbsp;&nbsp;&nbsp;&nbsp;//没有发生中断标志,初始化时候允许发生定时器0的中断操作。<br />PSA=1;<br />}<br /><br />Void&nbsp;SPIinitial()<br />{<br />PIR=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//必须将涉及到的相关寄存器都初始化一便。&nbsp;&nbsp;外围中断标志&nbsp;寄存器。<br />SSPCON=0X30;<br />SSPCON=0XC0;<br /><br />TRISA5=0;<br />TRISC3=0;<br />TRISC5=0;<br />}<br /><br />Void&nbsp;interrupt&nbsp;&nbsp;DEAL(void)<br />{<br />TMR0=0X13;<br />T0IF=0;<br />CLRWDT();<br />Sreg=sreg+1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//定时器T0中断次数递增,到40次才发生一次数据处理过程。<br /><br />If(sreg==40)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;Sreg=0;<br />&nbsp;&nbsp;&nbsp;S0=s0+1;<br />&nbsp;&nbsp;&nbsp;If(s0==10)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S1=s1+1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S0=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If(s1==10)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S2=s2+1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S1=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If(s2==10)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S3=s3+1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S2=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If(s3==10)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S3=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;}//&nbsp;If(sreg==40)<br />&nbsp;&nbsp;&nbsp;&nbsp;s[0]=s0;<br />&nbsp;&nbsp;&nbsp;&nbsp;s[1]=s1;<br />&nbsp;&nbsp;&nbsp;&nbsp;s[2]=s2;<br />&nbsp;&nbsp;&nbsp;&nbsp;s[3]=s3;<br /><br />}&nbsp;Void&nbsp;interrupt&nbsp;&nbsp;DEAL(void)<br /><br />void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KEYSCAN()<br />{<br />while(1){&nbsp;&nbsp;&nbsp;&nbsp;<br />while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dispaly();&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((RB5==0)||(RB4==0))&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DELAY();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((RB5==0)||(RB4==0))&nbsp;&nbsp;&nbsp;&nbsp;break;//若还有键按下,则终止循环扫描,返回<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyrelax()<br />{<br />while(1){<br />&nbsp;&nbsp;&nbsp;&nbsp;dispaly();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((RB5==1)&&(RB4==1))&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//为防止按键过于灵敏,每次等键松开才返回<br />}<br /><br />Void&nbsp;main()<br />{<br />&nbsp;&nbsp;SYSinitial();<br />&nbsp;&nbsp;T0initial();<br />&nbsp;&nbsp;SPIinitial();<br />&nbsp;&nbsp;GIE=1;<br />&nbsp;&nbsp;PEIE=1;<br />While(1)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;FZinitial();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KEYSCAN();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyrelax();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GIE=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//开始键1<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KEYSCAN();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyrelax();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GIE=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//停止键0<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KEYSCAN();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyrelax();<br />&nbsp;&nbsp;}<br /><br />}&nbsp;<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

26

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部