/******************************************************************
* *
* 工作芯片:AT89S52 晶振频率:11.0592MHz *
*
* 描述: *
* *
* 单片机定时发送字符串给主机。 *
* *
******************************************************************/
#include < reg52.h >
#include < intrins.h >
#include < stdio.h >
#define uchar unsigned char
#define uint unsigned int
sbit K1 = P1^4;
sbit K2 = P1^5;
sbit K3 = P1^6;
sbit K4 = P1^7;
/**********************************************************
* *
* 延时函数 *
* *
**********************************************************/
void delay(int ms)
{
uchar i;
while(ms--)
{
for(i=0;i<250;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
//**********************************************************/
main()
{
int a=1;// uchar j;
SCON=0x50; //串口模式1,允许接收
TMOD=0x20; //定时器1为模式2,8-bit 自动装载方式
PCON=0x00; //波特率不倍增
TL1=0xfd;
TH1=0xfd; //波特率9600
TI=1; //TI 置1,以发送第一个字节
TR1=1; //启动定时器 T1
while(1)
{
int i=0;
int s;
if(!K3)
{
delay(50);
while(!K3);
printf (" 生产中"); //向PC机发送数据
a=3;
}
if(!K1 && a==3)
{
delay(50);
while(!K1);
printf (" A "); //向PC机发送数据
++i;
s=s+i;
printf("%d\n",s);
}
if(!K2 && a==3)
{ delay(50); // 延时去抖动
while(!K2); // 等待键释放
printf (" B "); //向PC机发送数据
--i;
s=s+i;
printf("%d\n",s);
}
if(!K4)
{
delay(50);
while(!K4);
a=1;
printf (" 调试中"); //向PC机发送数据
}
}
}