×
嵌入式 > 技术百科 > 详情

凌阳16位单片机之IRQ4中断

发布时间:2020-06-06 发布时间:
|
IRQ4中断是由  b4  b5 b5三位来控制的 

 

 

 

实现功能:利用IRQ4三个时基中断,即IRQ4_1kHz、IRQ4_2kHz和IRQ4_4kHz中断,在各自的中断服务程序中对相应的变量进行累加;并通过点亮、熄灭发光二极管来表示相应变量计数器累加的速度; 

实验现象:D4和D5的亮灭周期为2s,D6和D7的亮灭周期为1s,D8~D11的亮灭周期为0.5s。

 

 

这个需要有一个变量来计数,

 

 


#include "SPCE061A.H"
#define sec2 0x0003    //宏定义,低八位的低两个口
#define sec1 0x000c
#define sec5 0x00f0
unsigned int i,j;

void IRQ4(void)__attribute__((ISR));


void IRQ4()
{    
    static unsigned int IRQ_2=0,IRQ_1=0,IRQ_4=0;//设置三个计数器
    //unsigned int IRQ42,IRQ41,IRQ44;
    //unsigned int Output = 0x0000,i;
    //*P_IOA_Data=0x00ff;
    //asm("INT OFF");
    if(*P_INT_Ctrl & C_IRQ4_1KHz)//1024
    {
        if(++IRQ_1>=2048)
        {
            IRQ_1=0;
            if(((*P_IOA_Buffer)&sec2)==0)
            {
                *P_IOA_Data+=sec2;
            }
            else
            {
                *P_IOA_Data-=sec2;
            }
        }
        //通过判断亮暗来进行加减  下面两个都是类似的
        *P_INT_Clear = C_IRQ4_1KHz;
    }
    
    if(*P_INT_Ctrl & C_IRQ4_2KHz)//2048
    {
        if(++IRQ_2>=2048)
        {
            IRQ_2=0;
            if(((*P_IOA_Buffer)&sec1)==0)
            {
                *P_IOA_Data+=sec1;
            }
            else
            {
                *P_IOA_Data-=sec1;
            }
        }
        *P_INT_Clear = C_IRQ4_2KHz;     
    }
    
    
    if(*P_INT_Ctrl & C_IRQ4_4KHz)//4096
    {
        IRQ_4++;
        if(IRQ_4>=2048)
        {
            IRQ_4=0;
            if(((*P_IOA_Data)&sec5)==0)
            {
                (*P_IOA_Data)=(*P_IOA_Data)+sec5;
            }
            else
            {
                (*P_IOA_Data)=(*P_IOA_Data)-sec5;
            }
        }
        *P_INT_Clear =C_IRQ4_4KHz;
    }
    //asm("INT IRQ");
}

int main()
{
    *P_IOA_Dir = 0x00ff;
    *P_IOA_Attrib = 0x00ff;
    *P_IOA_Data = 0x0000;
    
    *P_INT_Ctrl = C_IRQ4_2KHz+C_IRQ4_1KHz+C_IRQ4_4KHz;//01110000    开启了IRQ4的三种不同频率的中断
    asm("INT IRQ");
    
    while(1)
    {
        *P_Watchdog_Clear = 0x0001;
    }
    return 0;
}

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
分布式光纤温度传感器(DTS)系统的应用