历史上的今天
今天是:2024年09月07日(星期六)
2020年09月07日 | PIC16F1826定时器实现呼吸灯效果主程序
2020-09-07 来源:51hei
void main(void)
{
TMR0IF=0;//清除TMR0中断标志位
TMR0=255;//设置中断初始值255
unsigned int k = 1;
unsigned int TIMER0 = 0,TIMER1 = 0,TIMER2 = 0;
unsigned char Flag_1 = 1;
unsigned char Flag_2 = 1;
unsigned char Flag_3 = 1;
Pin_Init();
Answ_Out = 0;
Light1 = 0;
Light2 = 0;
Light3 = 0;
Light4 = 0;
while(1)
{
if( (TMR0IF == 1) && (Flag_1 ==1) ) //开启定时器溢出中断
{
TIMER0 ++; //计数器+1
TMR0IF = 0; //定时器溢出标志位清零
TMR0 = 255;
}
if( TIMER0 == k ) //如果计数器的值等于设定的值
{
Light4 = 1; //灯灭
}
if( TIMER0 == 100 ) //计数器加到90
{
Light4 = 0; //灯亮
TIMER0 = 0;
k++; //设定值初始化
}
if( k == 99 )
{
Light4 = 0;
k =1;
Flag_3 = 1;
Flag_1 = 0;
}
if( (TMR0IF == 1) && (Flag_2 ==1) ) //开启定时器溢出中断
{
TIMER1 ++; //计数器+1
TMR0IF = 0; //定时器溢出标志位清零
TMR0 = 255;
}
if( TIMER1 == 40040)
{
Light4 = 1;
TIMER1 = 0;
Flag_1 = 1;
Flag_2 = 0;
}
if( (TMR0IF == 1) && (Flag_3 ==1) ) //开启定时器溢出中断
{
TIMER2 ++; //计数器+1
TMR0IF = 0; //定时器溢出标志位清零
TMR0 = 255;
}
if( TIMER2 == k ) //如果计数器的值等于设定的值
{
Light4 = 0; //灯亮
}
if( TIMER2 == 100 ) //计数器加到90
{
Light4 = 1; //灯灭
TIMER2 = 0;
k++; //设定值初始化
}
if( k == 99 )
{
Light4 = 0;
k =1;
Flag_2 = 1;
Flag_3 = 0;
}
}
}
上一篇:pic多路adc 中断方式
下一篇:PIC HEX文件格式分析
史海拾趣
|
有两个键↑,↓.根据按键的时间长短,分成3个等级,从0000开始置数,最大可达9999。第一个等级,按↑递增很慢,按键时间超过5秒,进入第二个等级,递增比原来快多了,继续按键5秒,进入第三等级,递增超快,只看到最高位变化,按键停止后。再次按键 ...… 查看全部问答> |
|
求教各位高手一下,为什么我的电脑装不了EVC4.我现在用的是XP的系统,电脑上已经装上vc6和vs2005了,我装EVC出现这下面的问题. Setup Initialization Error There is insufficient memory to run Setup.Try closing any open applicatio ...… 查看全部问答> |
|
printf的格式控制的完整格式: % - 0 m.n l或h 格式字符 下面对组成格式说明的各项加以说明: ①%:表示格式说明的起始符号,不可缺少。 ②-:有-表示左对齐输出,如省略表示右对齐输出。 ③0:有0表示指定空位填0,如省略表示指定空位不填。 ④m.n ...… 查看全部问答> |
|
我想把ucos移植去2812,但是在烧写中遇到了一些问题,这个问题我在论坛见过,不过不清楚具体是怎样解决的~ 下面是遇到的状况: 使用ti的烧写插件烧写FLASH时出现以下提示: Code Composer could not locate: FlashAPIInterface.c Would you lik ...… 查看全部问答> |
|
数据采集仪器原来两个通道都是加速度传感器,前段时间买了个电涡流位移传感器,想一个仪器同时采集加速度和位移传感器信号,在不改变采集电路的情况下能否实现兼容?电涡流位移传感器输出是-2V到-18V.是直流和交流的耦合输出形式,我只需要交流部分 ...… 查看全部问答> |




