/**********串口助手下發命令,單片機回傳不同的數據**************/
/**
*時間:2014年3月15日 07:32:22
*作者:寒竹子
**/
#include <reg52.h>
typedef unsigned int uint;
typedef unsigned char uchar;
bit cmdAddrived = 0;//收到下發命令的標志
uchar cmd = 0;//上位機下發的命令
uchar cnt;//發送字節的個數
uchar * sendStr = "";//單片機發送的數據指針
//預定義待發送的數據
uchar * pstr1 = "Welcome to MCU!\n";
uchar * pstr2 = "www*Kingst*odg \n";
uchar * pstr3 = "Welcome to STM-32!\n";
uchar * pstr4 = "www*chuxue123*cdm \n";
void UART_Config(uint baud);
void UART_sendByte(uchar dat);
void UART_sendString(uchar * pstr);
uchar UART_recieved();
void recievedByComputer();
void main()
{
UART_Config(9600);
while (1)
{
recievedByComputer();
}
}
//串口波特率配置
void UART_Config(uint baud)
{
SCON |= 0x50;
/*
SM0 = 0;
SM1 = 1;
REN = 1;
TI = 0;
RI = 0;
*/
TMOD &= 0x0F;//清零T1控制位
TMOD |= 0x20;//T1方式2,八位自動重裝
TH1 = 256-(11059200/12/32/baud);
TL1 = TH1;
TR1 = 1;
}
//send Byte
void UART_sendByte(uchar dat)
{
SBUF = dat;
while (!TI);
TI = 0;
REN = 1;//允許接收
}
//send String
void UART_sendString(uchar * pstr)
{
while (*pstr != '\0')
{
UART_sendByte(*pstr++);
}
}
//recieve
uchar UART_recieved()
{
uchar dat = 0;
if (RI) //接收到數據
{
dat = SBUF;
RI = 0;
REN = 0;//發送數據,禁止接收
}
return (dat);
}
//接收命令并處理
void recievedByComputer()
{
cmd = UART_recieved();
switch (cmd)
{
case 1:
{
UART_sendString(pstr1);
break;
}
case 2:
{
UART_sendString(pstr2);
break;
}
case 3:
{
UART_sendString(pstr3);
break;
}
case 4:
{
UART_sendString(pstr4);
break;
}
default:
break;
}
}