凌阳16位单片机之IRQ6中断
来源:互联网 发布:石大access数据库应用 编辑:程序博客网 时间:2024/05/20 17:24
IRQ6是b0和b1位,主要是来控制TIMEB的,b0控制TMB2,b1控制TB1也就是说不控制定时器A,
实现功能:利用IRQ6的两个时基中断,即IRQ6_TMB1和IRQ6_TMB2中断,在各自的中断服务程序中对相应的变量进行累加;并通过点亮、熄灭发光二极管来表示相应变量计数器累加的速度。
实验现象:D4~D7四个发光二极管状态变化周期为4s,D8~D11四个发光二极管状态变化周期为2s
#include "SPCE061A.H"
#define sec1 0x00f0
#define sec2 0x000f
unsigned int i,Output,tim1=0,tim2=0;
void IRQ6(void)__attribute__((ISR));
void IRQ6()
{
if(*P_INT_Ctrl & C_IRQ6_TMB1)
{
tim1++;
if(tim1 >= 64*2)
{
tim1=0;
if((*P_IOA_Data & sec1) == 0)
{
*P_IOA_Data += sec1;
}
else
{
*P_IOA_Data-=sec1;
}
}
*P_INT_Clear = C_IRQ6_TMB1;
}
if(*P_INT_Ctrl & C_IRQ6_TMB2)
{
tim2++;
if(tim2 >= 64*2)
{
tim2=0;
if(!(*P_IOA_Data &sec2))
{
*P_IOA_Data += sec2;
}
else
{
*P_IOA_Data-=sec2;
}
}
*P_INT_Clear = C_IRQ6_TMB2;
}
}
int main()
{
__asm("FIQ OFF");
*P_IOA_Dir = 0x00ff;
*P_IOA_Attrib = 0x00ff;
*P_IOA_Data = 0x0000;
*P_Timebase_Setup = (C_TMB1_64Hz+C_TMB2_128Hz);
*P_INT_Ctrl = C_IRQ6_TMB1+C_IRQ6_TMB2; //Tim1是64Hz Tim2是128Hz
__asm("INT IRQ");
while(1)
{
*P_Watchdog_Clear = 0x0001;
}
}
- 凌阳16位单片机之IRQ6中断
- 凌阳16位单片机之定时器中断
- 凌阳16位单片机之FIQ中断
- 凌阳16位单片机之FIQ中断
- 凌阳16位单片机之IRQ4中断
- 凌阳16位单片机之外部中断
- 凌阳16位单片机之用时基中断定时
- 单片机之中断
- PIC单片机之中断
- 单片机之中断
- 【51单片机学习过程记录】16 中断之 串口中断的应用2(中断方式)
- PIC单片机之中断程序
- 51单片机之中断 学习心得
- c51单片机上的发送中断标志位
- 单片机定时器/计数器、中断和串口控制位
- 学习笔记之-51单片机中断
- 51单片机之中断的实现过程
- 89C52单片机之流水灯中断
- Move vim cursor to a specific column
- HTTP 协议简介
- HDU---2035-人见人爱A^B (快速幂)
- android几种定时器机制及区别
- 【转载】巨页的原理分析
- 凌阳16位单片机之IRQ6中断
- ACM训练方案poj题目分类
- Couldn't resolve resource @id/pass问题的解决
- Android apk动态加载机制的研究(二):资源加载和activity生命周期管理
- CSS样式表规范化
- 2015年浙江省赛总结
- 杭电题目大致分类
- C++第六章
- java System.out.println()