2022年单片机计时秒表程序方案设计书.docx
《2022年单片机计时秒表程序方案设计书.docx》由会员分享,可在线阅读,更多相关《2022年单片机计时秒表程序方案设计书.docx(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品学习资源pic 单片机计时秒表程序设计时钟显示范畴 00.00 99.99 秒,辨论度为0.01 秒作者:来源:本站原创点击数:1676更新时间: 2021 年 07 月 12 日/ 此程序实现计时秒表功能,时钟显示范畴00.00 99.99 秒,辨论度 :0.01 秒#include p18f458.hunsigned char s4 ; /定义 0.01 秒、 0.1 秒、 1 秒、 10 秒计时器unsigned char k, data, sreg;unsigned int i ;const table11=0xc0 , 0xf9 , 0xa4, 0xb0 , 0x99 , 0x9
2、2, 0x82, 0XD8 , 0x80 ,0x90 ;/不带小数点的显示段码表const table010=0X40 , 0X79 , 0X24 , 0X30 , 0X19 , 0X12 , 0X02 ,0X78 , 0X00 , 0X10 ;/带小数点的显示段码表void clkintvoid;/TMR0 初始化子程序void tmintT0CON=0XCF ; / 设定 TMR0L 工作于 8 位定时器方式/内部时钟, TMR0 不用分频INTCON=0X20 ; /总中断禁止, TMR0 中断答应,清除 TMR0 的中断标志INTCON2bits.TMR0IP=1; /TMR0 中断高
3、优先级RCONbits.IPEN=1 ; /使能中断优先级/系统其它部分初始化子程序void initialTRISA=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 ;POR
4、TAbits.RA3=0 ;PORTE=0; / 将 K1 ,K2 ,K3 , K4 四条列线置 0/SPI 传输数据子程序void SPILEDchar dataSSPBUF=data; /启动发送do;whilePIR1bits.SSPIF=0;PIR1bits.SSPIF=0 ;/显示子程序,显示4 位数void dispalyPORTAbits.RA5=0 ; / 预备锁存fork=0 ;k4 ;k+data=sk ;ifk=2 data=table0data ; / 个位需要显示小数点else data=tabledata ;SPILEDdata ; /发送显示段码fork=0 ;k
5、4 ;k+data=0xFF;SPILEDdata ; /连续发送 4 个 DARK ,使显示好看一些欢迎下载精品学习资源PORTAbits.RA5=1 ; / 最终给锁存信号,代表显示任务完成/软件延时子程序void DELAYfori = 3553 ; -i ; continue;/键扫描子程序void KEYSCANwhile1dispaly ; / 调用一次显示子程序whilePORTBbits.RB4=0DELAY ; /如有键按下,就软件延时break;if PORTBbits.RB4=0 break; /如仍有键按下,就终止循环扫描,返回/等键松开子程序void keyrelax
6、while1dispaly ; / 调用一次显示子程序if PORTBbits.RB4=1 break; /为防止按键过于灵敏,每次等键松开才返回/* 高优先级中断向量*/欢迎下载精品学习资源#pragma code InterruptVectorHigh=0x08 void InterruptVectorHigh void_asmgoto clkint / 跳到中断程序_endasm/中断服务程序#pragma code #pragma interrupt clkint void clkintTMR0=0X13 ; / 对 TMR0 写入一个调整值;由于写入TMR0 后接着的/两个周期不能增
7、量,中断需要3 个周期的响应时间,/以及 C 语言自动进行现场爱护要消耗周期INTCONbits.T0IF=0; /清除中断标志sreg=sreg+1; / 中断计数器加 1ifsreg=40 / 中断次数为 40 后,才对 S0, S1, S2, S3 操作sreg=0;s0=s0+1 ;ifs0=10s0=0 ;s1=s1+1 ;ifs1=10s1=0 ;s2=s2+1 ;ifs2=10s2=0 ;s3=s3+1 ;ifs3=10 s3=0;欢迎下载精品学习资源/主程序/供应此单片机程序有问题请联系maintmint ; /TMR0 初始化initial ; /spi 显示初始化及系统其它
8、部分初始化INTCONbits.GIE=0; /总中断禁止while1fork=0 ;k4 ;k+sk=0 ;sreg=0; /赋显示初值dispaly ; / 调用一次显示子程序KEYSCAN ; / 键扫描,直到开头键按下keyrelax ; / 等键松开INTCONbits.GIE=1; /总中断答应KEYSCAN ; / 键扫描直到停止键按下,在键扫描时有显示keyrelax ; / 等键松开INTCONbits.GIE=0; /总中断禁止KEYSCAN ; / 键扫描到清 0 键按下,在键扫描时有显示keyrelax ; / 等键松开-汇编语言版本的pic 单片机计时秒表程序设计-;
9、此程序实现计时秒表功能;时钟显示范畴: 00.00 秒-99.99 秒,辨论度: 0.01 秒;通过按键来启动计时、停止计时及清0;即第一次按下任意键开头计时,其次次按下任意键停止计时;第三次按下任意键使LED欢迎下载精品学习资源清 0,等待下一次计时开头LIST P=18F458 INCLUDE P18F458.INCS0 EQU 0X20 ;0.01 秒计时器S1 EQU S0+1 ;0.1 秒计时器S2 EQU S0+2 ;1 秒计时器S3 EQU S0+3 ;10 秒计时器SREG EQU S0+4 ;软计数器LEDF EQU S0+5;显示的 LED 的位置指示寄存器XW_TEMP
10、EQU S0+6;用于中断中爱护W 的值XHOSTS EQU S0+7 ;用于中断中爱护STATUS 的值DEYH EQU S0+8DEYL EQU S0+9;以上两个寄存器用于软件延时HOSTF EQU S0+0A;用于中断中爱护FSR0L 的值TEMP EQU S0+0B;用于存放暂时值ORG 0X00 GOTO MAIN ORG 0X08GOTO CLKINT;转向中断服务程序ORG 0X30;数字到段码的转换子程序最好放在程序开头,防止超过2K 的空间发生跨页读表 ;*不带小数点的共阳极码表* CONVERT ADDWF PCL, 1RETLW 0XC0; 0,显示段码与详细的硬件连接
11、有关RETLW 0XF9;1 RETLW 0XA4;2 RETLW 0XB0; 3 RETLW 0X99 ;4 RETLW 0X92 ;5 RETLW 0X82 ;6 RETLW 0XD8;7 RETLW 0X80 ;8欢迎下载精品学习资源RETLW 0X90 ;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;*带小数点的共阳极码表* CONVER
12、T2 ADDWF PCL,1RETLW 0X40;0RETLW 0X79;1RETLW 0X24;2RETLW 0X30;3RETLW 0X19;4RETLW 0X12;5RETLW 0X02;6RETLW 0X78;7RETLW 0X00;8RETLW 0X10RETURN;9;*SPI发送显示子模块 * TRANSMITCLRF PORTA ;LACK送低电平,为锁存做预备MOVWF SSPBUF;启动发送WAIT NOPBTFSS PIR1 , SSPIFGOTO WAIT;等待发送终止BCF PIR1 ,SSPIF ;清除中断标志欢迎下载精品学习资源RETURN;*显示子程序模块 *
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 单片机 计时 秒表 程序 方案设计
限制150内