📄 exint.c
字号:
/****************************************Copyright (c)**************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: main.c
** Last modified Date: 2004-09-16
** Last Version: 1.0
** Descriptions: The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by: Chenmingji
** Created date: 2004-09-16
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by: linwensen
** Modified date: 2007-09-25
** Version: 1.01
** Descriptions: Renewed the template, added codes to surport more compilers
**
********************************************************************************************************/
#include "config.h"
char flag=FALSE;
/*
*********************************************************************************************************
** 函数名称 :IRQ_Eint0()
** 函数功能 :外部中断0 EINT0服务程序
** 入口参数 :无。
** 出口参数 :无。
*********************************************************************************************************
*/
int hang=0,xiangshu=0,tuxiang[261];
void __irq IRQ_Eint0 (void)
{
// 等待外部中断信号恢复为高电平
// 若信号保持为低电平,中断标志会一直置位。
EXTINT = 0x01; // 清除EINT0中断标志
/*if(hang)
{
hang=0;
VICIntEnClr= 1 << 15; // 不使能EINT0中断
}
else
{*/
hang++;
VICIntEnable = 1 << 15; // 使能EINT0中断
// }
VICVectAddr = 0; // 向量中断结束
}
/*
*********************************************************************************************************
** 函数名称 :IRQ_Eint1()
** 函数功能 :外部中断1 EINT1服务程序
** 入口参数 :无。
** 出口参数 :无。
*********************************************************************************************************
*/
void __irq IRQ_Eint1 (void)
{ static int i=0;
int temp;
// 等待外部中断信号恢复为高电平
// 若信号保持为低电平,中断标志会一直置位。
// IRQDisable(); // 使能IRQ中断
EXTINT = 0x02; // 清除EINT0中断标志
// T1TCR = 0x01; // 启动定时器
// hang++;
temp=IO0PIN&0x00ff;
tuxiang[xiangshu]=temp;
xiangshu++;
/* if(!(xiangshu%=256))
{
hang=0;
VICIntEnClr= 1 << 15;
}*/
// IRQEnable(); // 使能IRQ中断
VICVectAddr = 0; // 向量中断结束
}
void __irq IRQ_Eint2 (void)
{ static int i=0;
int temp;
// 等待外部中断信号恢复为高电平
// 若信号保持为低电平,中断标志会一直置位。
// IRQDisable(); // 使能IRQ中断
EXTINT = 0x04; // 清除EINT0中断标志
xiangshu=0;
hang=0;
flag=TRUE;
VICIntEnClr= 1 << 15;
VICVectAddr = 0; // 向量中断结束
}
/*
*********************************************************************************************************
** 函数名称 :Exintinit()
** 函数功能 :外部中断初始化
** 入口参数 :无。
** 出口参数 :无。
*********************************************************************************************************
*/
void Exintinit (void)
{
PINSEL1 = 0x00000001; // P0.16连接EINT0
PINSEL0 &=~((3<<(2*14))|(3<<(2*15))); // P0.14连接EINT1
PINSEL0 |=(2<<(2*14))|(2<<(2*15)); // P0.14连接EINT1
// 外部中断0初始化
VICIntSelect = 0x00000000; // 设置所有中断分配为IRQ中断
VICVectCntl0 = 0x20 | 14; // 分配外部中断0到向量中断0
VICVectAddr0 = (uint32)IRQ_Eint0; // 设置中断服务程序地址
VICIntEnable = 1 << 14; // 使能EINT0中断
// VICIntEnClr= 1 << 14; // 不使能EINT1中断
//EXTWAKE = 0x01; // 外部中断0唤醒芯片
EXTINT = 0x01; // 清除EINT0中断标志
// 外部中断1初始化
VICVectCntl1 = 0x20 | 15; // 分配外部中断1到向量中断1
VICVectAddr1 = (uint32)IRQ_Eint1; // 设置中断服务程序地址
// VICIntEnable = 1 << 15; // 使能EINT1中断
VICIntEnClr = 1 << 15; // 不使能EINT1中断
//EXTWAKE = 0x02; // 外部中断1唤醒芯片
EXTINT = 0x02; // 清除EINT1中断标志
// 外部中断2初始化
VICVectCntl2 = 0x20 | 16; // 分配外部中断1到向量中断1
VICVectAddr2 = (uint32)IRQ_Eint2; // 设置中断服务程序地址
// VICIntEnable = 1 << 15; // 使能EINT1中断
VICIntEnable = 1 << 16; // 不使能EINT1中断
//EXTWAKE = 0x02; // 外部中断1唤醒芯片
EXTINT = 0x04; // 清除EINT1中断标志
EXTMODE=(1<<2)|(1<<1)|(1<<0); //EINT0为边沿触发,EINT1为边沿触发
EXTPOLAR=(1<<2)|(1<<1)|(1<<0); //EINT0为上边沿触发,EINT1为上边沿触发
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -