串口收发;
#include <STC15F2K60S2.H>
void SendBye(unsigned char dat);
unsigned char data1;
void init()
{
TH1 = 0xfd;
TL1 = 0xfd;
TMOD = 0x20;
AUXR = 0x00; //???1???Fosc,?1T
SCON = 0x50;
TR1=1;//¶¨Ê±´ò¿ª
ES=1;//ÖжÏ
EA=1;
}
//0¡ª¡ªÍⲿÖжÏ0 1¡ª¡ª¶¨Ê±Æ÷0 2¡ª¡ªÍⲿÖÕ¶Ë1 3¡ª¡ª¶¨Ê±Æ÷1 4¡ª¡ª´®¿ÚÖжÏ
void serbor() interrupt 4
{
if(RI == 1)//½ÓÊÜÍê³É
{
RI=0;
data1 = SBUF;
SendBye(data1);
}
}
void SendBye(unsigned char dat)
{
SBUF = dat;
while(TI==0);//µÈ´ý·¢ËÍÍê³É
TI=0;
}
void main()
{
init();
SendBye(0x5a);
SendBye(0xa5);
while(1)
{
}
}
辅助寄存器 AUXR,要在前面设置为0x00 如果不设置 AUXR的话收不到数据
小蜜蜂的题
#include <STC15F2K60S2.H>
sbit L1 = P0^0;
sbit L2 = P0^1;
sbit L3 = P0^2;
sbit L4 = P0^3;
sbit L5 = P0^4;
sbit L6 = P0^5;
sbit L7 = P0^6;
sbit L8 = P0^7;
unsigned char data1;
unsigned char command = 0x00;
void SendString(unsigned char *str);
void suocun(unsigned char n)
{
switch(n)
{
case 4:P2 = (P2 & 0x1f)|0x80;break;
case 5:P2 = (P2 & 0x1f)|0xa0;break;
case 6:P2 = (P2 & 0x1f)|0xc0;break;
case 7:P2 = (P2 & 0x1f)|0xe0;break;
}
}
void Initsuoyou()
{
suocun(5);
P0=0x00;
suocun(4);
P0=0xff;
}
void init()
{
TMOD = 0x20;
AUXR = 0x00;
SCON = 0x50;
TL1 = 0xfd;
TH1 = 0xfd;
TR1 = 1;
ES = 1;
EA = 1;
}
void Ser0() interrupt 4
{
if(RI == 1)
{
command = SBUF;
RI=0;
}
}
void sendByte(unsigned char Byte)
{
SBUF = Byte;
while(TI==0);
TI=0;
}
void SendString(unsigned char *str)
{
while(*str !='\0')
{
sendByte(*str++);
}
}
void Working()
{
if(command != 0x00)
{
switch(command & 0xf0)
{
case 0xa0:
suocun(4);
if(command & 0x01 ==0x01 )
{
L1=0;
}
command=0x00;break;
case 0xb0:
command=0x00;break;
case 0xc0: SendString("The System mmmmm\r\n");command=0x00; break;
}
}
}
void main()
{
init();
Initsuoyou();
SendString("Welcome to!\r\n");
while(1)
{
Working();
}
}
形成一个指针,来进行数据的发送。
void SendString(unsigned char *str)
{
while(*str !='\0')
{
sendByte(*str++);
}
}
要初始化,要建立发送函数,接受标志位——RI
发送标志位 ——TI --------发送函数然后等待发送完成。
然后就是接收到的数据 ,进行&操作,把高四位提出来。