村网通总站 姬家寨村 455496.nync.com 欢迎您!
《姬家寨牌激光弦蓝牙古筝》腾讯视频网:
//《姬家寨牌激光弦蓝牙古筝》
// 硬件设计:姬学瑞; 软件编程:姬学瑞;
// 版权所有; 侵权必究!姬家寨村电子科技研究所研制!
#include<reg51.h>
unsigned char a=0x00,b=0x00,c=0x00,t=0;
void UsartConfiguration();
void UsartSend(unsigned char c)
{
SBUF=c;
while(!TI); //等待发送数据完成
TI=0;
}
void main()
{
P1=P2=P3=0XFF;
UsartConfiguration();
while(1)
{
t=a^P1;//xor
t=t&(~a); //and
a=P1;
// t=P1;
if(t&0x01)UsartSend(0x01);
if(t&0x02)UsartSend(0x02);
if(t&0x04)UsartSend(0x03);
if(t&0x08)UsartSend(0x04);
if(t&0x10)UsartSend(0x05);
if(t&0x20)UsartSend(0x06);
if(t&0x40)UsartSend(0x07);
if(t&0x80)UsartSend(0x08);
t=b^P2;// xor
t=t&(~b); //and
b=P2;
if(t&0x01)UsartSend(0x09);
if(t&0x02)UsartSend(0x10);
if(t&0x04)UsartSend(0x11);
if(t&0x08)UsartSend(0x12);
if(t&0x10)UsartSend(0x13);
if(t&0x20)UsartSend(0x14);
if(t&0x40)UsartSend(0x15);
if(t&0x80)UsartSend(0x16);
t=c^P3; //xor
t=t&(~c); //and
c=P3;
if(t&0x08)UsartSend(0x17);
if(t&0x10)UsartSend(0x18);
if(t&0x20)UsartSend(0x19);
if(t&0x40)UsartSend(0x20);
if(t&0x80)UsartSend(0x21);
}
}
/*******************************************************************************
* 函数名 :UsartConfiguration()
* 函数功能 :设置串口
* 输入 : 无
* 输出 : 无
*******************************************************************************/
void UsartConfiguration()
{
SCON=0X50; //设置为工作方式1
TMOD=0X20; //设置计数器工作方式2
PCON=0X80; //波特率加倍
TH1=0Xbf; //计数器初始值设置,这里波特率是2400的 30m晶体震荡
TL1=0Xbf;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1; //打开计数器
}