|
/******************************************************************
串口通信:兩塊單片機(jī)之間的按鍵通信,輸入
****************************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;
uchar i,z,x,c,v;
/***************************************************************
延時(shí)函數(shù)
**************************************************************/
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=100;j>0;j--);
}
/***************************************************************
初始化
*****************************************************************/
void inti()
{
TMOD=0x20; //設(shè)置T1定時(shí)器工作方式
TH1=0xfd; //給T1裝初值
TL1=0xfd; //同上
TR1=1; //啟動(dòng)T1定時(shí)器
// REN=1; 先設(shè)置串口模式,再允許串口接收
SM0=0; //設(shè)定串口工作方式1
SM1=1; //同上
REN=1; //允許串口接收
EA=1; //開總中斷
ES=1; //開串口中斷
}
/*****************************************************************
數(shù)據(jù)發(fā)送
****************************************************************/
void Send(unsigned char dat)
{
SBUF=dat;
while(TI==0);
TI=0;
}
/**************************************************************
按鍵掃描
****************************************************************/
void key_scan()
{
if(key1==0)
{
delayms(10);
if(key1==0)
{
Send("z");
delayms(10);
}
}
if(key2==0)
{
delayms(10);
if(key2==0)
{
Send("x");
delayms(10);
}
}
if(key3==0)
{
delayms(10);
if(key3==0)
{
Send("c");
delayms(10);
}
}
if(key4==0)
{
delayms(10);
if(key4==0)
{
Send("v");
delayms(10);
}
}
}
/*************************************************************
主函數(shù)
***************************************************************/
void main()
{
inti();
while(1)
{
key_scan();
}
} |
|