单片机计时秒表程序设计

单片机计时秒表程序设计

ID:853604

大小:59.51 KB

页数:17页

时间:2017-09-20

单片机计时秒表程序设计_第1页
单片机计时秒表程序设计_第2页
单片机计时秒表程序设计_第3页
单片机计时秒表程序设计_第4页
单片机计时秒表程序设计_第5页
资源描述:

《单片机计时秒表程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、pic单片机计时秒表程序设计(时钟显示范围00.00~99.99秒,分辨度为0.01秒)作者:    来源:本站原创    点击数:1676   更新时间:2008年07月12日    //此程序实现计时秒表功能,时钟显示范围00.00~99.99秒,分辨度:0.01秒#include"p18f458.h"unsignedchars[4];//定义0.01秒、0.1秒、1秒、10秒计时器unsignedchark,data,sreg;unsignedinti;consttable[11]={0xc0,0xf9,0xa4,0xb0,0x99,0

2、x92,0x82,0XD8,0x80,0x90};//不带小数点的显示段码表consttable0[10]={0X40,0X79,0X24,0X30,0X19,0X12,0X02,0X78,0X00,0X10};//带小数点的显示段码表voidclkint(void);//TMR0初始化子程序voidtmint(){T0CON=0XCF;//设定TMR0L工作于8位定时器方式//内部时钟,TMR0不用分频INTCON=0X20;//总中断禁止,TMR0中断允许,清除TMR0的中断标志INTCON2bits.TMR0IP=1;//TMR0中断高

3、优先级RCONbits.IPEN=1;//使能中断优先级}//系统其它部分初始化子程序voidinitial(){TRISA=0x00;//A口设置为输出TRISB=0XF0;//RB1输出,RB4输入TRISC=0x00;//SDO引脚为输出,SCK引脚为输出TRISE=0x00;//E口设置为输出SSPCON1=0x30;//SSPEN=1;CKP=1,FOSC/4SSPSTAT=0xC0;//时钟下降沿发送数据PIR1=0;//清除SSPIF标志data=0X00;//待显示的寄存器赋初值PORTBbits.RB1=0;PORTAbit

4、s.RA3=0;PORTE=0;//将K1,K2,K3,K4四条列线置0}//SPI传输数据子程序voidSPILED(chardata){SSPBUF=data;//启动发送do{;}while(PIR1bits.SSPIF==0);PIR1bits.SSPIF=0;}//显示子程序,显示4位数voiddispaly(){PORTAbits.RA5=0;//准备锁存for(k=0;k<4;k++){data=s[k];if(k==2)data=table0[data];//个位需要显示小数点elsedata=table[data];SPIL

5、ED(data);//发送显示段码}for(k=0;k<4;k++){data=0xFF;SPILED(data);//连续发送4个DARK,使显示好看一些}PORTAbits.RA5=1;//最后给锁存信号,代表显示任务完成}//软件延时子程序voidDELAY(){for(i=3553;--i;)continue;}//键扫描子程序voidKEYSCAN(){while(1){dispaly();//调用一次显示子程序while(PORTBbits.RB4==0){DELAY();//若有键按下,则软件延时break;}if(PORTBb

6、its.RB4==0)break;//若还有键按下,则终止循环扫描,返回}}//等键松开子程序voidkeyrelax(){while(1){dispaly();//调用一次显示子程序if(PORTBbits.RB4==1)break;//为防止按键过于灵敏,每次等键松开才返回}}/*高优先级中断向量*/#pragmacodeInterruptVectorHigh=0x08voidInterruptVectorHigh(void){_asmgotoclkint//跳到中断程序_endasm}//中断服务程序#pragmacode#pragma

7、interruptclkintvoidclkint(){TMR0=0X13;//对TMR0写入一个调整值。因为写入TMR0后接着的//两个周期不能增量,中断需要3个周期的响应时间,//以及C语言自动进行现场保护要消耗周期INTCONbits.T0IF=0;//清除中断标志sreg=sreg+1;//中断计数器加1if(sreg==40)//中断次数为40后,才对S0,S1,S2,S3操作{sreg=0;s[0]=s[0]+1;if(s[0]==10){s[0]=0;s[1]=s[1]+1;if(s[1]==10){s[1]=0;s[2]=s[

8、2]+1;if(s[2]==10){s[2]=0;s[3]=s[3]+1;if(s[3]==10)s[3]=0;}}}}}//主程序//http://www.51h

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。