📄 timer_counter.c
字号:
#include"IO.h"
#include"timer_counter.h"
struct tim timer[10]={{0,0,0,0},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0},};
struct ct counter[10]={{0,0,0,0},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0},};
void interT0() interrupt 1
{
unsigned char i;
TR0=0;
TH0=0x3c;
TL0=0xb0;
for(i=0;i<10;i++) //依次检查10个计数器,若计数器已经启动,则对其进行加1操作
{
if(timer[i].ST)
timer[i].TC++;
}
TR0=1;
}
void time(unsigned char n,bit in)
{
if(in)
{
if(timer[n].ST)
{
if(timer[n].TC==timer[n].K) //当输入逻辑为1时,如果定时器已经启动,则需要检测定时器是否溢出
{
timer[n].DT=1; //一旦检测到定时器溢出,置定时器逻辑标志位,同时关闭定时器
timer[n].ST=0;
timer[n].TC=0;
}
}
else
{
if(timer[n].DT!=1)
timer[n].ST=1; //当输入逻辑为1时,如果定时器没有启动,也没有溢出,则启动该定时器
}
}
else
{
timer[n].DT=0;
timer[n].ST=0;
timer[n].TC=0;
}
}
void count(unsigned char n,bit in)
{
if(!counter[n].RST)
{
if(in)
{
if(!counter[n].Cnt)
{
counter[n].CT++;
if(counter[n].CT==counter[n].PV)
{
counter[n].Cnt=1;
counter[n].CT=0;
}
}
}
else
counter[n].Cnt=0;
}
else
{
counter[n].Cnt=0;
counter[n].CT=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -