irq4中断子程序c语言写法,凌阳16位单片机之IRQ4中断

阅读: 评论:0

irq4中断子程序c语言写法,凌阳16位单片机之IRQ4中断

irq4中断子程序c语言写法,凌阳16位单片机之IRQ4中断

原标题:凌阳16位单片机之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;

}

责任编辑:

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

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

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

标签:子程序   写法   单片机   语言   凌阳
留言与评论(共有 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