以9600波特率设计一个发送字符串的子程序
发布网友
发布时间:2023-03-26 13:20
我来回答
共1个回答
热心网友
时间:2023-10-21 11:23
//适用于51单片机,在STC单片机上被使用
typedef unsigned char uint8;
typedef unsigned int uint16;
typedef unsigned long uint32;
#define FOSC 18432000L
#define BAUD 9600
void InitUart()
{
SCON = 0x5a; //8 bit data ,no parity bit
TMOD = 0x20; //T1 as 8-bit auto reload
TH1 = TL1 = -(FOSC/12/32/BAUD); //Set Uart baudrate
TR1 = 1; //T1 start running
TI=0;
}
//以字符形式发送数字,如SendNumEx(123),发送字符:"123"
void SendNumEx(uint32 num)
{
uint8 n=0,m=0;
uint32 i=1000000000; //32bit共10位十进制
if(num==0)
{
SendData('0');
return;
}
do{
n=num/i; //获取最高位
if(n)m=1;
if(m) //数字后的数字(包括0)都一概输出,前面的不输出
{
SendData(n+'0');
}
num%=i; //把最高位去掉
i/=10;
}while(i>0);
}
void uPrintStr(uint8 *str) //发送字符串
{
uint8 i=0;
while(str[i]!='\0' && i<255)
{
SendData(str[i]);
i++;
}
return;
}