單片機代碼:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED = P2^7;
uchar flag = 0;
uchar index = 0;
uchar data c[100];
void Delay_ms(uint n)
{
uchar i;
while(n--)
for(i = 0;i < 120;i++);
}
void Send_string(uchar *c)
{
while(*c != '!')
{
SBUF=*c;
c++;
while(TI==0);
TI=0;
}
}
void main()
{
SCON=0x50; //串口模式1,允許接收
TMOD=0x20; //T1作業模式2
TH1=0xF3; //波特率4800
TL1=0xF3;
PCON=0x80; //波特率倍增
EA = 1;//開總中斷
ES = 1;//開串口中斷
TR1=1;//開定時器1中斷
while(1)
{
if((SBUF == '!')&&(flag == 1))
{
Send_string(c);
LED = ~LED;
index = 0;
flag = 0;
}
/*
需要理解雖然 讀取SBUF和寫入SBUF所用的SBUF是不同的,這里可以理解為有兩個SBUF,
一個SBUF_read和一個SBUF_write,當往SBUF中寫資料時SBUF_read不變,
*/
}
}
//串口接收中斷函式
void Serial_INT() interrupt 4
{
if(RI==0) return;
ES=0; //關閉串口中斷
RI=0; //清接收中斷標志
c[index++]=SBUF;
if(SBUF == '!')
flag = 1;
ES=1;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/281716.html
標籤:其他
