凌阳16位单片机之FIQ中断
来源:互联网 发布:阿里云企业邮箱登陆 编辑:程序博客网 时间:2024/06/10 20:52
实现功能:打开并设置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;
}
}
- 凌阳16位单片机之FIQ中断
- 凌阳16位单片机之FIQ中断
- 凌阳16位单片机之定时器中断
- 凌阳16位单片机之IRQ4中断
- 凌阳16位单片机之IRQ6中断
- 凌阳16位单片机之外部中断
- 61单片机项目 - FIQ中断
- 凌阳16位单片机之用时基中断定时
- 单片机之中断
- PIC单片机之中断
- 单片机之中断
- FIQ快中断,为什么叫快中断?
- 【51单片机学习过程记录】16 中断之 串口中断的应用2(中断方式)
- PIC单片机之中断程序
- 51单片机之中断 学习心得
- LPC2114/EASYARM2100 FIQ快速中断例程
- IRQ和FIQ中断的区别
- IRQ和FIQ中断的区别
- 第12周项目1 教师兼干部类
- PowerShell FTP客户端上传下载模块的编写
- MFC 知识 总结(1)
- 初识ant
- 彻底解决Android 应用方法数不能超过65K的问题
- 凌阳16位单片机之FIQ中断
- Oracle Linux 6.3安装
- 二分查找
- LeetCode | Remove Element
- freemarker使用
- Hive1.1安装配置,基于最小安装的CentOS7、hadoop2.6、MySQL
- GOF23之外观模式Demo
- debug往事
- Hadoop之MapReduce概念