瑞萨单片机中断处理
#include "sfr_r825.h" #define _Disableint asm("Fclr I") //I标志位为0,则禁止所有的可屏蔽中断 #define _Enableint asm("Fset I") //I标志位置1,表示打开总中断控制 unsigned int num; int a; void TimerRAHandler(void); void StartTimer(void); void main(void) { _Disableint; pd2_5=1 ;//IO输出 控制灯 StartTimer(); _Enableint; if(num==100){ p2_5 ^= 0; num=0; } while(1); } void StartTimer(void) { tstart_tracr = 0; /* 停止计时 */ while(tcstf_tracr != 0);/*是否停止计数*/ traic = 0x00; /* Disable Timer RA Interrupt */ tstop_tracr = 1; /*强制停止计数*/ /*****************************************************/ /* 定时时间 : 50ns* 100 * 100 = 0.5ms */ trapre = 100-1; /* Set (100 - 1) in TRAPRE register */ tra = 100-1; /* Set (100 - 1) in TRA register */ /*****************************************************/ /*我用的是20m的晶振,如何计算时间呢?*/ tedgsel_traioc = 0; /*输出极性切换 */ topcr_traioc = 0; /* 输出控制 */ toena_traioc = 0; /* 输出允许位*/ /* 计数器模式中以上三位必须清零 */ tipf0_traioc = 0; /* 输入滤波器选择 */ tipf1_traioc = 0; /* 输入滤波器选择 */ /* 计数器模式中以上两位必须清零 */ tmod0_tramr = 0; /* Set to "000" 定时器模式*/ tmod1_tramr = 0; tmod2_tramr = 0; tck0_tramr = 0; /* Select "fOCO" 计数源 */ tck1_tramr = 1; tck2_tramr = 0; tckcut_tramr = 0; /*计数源供给 */ traic=2;/*中断级别*/ tstart_tracr = 1; /* 开始计时 */ while(tcstf_tracr != 1); } //#pragma INTERRUPT TimerRAHandler()vect=22 void TimerRAHandler(void) { ir_traic=0; num=num+1; //p2_5 ^= 1; } 我的程序的目的是用定时器控制p2_5的灯的亮灭,我用芯片是R8c25群晶振是20M的,这样计时的结果是0.5s吗?为什么这样的定时器中断程序 不出现中断呢? 请各位高手帮忙指点下,小弟不胜感激!!
共5条 1/1
1
跳转至
页