AnsweredAssumed Answered

MC9S12XEP100 PORT口操作问题

Question asked by Yu fuhua on May 31, 2019
Latest reply on Jun 4, 2019 by lama

在用MC9S12XEP100,利用PIT产生1ms定时中断,定义一个“test_count”变量,在PIT中断服务函数中实现I/O翻转(PA6),用示波器观察,偶尔会出现PA6没有拉低或置1的现象,概率较高,用串口打印PORTA寄存器值,发现波形异常的时候,打印出来的值和波形对应上(比如正常输出是0xBF和0xFF间隔输出,波形异常的时候,连续出现3个0xBF或0xFF),说明等于20和24两个判断是进去了的,但是PORTA寄存器值修改没有成功。以下是程序示例:

换作其他I/O口问题现象相同。

 

 

test_count++;

if(test_count == 200)

{

     test_count = 0;

}

 

if(test_count == 20)

{

      PORTA &= ~(1 << 6);

 

      printf_flag = 1;

}

if(test_count == 24)

{

      PORTA |= 1 << 6;

 

      printf_flag = 1;

}

 

......

 

if(printf_flag == 1)

{

     printf_flag = 0;

     printf(PORTA);

}

Outcomes