当前位置:首页 > 单片机 > 单片机
[导读]主程序:/**************************************************************************** * 名称:main.c * 功能:通过外部中断0,外部中断1和外部中断2实现加减计数,并输出数码管显示 ************************

主程序:

/****************************************************************************
* 名称:main.c
* 功能:通过外部中断0,外部中断1和外部中断2实现加减计数,并输出数码管显示
****************************************************************************/

#include "config.h"
#define CON 0x000000ff
uint8 temp=0x00;
/****************************************************************************
* 名称:eint0()
* 功能:外部中断0处理函数,实现加计数
****************************************************************************/
void __irq eint0(void)
{
temp++;
while(EXTINT&(1<<0))
EXTINT=1<<0;
IO0SET=CON;
IO0CLR=temp;
VICVectAddr=0;
}
/****************************************************************************
* 名称:eint1()
* 功能:外部中断1处理函数,实现减计数
****************************************************************************/
void __irq eint1(void)
{
temp--;
while(EXTINT&(1<<1))
EXTINT=1<<1;
IO0SET=CON;
IO0CLR=temp;
VICVectAddr=0;
}
/****************************************************************************
* 名称:eint2()
* 功能:外部中断2处理函数,清零
****************************************************************************/
void __irq eint2(void)
{
temp=0;
while(EXTINT&(1<<2))
EXTINT=1<<2;
IO0SET=CON;
IO0CLR=temp;
VICVectAddr=0;
}

/****************************************************************************
* 名称:main()
* 功能:初始化外部中断0,外部中断1及I/O连接
****************************************************************************/
int main(void)
{
PINSEL0=0xa0000000;
PINSEL1=0x00000001;
IO0DIR=CON;
IO0SET=CON;
IO0CLR=temp;
VICIntSelect=0;
VICIntEnable=0x0001c000;
VICVectCntl0=0x0000002e;
VICVectCntl1=0x0000002f;
VICVectCntl2=0x00000030;
VICVectAddr0=(int)eint0;
VICVectAddr1=(int)eint1;
VICVectAddr2=(int)eint2;
EXTINT=0x07;
while(1);
}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭