首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

为什么小弟我的中断开启后就不能识别键盘了呢

2012-02-06 
为什么我的中断开启后就不能识别键盘了呢?PREINT Fpclk / 32768 - 1// 设置基准时钟分频器PREFRAC Fp

为什么我的中断开启后就不能识别键盘了呢?
PREINT = Fpclk / 32768 - 1; // 设置基准时钟分频器
  PREFRAC = Fpclk - (Fpclk / 32768) * 32768;
   
 // YEAR = 2003; // 初化年
 // MONTH = 6; // 初化月
 // DOM = 20; // 初化日
   
  CIIR = 0x01; // 设置秒值的增量产生一次中断
  ILR = 0x03;// 清除RTC增量和报警中断标志
  CCR = 0x01; // 启动RTC

/* VIC初始化 */
  VICIntSelect = 0x00;// 设置所有中断连接IRQ中断
  VICVectCntl0 = 0x20 | 13;// 分配通道0
  VICVectAddr0 = (int)IRQ_Timer0;// 设置中断服务程序地址
  VICIntEnable = (1 << 13);// 使能RTC中断
上面的是代码,当我在主函数中你打开终端,我的程序就不能在按下按钮之后显示数字........这是为什么?

[解决办法]
分步调试会发现,程序绝大部分时间进入中断,刷新显示几乎没有得到时序合理的执行。

计算中断执行两次之间的时间是否过短。
中断服务函数最多不能超过200行,最好100行以内。不可中断中调用函数。
中断中最好只处理标志,对出后,主函数中处理标志。

如果动态显示驱动,需要合理计算刷新频率,否则会有鬼影出现。

热点排行