📄 main.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 + -