凌阳16位单片机之用时基中断定时
当作为读操作的时候,P_INT_Ctrl主要作为中断标志,因每一位均代表一个中断,当CPU相应某个中断的时候,便将该中断标识值=置为1
清楚标志控制单元P_INT_Clear只具有写的功能,当CPU响应中断后,会将中断标志为1;当进入中断服务的时候,会将中断标志位0,否则CPU将会总进行这个中断;
P_INT_Ctr_New与P_INT_Ctrl功能相似。
首先在打开中断的情况下,有多少Hz一秒钟就进入多少次中断,
所以要定时0.5秒钟的话,只需要有2Hz就可以了 ,没进入一次就是0.5秒,所以就不用在计算了,
如果要是用更高频率的话也是可以的,比如说用16Hz的话,那就是8Hz为0.5秒,这样就可以提前定义一个变量叫做n,这个n在中断内,当n==8才真正的进入相应的中断,
#include "SPCE061A.H"
unsigned int g_uioutput = 0x0001,n=0;
void IRQ5(void)__attribute__((ISR));
int main()
{
asm("INT OFF");
*P_IOA_Dir = 0x00ff;
*P_IOA_Attrib = 0x00ff;
*P_IOA_Data = 0x0000;
*P_INT_Ctrl = C_IRQ5_2Hz;
asm("INT IRQ");
while(1)
*P_Watchdog_Clear = 0x0001;
}
void IRQ5(void)
{
if(*P_INT_Ctrl&C_IRQ5_2Hz)
{
if(++n == 4)//两秒的时候回正真的进入一次中断,n就作为一个标记
n=0;//设置n为0;为了下一次重新开始
*P_IOA_Data = g_uioutput;
g_uioutput&=0x0000;
}
*P_INT_Clear = 0x0004;//清楚中断标志位
}
else
{
*P_INT_Clear = 0x0008;//C_IRQ5_2Hz控制的有两个频率如果进入的4Hz的频率的话
}
}
凌阳16位单片机中断定 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)