📄 ch452ss.c
字号:
//计时程序,精度为0.01秒
#include <pic.h>
#include "ch452ss.h"//CH452驱动头文件
uint s[]={0,0,0,0,0,0,0,0};//时间位存储空间
uint sreg=0;//中断次数累计
//系统初始化函数*/
void initial()
{
INTCON=0x00;
ADCON1=0x07;
PIE1=0;
PIE2=0;
}
//TMR0 初始化子程序
void tmint()
{
T0CS=0;//TMR0工作于定时器方式
PSA=1; //TMR0不用分频
T0IF=0; //清除TMR0 的中断标志
T0IE=1;//TMR0中断允许
}
void dealtime()
{
sreg=sreg+1; //中断计数器加1
if(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[2]+1;
if(s[2]==10){
s[2]=0;
s[3]=s[3]+1;
if(s[3]==6) {
s[3]=0;
s[4]=s[4]+1;
if(s[4]==10){
s[4]=0 ;
s[5]=s[5]+1;
if(s[5]==6){
s[5]=0;
s[6]=s[2]+1;
if(s[6]==10){
s[6]=0;
s[7]=s[7]+1;
if(s[7]==6)
s[7]=0 ;
}}}}}}}}
}
//显示函数
void display()
{
intBit_Display_Num(7,s[0]);
intBit_Display_Num(6,s[1]);
intBit_Display_Num1(5,s[2]);
intBit_Display_Num(4,s[3]);
intBit_Display_Num1(3,s[4]);
intBit_Display_Num(2,s[5]);
intBit_Display_Num1(1,s[6]);
intBit_Display_Num(0,s[7]);
}
void main()
{
TRISD=0x00;
CLEAR_INTER_FLAG;
initial();
InitCh452();
tmint();
GIE=1;
ENABLE_INTERRUPT;
while(1)display();
}
void interrupt keyint()
{
if(T0IF==1)
{
TMR0=0X13;
T0IF=0;
dealtime();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -