📄 irq.c
字号:
//*****************************************************************************/
// 名称: IRQ
// 描述: C中断模块。
// 日期: 2005/03/27
// 版本: 1.0.0
// writer: lishuhai
//*****************************************************************************/
#include "SPCE061V004.h"
//#include "cbit.h"
void initlcm(void);
void SendByte(char dat);
void SendCMD(unsigned char dat);
void SendDat(unsigned char dat);
void display(char *str);
void dis_12232num(long int b);
extern unsigned int uidata;
extern unsigned int round;
extern unsigned int alltime;
unsigned int dataflag=0,Hdata=0,Ldata=0,onedata=0;
//unsigned int twotime=0;
void IRQ1(void) __attribute__ ((ISR));
void IRQ1(void)
{
//CPL_Bit(P_IOB_Data,Bit9); //用来测试中断
*P_INT_Clear=C_IRQ1_TMA; //clear INT flag
}
void IRQ2(void) __attribute__ ((ISR));
void IRQ2(void)
{
*P_INT_Clear=0x0400;
}
void IRQ3(void) __attribute__ ((ISR));
void IRQ3(void)
{
unsigned int uiDelay;
if(*P_INT_Ctrl&C_IRQ3_EXT1)
{ //IRQ3_Ext1
*P_INT_Clear=C_IRQ3_EXT1;
}
else if(*P_INT_Ctrl&C_IRQ3_EXT2)
{ //IRQ3_Ext2
*P_INT_Clear=C_IRQ3_EXT2;
}
else
{ //IRQ3_KeyWakeUp
*P_INT_Clear=C_IRQ3_KEY;
}
}
void IRQ4(void) __attribute__ ((ISR));
void IRQ4(void)
{
if(*P_INT_Ctrl&C_IRQ4_1KHz) //IRQ4_1024HZ
{
*P_INT_Clear=C_IRQ4_1KHz;
}
if(*P_INT_Ctrl&C_IRQ4_2KHz) //IRQ4_2048HZ
{
*P_INT_Clear=C_IRQ4_2KHz;
}
if(*P_INT_Ctrl&C_IRQ4_4KHz) //IRQ4_4096HZ
{
*P_INT_Clear=C_IRQ4_4KHz;
}
}
void IRQ5(void) __attribute__ ((ISR));
void IRQ5(void)
{
if(*P_INT_Ctrl&0x0004)
{
//IRQ5_2Hz
alltime=alltime+1;
*P_INT_Clear=0x0004;
}
else
{ //IRQ5_4Hz
*P_INT_Clear=0x0008;
}
}
void IRQ6(void) __attribute__ ((ISR));
void IRQ6(void)
{
if(*P_INT_Ctrl&0x0001)
{ //TMB2 Time B
*P_INT_Clear=C_IRQ6_TMB2;
}
else
{ //TMB1 Time A
*P_INT_Clear=C_IRQ6_TMB1;
}
}
void IRQ7(void) __attribute__ ((ISR));
void IRQ7(void)
{
__asm("int off");
Hdata=UartReadByte(); //接收八位
if(dataflag>=1)
{
dataflag=dataflag-1;
if(dataflag==0)
{
Hdata=Hdata&0x00ff; //屏蔽高位(防错码加入)
Hdata=Hdata<<8;
uidata=Hdata|Ldata; //高底位相或得最终的16位数
if(uidata==11)
{
round=1;
}
*P_Watchdog_Clear=0x0001;
SendCMD(0x0001); //清屏
SendCMD(0x82); display("当前坐标值");
SendCMD(0x90); display("X: "); dis_12232num(uidata);
SendCMD(0x94); display("Y: "); dis_12232num(uidata);
onedata=0;
}
Ldata=Hdata&0x00ff; //存底位
}
if(onedata==0)
{
if(Hdata==0x0055) //0x0055为标志数 可改(随发送端)
{
dataflag=2;
onedata=1;
}
}
*P_Watchdog_Clear=0x0001;
__asm("int irq");
}
// void IRQ6(void) __attribute__ ((ISR));
//void IRQ6(void)
//{
// if(*P_INT_Ctrl&0x0001)
// { //TMB2
// g_uiTime2+=1;
// if(g_uiTime2<=64) //g_uiTime2=64----0.5 second
// *P_IOB_Data=0x0000;
// else if(g_uiTime2>128) //g_uiTime2=128-----1 second
// g_uiTime2=0;
// else
// *P_IOB_Data=0x000f;
// *P_INT_Clear=C_IRQ6_TMB2;
// }
// else
// { //TMB1
// g_uiTime1+=1;
// if(g_uiTime1<=64) //g_uiTime1=64----1 second
// *P_IOA_Data=0x0000;
// else if(g_uiTime1>128) //g_uiTime1=128---2 second
// g_uiTime1=0;
// else
// *P_IOA_Data=0x000f;
// *P_INT_Clear=C_IRQ6_TMB1;
// }
//}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -