61单片机项目 - FIQ中断
来源:互联网 发布:建材网发布软件 编辑:程序博客网 时间:2024/05/23 02:14
实现功能:打开并设置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"#define uint unsigned int#define uchar unsigned charvoid FIQ(void)__attribute__((ISR));int main(){ //在IOA低四位端口的发光二极管 //接在IOB低四位端口的发光二极管 *P_IOA_Dir=0x000f; *P_IOA_Attrib=0x000f; *P_IOA_Data=0x0000; *P_IOB_Dir=0x000f; *P_IOB_Attrib=0x000f; *P_IOB_Data=0x0000; *P_TimeBase_Setup=0; *P_TimerA_Data=0xfffb; *P_TimerA_Ctrl=C_TMA2_TMB1+C_TMA1_1+C_TMA_PWM_D3; *P_TimerB_Data=0xf7ff; *P_TimerB_Ctrl=C_TMB_4KHz+C_TMA_PWM_D3; *P_INT_Ctrl=C_FIQ_TMA|C_FIQ_TMB; asm("INT FIQ"); while(1) { *P_Watchdog_Clear=C_WDTCLR; } return 0;}void FIQ(void){ static uint Ada=0x000f,Bda=0x000f,Adata=0,Bdata=0; // asm("INT OFF"); if(*P_INT_Ctrl&C_FIQ_TMA) { Adata++; if(Adata==4) { Adata=0; Ada=~Ada; Ada&=0x000f; *P_IOA_Data=Ada; } *P_INT_Clear=C_FIQ_TMA; } *P_Watchdog_Clear=C_WDTCLR; if(*P_INT_Ctrl&C_FIQ_TMB) { Bdata++; if(Bdata==2) { Bdata=0; Bda=~Bda; Bda&=0x000f; *P_IOB_Data=Bda; } *P_INT_Clear=C_FIQ_TMB; } *P_Watchdog_Clear=C_WDTCLR; //asm("INT FIQ,IRQ");}
0 0
- 61单片机项目 - FIQ中断
- 凌阳16位单片机之FIQ中断
- 凌阳16位单片机之FIQ中断
- FIQ快中断,为什么叫快中断?
- LPC2114/EASYARM2100 FIQ快速中断例程
- IRQ和FIQ中断的区别
- IRQ和FIQ中断的区别
- IRQ和FIQ中断的区别
- IRQ和FIQ中断的区别
- FIQ(快速中断请求)和IRQ(外部中断请求)
- ARM的irq和fiq中断以及中断嵌套
- 单片机中断
- 单片机中断
- 单片机中断
- 单片机中断
- 单片机中断
- 单片机中断
- __irq声明IRQ和FIQ中断处理函数
- Android json 解析
- 【.Net码农】T4:T4 笔记 双模式
- Android Universal Image Loader 学习笔记(二)
- Java遍历时删除List、Set、Map中的元素(源码分析)
- Nginx配置总结
- 61单片机项目 - FIQ中断
- nyoj84阶乘的0
- nginx安装出错
- adapter.notifyDataSetChanged()使用没有效果的解决办法。
- checkbox全选实例
- jetty meven eclipse集成总结
- Android Intent 用法全面总结
- Linux内核中的常用宏container_of其实很简单
- 关于ggplot改变背景报错的问题