2022年单片机计时秒表程序设计 .pdf
《2022年单片机计时秒表程序设计 .pdf》由会员分享,可在线阅读,更多相关《2022年单片机计时秒表程序设计 .pdf(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、pic 单片机计时秒表程序设计(时钟显示范围 00.00 99.99 秒,分辨度为 0.01 秒) 作者:来源:本站原创点击数:1676 更新时间: 2008 年 07 月 12 日/此程序实现计时秒表功能,时钟显示范围00.0099.99 秒,分辨度 :0.01 秒#include p18f458.h unsigned char s4; /定义 0.01 秒、 0.1 秒、 1 秒、 10 秒计时器unsigned char k,data,sreg; unsigned int i; const table11=0 xc0 ,0 xf9, 0 xa4,0 xb0,0 x99,0 x92, 0
2、x82,0XD8 ,0 x80,0 x90; /不带小数点的显示段码表const table010=0X40,0X79 ,0X24,0X30 ,0X19 ,0X12 ,0X02 ,0X78 ,0X00,0X10; /带小数点的显示段码表void clkint(void); /TMR0 初始化子程序void tmint() T0CON=0XCF; /设定 TMR0L 工作于 8 位定时器方式/内部时钟, TMR0 不用分频INTCON=0X20; /总中断禁止,TMR0 中断允许,清除TMR0 的中断标志INTCON2bits.TMR0IP=1; /TMR0 中断高优先级RCONbits.IPE
3、N=1; /使能中断优先级 /系统其它部分初始化子程序名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 17 页 - - - - - - - - - void initial() TRISA=0 x00; /A 口设置为输出TRISB=0XF0; /RB1 输出, RB4 输入TRISC=0 x00; /SDO 引脚为输出,SCK 引脚为输出TRISE=0 x00; /E 口设置为输出SSPCON1=0 x30; /SSPEN=1;CKP=1 ,FOSC/4 SSPSTAT
4、=0 xC0; /时钟下降沿发送数据PIR1=0; /清除 SSPIF 标志data=0X00; /待显示的寄存器赋初值PORTBbits.RB1=0; PORTAbits.RA3=0; PORTE=0; /将 K1,K2, K3 ,K4 四条列线置0 /SPI 传输数据子程序void SPILED(char data) SSPBUF=data; /启动发送do ; while(PIR1bits.SSPIF=0); PIR1bits.SSPIF=0; /显示子程序,显示4 位数void dispaly() PORTAbits.RA5=0; /准备锁存名师资料总结 - - -精品资料欢迎下载 -
5、 - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 17 页 - - - - - - - - - for(k=0;k4;k+) data=sk; if(k=2) data=table0data; /个位需要显示小数点else data=tabledata; SPILED(data); /发送显示段码 for(k=0;k4;k+) data=0 xFF; SPILED(data); /连续发送4 个 DARK ,使显示好看一些 PORTAbits.RA5=1; /最后给锁存信号,代表显示任务完成 /软件延时子程序void
6、 DELAY() for(i = 3553; -i ;) continue; /键扫描子程序void KEYSCAN() while(1) dispaly(); /调用一次显示子程序while(PORTBbits.RB4=0) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 17 页 - - - - - - - - - DELAY(); /若有键按下,则软件延时break; if (PORTBbits.RB4=0) break; /若还有键按下,则终止循环扫描,返回 /等
7、键松开子程序void keyrelax() while(1) dispaly(); /调用一次显示子程序if (PORTBbits.RB4=1) break; /为防止按键过于灵敏,每次等键松开才返回 /*高优先级中断向量*/ #pragma code InterruptVectorHigh=0 x08 void InterruptVectorHigh (void) _asm goto clkint /跳到中断程序_endasm /中断服务程序#pragma code #pragma interrupt clkint void clkint() 名师资料总结 - - -精品资料欢迎下载 - -
8、 - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 17 页 - - - - - - - - - TMR0=0X13; /对 TMR0 写入一个调整值。因为写入TMR0 后接着的/两个周期不能增量,中断需要3 个周期的响应时间,/以及 C 语言自动进行现场保护要消耗周期INTCONbits.T0IF=0; /清除中断标志sreg=sreg+1; /中断计数器加1 if(sreg=40) /中断次数为40 后,才对S0,S1,S2,S3 操作 sreg=0; s0=s0+1; if(s0=10) s0=0 ; s1=s1+1
9、; if(s1=10) s1=0 ; s2=s2+1; if(s2=10) s2=0; s3=s3+1; if(s3=10) s3=0; /主程序/http:/ 提供此单片机程序有问题请联系名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 17 页 - - - - - - - - - main() tmint(); /TMR0 初始化initial(); /spi 显示初始化及系统其它部分初始化INTCONbits.GIE=0; /总中断禁止while(1) for(k=0
10、;k4;k+) sk=0; sreg=0; /赋显示初值dispaly(); /调用一次显示子程序KEYSCAN(); /键扫描,直到开始键按下keyrelax(); /等键松开INTCONbits.GIE=1; /总中断允许KEYSCAN(); /键扫描直到停止键按下,在键扫描时有显示keyrelax(); /等键松开INTCONbits.GIE=0; /总中断禁止KEYSCAN(); /键扫描到清0 键按下,在键扫描时有显示keyrelax(); /等键松开 -汇编语言版本的pic 单片机计时秒表程序设计-;此程序实现计时秒表功能;时钟显示范围:00.00 秒-99.99 秒,分辨度:0.
11、01 秒;通过按键来启动计时、停止计时及清0 ;即第一次按下任意键开始计时,第二次按下任意键停止计时;第三次按下任意键使LED 清 0,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 17 页 - - - - - - - - - 等待下一次计时开始LIST P=18F458 INCLUDE P18F458.INC S0 EQU 0X20 ;0.01 秒计时器S1 EQU S0+1 ;0.1 秒计时器S2 EQU S0+2 ;1 秒计时器S3 EQU S0+3 ;10 秒计
12、时器SREG EQU S0+4 ;软计数器LEDF EQU S0+5 ;显示的 LED 的位置指示寄存器XW_TEMP EQU S0+6 ;用于中断中保护W 的值XHOSTS EQU S0+7 ;用于中断中保护STATUS 的值DEYH EQU S0+8 DEYL EQU S0+9 ;以上两个寄存器用于软件延时HOSTF EQU S0+0A ;用于中断中保护FSR0L 的值TEMP EQU S0+0B ;用于存放临时值ORG 0X00 GOTO MAIN ORG 0X08 GOTO CLKINT ;转向中断服务程序ORG 0X30 ;数字到段码的转换子程序(最好放在程序开头,避免超过2K 的空
13、间发生跨页读表) ;*不带小数点的共阳极码表* CONVERT ADDWF PCL,1 RETLW 0XC0 ;0,显示段码与具体的硬件连接有关RETLW 0XF9 ;1 RETLW 0XA4 ;2 RETLW 0XB0 ;3 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 17 页 - - - - - - - - - RETLW 0X99 ;4 RETLW 0X92 ;5 RETLW 0X82 ;6 RETLW 0XD8 ;7 RETLW 0X80 ;8 RETLW 0
14、X90 ;9 RETLW 0X88 ;A RETLW 0X83 ;B RETLW 0XC6 ;C RETLW 0XA1 ;D RETLW 0X86 ;E RETLW 0X8E ;F RETLW 0X7F ;. RETLW 0XBF ;- RETLW 0X89 ;H RETLW 0XFF ;DARK RETURN ;*带小数点的共阳极码表* CONVERT2 ADDWF PCL,1 RETLW 0X40 ;0 RETLW 0X79 ;1 RETLW 0X24 ;2 RETLW 0X30 ;3 RETLW 0X19 ;4 RETLW 0X12 ;5 RETLW 0X02 ;6 RETLW 0X78
15、 ;7 RETLW 0X00 ;8 RETLW 0X10 ;9 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 17 页 - - - - - - - - - RETURN ;*SPI发送显示子模块* TRANSMIT CLRF PORTA ;LACK送低电平,为锁存做准备MOVWF SSPBUF ;启动发送WAIT NOP BTFSS PIR1,SSPIF GOTO WAIT ;等待发送结束BCF PIR1,SSPIF ;清除中断标志RETURN ;*显示子程序模块* D
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年单片机计时秒表程序设计 2022 单片机 计时 秒表 程序设计
限制150内