[资料分享与下载] 飞思卡尔单片机DZ60---实时中断

[复制链接]
niuyaliang 发表于 2015-2-27 19:38 | 显示全部楼层 |阅读模式
  1. [cpp] view plaincopy
  2. //RTI实时中断实验  
  3. //RTC模块包括一个状态和控制寄存器、一个8位计数寄存器和一个8位模数寄存器  
  4. //实时中断功能用来产生周期性中断。RTI有三个可选时钟源:LPO 1KHZ内部振荡器,32KHZ内部时钟,以及ERCLK外部时钟  
  5. //8位比较器实时比较计数器RTCCNT与TRCMOD值,相等则产生中断  
  6.   
  7.   
  8.   
  9. #include <hidef.h> /* for EnableInterrupts macro */  
  10. #include "derivative.h" /* include peripheral declarations */  
  11.   
  12. #define LEDCPU PTDD_PTDD0  
  13. #define LEDCPU_dir PTDDD_PTDDD0  
  14.   
  15.   
  16.   
  17.   
  18.   
  19. //初始化RTC  
  20. void INIT_RTC(void)   
  21. {  
  22.   RTCSC = 0X1B;  //允许实时中断,RTCLKS = 00 实时时钟源为1KHZ低功率振荡器(LPO?   
  23.                  //RTCPS = 1010(B)同时RTCLKS[0] = 0,即选择10分频   
  24.                   
  25.   RTCMOD = 50 - 1;//50个周期产生一次中断,中断频率为2Hz,0.5秒产生一次中断  
  26. }  
  27.   
  28.   
  29.   
  30. //RTC中断函数  
  31. void interrupt 25 RTC_INTERRUPT(void)   
  32. {  
  33.   if(RTCSC_RTIF == 1)   
  34.   {  
  35.       RTCSC_RTIF = 1;//写入逻辑数1可以清除此位  
  36.       LEDCPU = ~LEDCPU;  
  37.         
  38.   }  
  39. }  
  40.   
  41.                                                                                     
  42. void main(void) {  
  43.   
  44.   DisableInterrupts;  
  45.   SOPT1 = 0;  
  46.   EnableInterrupts;  
  47.    
  48.    
  49.   LEDCPU_dir = 1;  
  50.   LEDCPU     = 0;  
  51.    
  52.   INIT_RTC();  
  53.    
  54.   while(1);   
  55.   
  56. }  


您需要登录后才可以回帖 登录 | 注册

本版积分规则

212

主题

2427

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部