凌阳16位单片机之FIQ中断

阅读: 评论:0

凌阳16位单片机之FIQ中断

凌阳16位单片机之FIQ中断

实现功能:打开并设置TimerA和TimerB定时器,并打开它们的FIQ中断,当有TimerA/B的FIQ中断请求时,响应相应的中断服务程序,在中断服务中翻转I/O端口输出电平,以控制接在I/O端口的发光二极管的亮灭。 

实验现象:TimerA定时长度为2s,当进入TimerA的FIQ中断后,翻转IOA口低四位的输出电平以控制接在IOA低四位端口的发光二极管;TimerB定时长度为1s,当进入TimerB的FIQ中断后,翻转IOB口低四位的输出电平以控制接在IOB低四位端口的发光二极管。程序运行时,可以观察到接在IOA低四位端口的发光二极管亮灭的周期为4s,而接在IOB低四位端口的为2s。





#include "SPCE061A.H"
unsigned int n,Output1=0x00f0,Output2=0x000f;
void FIQ(void)__attribute__((ISR));
void FIQ()
{
    if(*P_INT_Ctrl&0x2000)//当是TimerA中断是b13
    {
        *P_INT_Clear = 0x2000;
        Output1^=0xffff;
        *P_IOA_Data = Output1;    
    }
    if(*P_INT_Ctrl&0x0800)//当是TimerB中断是b11
    {
        *P_INT_Clear = 0x0800;    
        Output2^=0xffff;
        *P_IOA_Data = Output2;
    }
}
int main()
{
    __asm("FIQ OFF");
    
    *P_IOA_Dir = 0x00ff;
    *P_IOA_Attrib = 0x00ff;
    *P_IOA_Data = 0x0000;
    
    
    *P_TimerA_Ctrl = 0x000d;//选择了1024HZ的
    *P_TimerA_Data = 0xffff-2048;
    
    *P_TimerB_Ctrl = 0x0004;//选择了4096的
    *P_TimerB_Data = 0xffff-4096;
    
    *P_INT_Ctrl = 0x2800;
    __asm("FIQ ON");
    while(1)
    {
        *P_Watchdog_Clear = 0x0001;
    }
}


本文发布于:2024-02-03 05:05:17,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170690791548838.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:单片机   凌阳   FIQ
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23