微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于PIT的用法小弟寻老司机帮忙

关于PIT的用法小弟寻老司机帮忙

时间:10-02 整理:3721RD 点击:
我写这段程序的要求是PB0为低电平时PP0小灯以1HZ的频率闪烁两次然后熄灭!这段程序我不知道怎么加,也不知道加在哪!小弟求老哥帮忙指教一二,感激不尽!小弟用的是MC9S12X系列的单片机。


老哥们快来啊 ,小弟等不及了

中断闪烁,技术2次

触发条件写在那?

这是demo?

这是demo?

小编探讨一下你的陈序啊!
你单片机的频率是40M吗?就是PLL之后的频率
我刚好也在做这个系列

小编探讨一下你的陈序啊!
你单片机的频率是40M吗?就是PLL之后的频率
我刚好也在做这个系列

PIT的中断周期是2HZ,在主循环里一直检测PB0的状态,如果是低电平就在PIT中断里开始计数,计数值是2的倍数就将PP0翻转一次,就能实现1HZ闪烁了

这是我自己写的

PLL之后是32M的。

是在主循环里还是在中断部分写呢?
我目前写到中断里了,中断里的程序是这样写的
{if (PITTF==0x01)
PITTF=0x01;
LED=~LED;
i++;
if (i>=4)
LED=1;}
这样写可以吗?

这样写LED的闪烁频率就是2HZ了

功能可以实现,但是我写了很多个,因为需要6个中断程序如下
void interrupt  PIT_INTER(void)
{   
if (PITTF==0x01&&BP_MCU==1) {
  PITTF=0x01;
   LEDCPU=~LEDCPU;
i++;
if(i>=2)
    LEDCPU=1;
}

if (PITTF==0x01&&START_MCU==1) {
  PITTF=0x01;
   LEDCPU=~LEDCPU;
i++;
if(i>=4)
    LEDCPU=1;
}
if (PITTF==0x01&&D_MCU==0) {
  PITTF=0x01;
   LEDCPU=~LEDCPU;
i++;
if(i>=6)
    LEDCPU=1;
}
if (PITTF==0x01&&R_MCU==1) {
  PITTF=0x01;
   LEDCPU=~LEDCPU;
i++;
if(j>=8)
    LEDCPU=1;
}
if (PITTF==0x01&&AIRHIGH_MCU==0) {
  PITTF=0x01;
   LEDCPU=~LEDCPU;
i++;
if(i>=10)
    LEDCPU=1;
}
if (PITTF==0x01&&CHARGE_MCU==0) {
  PITTF=0x01;
   LEDCPU=~LEDCPU;
i++;
if(i>=12)
    LEDCPU=1;
}
这样写的话,可以吗?有一个中断发生了之后,在有其他中断还能响应吗?比如第一个中断闪两次发生并执行完毕,第二个条件也需要触发,闪三次,可以实现吗?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top