⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 irq.c

📁 用89c54单片机开发的32键扫描键盘程序。
💻 C
字号:

#pragma large
#include "public.h"
sfr WDT_CONTR = 0xE1;//看门狗
UCHAR xdata gUartRxBuf[UART_RX_SIZE];	//串口接收缓冲区
UCHAR xdata gUartTxBuf[UART_TX_SIZE];	//串口发送缓冲区
unsigned char xdata gUartTxWrite;
unsigned char xdata gUartTxRead;
UCHAR  gUart_Send_Busy;

UCHAR gMainLoopTimeOut;
UINT   gDogCounter;		//看门狗计数器


/*


  中断表	  索引
  /INT0			0
  TIMER0		1
  /INT1			2
  TIMER1		3
  UART			4
  TIMER2		5
  /INT2			6
  /INT3			7




*/


void Timer2Int(void)  interrupt 5  using 0
{
	
}
void Ex0Int(void)  interrupt 0 using 0
{
}
void Ex1Int(void)  interrupt 2  using 0
{
}
void Ex2Int(void)  interrupt 6 using 0
{
}
void Ex3Int(void)  interrupt 7  using 0
{
}





/**************************时钟中断处理函数*******************************
入口参数:	无

出口参数:	无

返 回 值:	无

功    能:	时钟中断处理函数

描    述:  50ms中断一次  公式:初值=65535-921600*s
/**********************************************************************/
void Timer1Int(void)  interrupt 3  using 2
{
    TR1=0;	 //禁止计数
    TH1=0x00;
    TL1=0x0C;
    TR1=1;	 //允许计数
	
    gDogCounter ++ ;

    if(gDogCounter>20)//500ms
    {
		
		gDogCounter=0;
		//主循环超时处理
        if(gMainLoopTimeOut>0)
        	gMainLoopTimeOut --;
		if(gMainLoopTimeOut ==0)  //当程序陷入死循环或跑飞时,进行软件狗复位
		{
			gMainLoopTimeOut = 1;
			return ;
		}
		
        //喂狗
       	WDT_CONTR=0x37;
			if(P3_5==0)
			P3_5=1;
		else
			P3_5=0;	

      
      
    }

}  
/**************************用户串口中断处理函数*******************************
入口参数:	无

出口参数:	无

返 回 值:	无

功    能:	用户串口中断处理函数

描    述:
/**********************************************************************/
void SerialDte(void) interrupt 4 using 1
{
	UCHAR  ch;

	//UCHAR  ch;
	if(RI==1)
	{
		
			ch=SBUF&0x7f;
		
		
        RI=0;
	}
    if(TI==1)
    {
		/*if(gUartTxRead!=gUartTxWrite)
		{
			gUartTxRead=gUartTxRead+1;
			gUartTxRead%=UART_TX_SIZE;
			SBUF=gUartTxBuf[gUartTxRead];    //发送一个字符后设置标志位空闲在主循环中进行发送
		}*/
        TI=0;
    }
}


unsigned char WriteTxBuf(unsigned char mData)
{
	gUartTxWrite=gUartTxWrite+1;
	gUartTxWrite%=UART_TX_SIZE;
	gUartTxBuf[gUartTxWrite]=mData;
	//if(TI==1)
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -