按键处理的过程放在定时器内部还是main()里面的主循环好呢

2020-02-05 09:09发布

本帖最后由 68336016 于 2012-6-7 10:17 编辑

我这是一个周期为0.5ms的定时器循环,串口57600波特率,
功能很简单,读到开关为ON,串口发送20个字节信息,读到开关为OFF,串口也发送20个字节信息
以前用STM32,速度快,而且串口用DMA发送不占用CPU。


现在换成C8051,22MHz频率,这样的话,每次都得等待串口发送完,就比较费时间了。
我要求是每次定时器中断来临,上一次数据肯定都已经发送完毕了的。
就算把里面的开关处理代码放到main的主循环里面,本质应该没区别吧?

除了看汇编外,有什么比较好的办法计算下这个中断函数一共需要多少个时钟周期呢?
  1. //------------------------------------------------------------------------------------
  2. // Timer2_ISR  周期0.5ms
  3. //------------------------------------------------------------------------------------
  4. void Timer2_ISR (void) interrupt 5
  5. {
  6.     if (开关==ON)
  7.    {
  8.         给20字节数组赋值;
  9.         发送20个字节信息;
  10.    }
  11.     if (开关==OFF)
  12.    {
  13.         给20字节数组赋值;
  14.         发送20个字节信息;
  15.    }
  16. }
复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。