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

📄 main.c

📁 芯片at89s52
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                           西南科技大学计算机科学与技术学院										   *
**                                    嵌入式研究实验室												   *
**                                                                       							   *
**                             http://www.cs.swust.edu.cn											   *
**                              																	   *
**																									   *
** file    name   : test.c																			   *
** creat   date   : 2007年7月13日																	   *
** correct date   : 																				   *
** description    : 																				   *
**                : 																				   *
**                : 																				   *
** version        : 																				   *
** designed by    : 																				   *
;**---------------------------------------------------------------------------------------------------*/


/******************************
 *      Head File			  *
 *****************************/
 #include"KeyBord\key.h"
 #include"LCD\lcd.h"
 #include"COM\comm.h"
 #include"PS2KeyBord\PS2KeyBord.h"
/******************************
 *     Macros Segment		  *
 *****************************/

/******************************
 *     Global Variable		  *
 *****************************/
 int timecount=0; 
 
 /*uchar g_ucPSkeydata = 0x00;  
 uchar ucRecBuf_ptr=0x00;
 uchar ucRecBuf[11];
 uchar cntOddNum = 0x00;
 
 //extern void Int0_init_PSkeybord(void);
 //extern void GetData(void);
 //extern void DataReceive(void); 
 //extern uchar PSkeydata_value(void);


 void Int0_init_PSkeybord(void)
{
	TMOD = 0x01; //选择定时/计数器0,做定时器用,选择模式1,THx和TLx构成全16位计数器
	TL0 = 0x00;	//定时器中断时间为2.5ms
	TH0 = 0xee; //65536 - 0.0025/(12/22118400)=X,反解求出
	TR0 = 0x01;	//开启定时器0
	IE = 0x83;	//允许全局中断,允许定时器/计数器0溢出中断
	PT1 = 0x00;
	PX0 = 0x01;

}
uchar oddCheck(void)
{
	uchar tmp;
	for(tmp=0;tmp<9;tmp++)
	{
		if(ucRecBuf[tmp+1]==0x01)
			cntOddNum++;
	}
	if(cntOddNum%2 == 1)
		return 0x01;
	else return 0x00;
}  
 void GetData(void)
{ 	
	uchar tmp,tmp2;
	if(oddCheck())
	{
		tmp2 = g_ucPSkeydata;
		g_ucPSkeydata = 0x00;
		for(tmp=0;tmp<0x08;tmp++)
		{  
			g_ucPSkeydata |= ucRecBuf[tmp+1]<<tmp;		
		}
		if(g_ucPSkeydata == 0xf0)
			g_ucPSkeydata = tmp2;		
	} 	
}
void DataReceive(void)
{	
	if(ucRecBuf_ptr<=0x0a)
	{  	
	   if(P3_2 == 0)	   
	   {
	   		ucRecBuf[ucRecBuf_ptr] = P3_7; 
	   		ucRecBuf_ptr++;
	   }
	   
	}
	else
	{
		GetData();	
		ucRecBuf_ptr = 0x00;
	} 		
  
} */

/******************************
 *	   Const Segment		  *
 *****************************/

/******************************
 *     Function Declaration	  *
 *****************************/
  void Timer0_init(void);
  void Device_init(void); 
  void Int0_init(void); 

  

/******************************
 *	   Const Segment          *
 *****************************/

/******************************
 *      Function  Implement   *
 *****************************/


/*******************************************************************************
Function Name:	接收键盘数据函数											   * 
Input  Parameter :															   *
Output Parameter :															   *
Function Description :	11位数据保存在缓冲区中								   *
*******************************************************************************/

/**********************************************************************************************
主函数 																						  *
**********************************************************************************************/
void main(void)
{  	
	Device_init();
	
	P0=0x71;
	P1=0x88;			
	while (1) //循环发送
	{  	 
	   
	}  
}

/**********************************************************************************************
Function Name:定时器0中断函数																  *
Target : 定时器中断并产生相应功能															  *
Input  Parameter : 无																		  *
Output Parameter : 无																		  *
Function Description : 间隔2.5ms产生一次中断												  *
**********************************************************************************************/
void Device_init(void)
{
	Timer0_init();
	Int0_init();
	P0 = 0xff;
    P1 = 0xff;
    P2 = 0xff;
    P3 = 0xff; 
   // Comm_init();
} 
/**********************************************************************************************
Function Name:定时器0初始化函数																  *
Target : 设置定时器工作模式,定时时间														  *
Input  Parameter : 无																		  *
Output Parameter : 无																		  *
Function Description : 1、 设置定时器0为定时器模式,开启中断,中断时间2.5ms					  *
**********************************************************************************************/
void Timer0_init(void)
{
	TMOD = 0x01; //选择定时/计数器0,做定时器用,选择模式1,THx和TLx构成全16位计数器
	TL0 = 0x00;	//定时器中断时间为2.5ms
	TH0 = 0xee; //65536 - 0.0025/(12/22118400)=X,反解求出
	TR0 = 0x01;	//开启定时器0
	EA = 0x01;	//允许全局中断,允许定时器/计数器0溢出中断	
	ET0 = 0x01;
} 

/*******************************************************************************
Function Name:	中断0 处理函数												   *
Target :																	   *
Input  Parameter :															   *
Output Parameter :															   *
Function Description : 														   *
*******************************************************************************/
void initt(void)interrupt 0
{
	DataReceive();
}  
/**********************************************************************************************
Function Name:定时器0中断函数																  *
Target : 定时器中断并产生相应功能															  *
Input  Parameter : 无																		  *
Output Parameter : 无																		  *
Function Description : 间隔2.5ms产生一次中断												  *
**********************************************************************************************/
void timer0(void)interrupt 1
{ 
	//DisPrint(PSkeydata_value());
//	DisPrint(g_ucPSkeydata);
	//ledScan();			
	TL0 = 0x00;//2.5ms		 
	TH0 = 0xee;	
}

/*******************************************************************************
Function Name:	中断0初始化函数												   *
Target :	设置中断0的允许位和优先级										   *
Input  Parameter :															   *
Output Parameter :															   *
Function Description :														   *
*******************************************************************************/
void Int0_init(void)
{
	//Int0_init_PSkeybord();	 
}

/*******************************************************************************
 *                        The end of the entire file			               *
 ******************************************************************************/
 
   

⌨️ 快捷键说明

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