【php精品源码栏目提醒】:本文主要为网学会员提供“短学期PIC源代码 - 电子电信”,希望对需要短学期PIC源代码 - 电子电信网友有所帮助,学习一下!
附录1. 代码:includedefine uchar unsigned char//宏定义define uint unsigned intuchar table0XC00XF90XA40XB00X990X920X820XF80X800X90//数码管 0-9 对应码表uchar time_countccp_count//定时器计数,ccp 捕捉模块计数double tempdouble TEMuchar out7//输出结果存放数组void init_displayvoid//显示初始化函数声明void init_COMPAREvoid//比较器初始化函数声明void init_TMR1void//定时器初始化函数声明void init_CCP1void//ccp(捕捉模块)初始化函数声明void close_INTERRUPTvoid中断关闭函数声明void process_DISPLAYvoid频率求解函数声明void displayvoid//显示函数声明void display1void//显示函数 1 声明void Delay25usunsigned int x延时函数声明pragma interrupt TMR1_CCP1_INTERRUPT//中断函数void TMR1_CCP1_INTERRUPTvoid ifPIR1bits.TMR1IF1 //判断是否定时器中断 PIR1bits.TMR1IF0 //TMR1 中断标志位清 0 T1CONbits.TMR1ON0 //关闭 TMR1 TMR1H0 TMR1L0 //设置 TMR1 数据寄存器初始值 T1CONbits.TMR1ON1 //开启 TMR1 time_count //定时计数器加 1 ifPIR1bits.CCP1IF1 //判断是否 CCP1 中断 ifccp_count0 PIE1bits.TMR1IE1 //允许 TMR1 中断 PIR1bits.TMR1IF0 //TMR1 中断标志位清 0 TMR1H0 TMR1L0 //TMR1 数据寄存器清零 T1CONbits.TMR1ON1 //开启 TMR1 中断 PIR1bits.CCP1IF0 //CCP1 中断标志位清 0 ccp_count //脉冲计数器加 1 void main//主函数 init_COMPARE//比较器初始化 init_display//显示初始化 init_TMR1//定时器初始化 init_CCP1//ccp 模块初始化 while1 ifccp_count2//计数 16 个脉冲时停止计时 break close_INTERRUPT//关中断 process_DISPLAY//求解频率 while1 display//显示结果 void init_displayvoid//显示初始化函数 TRISCbits.TRISC00 TRISCbits.TRISC10 TRISCbits.TRISC30 TRISD0 temp0void init_TMR1void//定时器初始化函数 TMR1H0 TMR1L0 PIE1bits.TMR1IE0 T1CON0x10//定时器 16 位计数void init_CCP1void//ccp 模块初始化函数 time_count0//定时器溢出计数清零 ccp_count0//ccp 捕捉模块计数 TRISCbits.TRISC21//CCP1 输入 CCP1CON0x07 // 每 16 上升沿捕捉一次 PIR1bits.CCP1IF0 //清 CCP1 中断标志位 PIE1bits.CCP1IE1//ccp1 开中断 INTCONbits.PEIE1 INTCONbits.GIE1//全局中断使能void close_INTERRUPTvoid//中断关闭函数 T1CONbits.TMR1ON0 //关闭 TMR1 CCP1CON0x00 //关闭 CCP1 TRISCbits.TRISC20 //CCP1RC2输出 INTCONbits.PEIE0 //关闭外围中断 PIE1bits.CCP1IE0 //关闭 CCP1 中断 PIR1bits.CCP1IF0 //CCP1 中断标志位清 0 PIE1bits.TMR1IE0 //关闭 TMR1 中断 PIR1bits.TMR1IF0 //TMR1 中断标志位清 0 INTCONbits.GIE0 //关闭全局中断void process_DISPLAYvoid//频率求解函数 TEMCCPR1 temp32000000.0/doubletime_count65536TEM out0longtemp/1000000//依次求解输出结果的各个位数值 out1longtemp/100000-out010 out2longtemp/10000-out0100-out110 out3longtemp/1000-out01000-out1100-out210 out4longtemp/100-out010000-out11000-out2100-out310 out5longtemp/10-out0100000-out110000-out21000-out3100-out410 out6longtemp/1-out01000000-out1100000-out210000-out31000-out4100 -out510void Delay25usunsigned int x//延时函数 unsigned int ab foraxa0a-- forb110b0b--void init_COMPAREvoid//比较器函数 CVRCON0xAC//设置参考电压 ANSELbits.ANS31//开启模拟输入 TRISAbits.TRISA01 TRISAbits.TRISA31 TRISAbits.TRISA40 CM1CON0 0XA2//比较器控制模式void display1void//显示函数 1(用于检测代码是否正常导入) uint i out01 out12 out23 PORTCbits.RC00//数码管扫描显示 PORTCbits.RC10 PORTCbits.RC30 PORTCbits.RC00 PORTCbits.RC10 PORTCbits.RC30 PORTCbits.RC01 PORTDtableout0 Delay25us2 PORTCbits.RC00 PORTCbits.RC10 PORTCbits.RC30 PORTCbits.RC11 PORTDtableout1 Delay25us2 PORTCbits.RC00 PORTCbits.RC10 PORTCbits.RC30 PORTCbits.RC31 PORTDtableout2 Delay25us2void displayvoid//显示函数(显示求解结果,只显示结果最高三位) uint i PORTCbits.RC00 PORTCbits.RC10 PORTCbits.RC30 fori0i上一篇:【精品】简单PHP网站系统制作流程