十六进制 HEX /hexadecimal /ˌheksəˈdesɪml/
十进制 DEC /decimalism /'desiməlizəm/
二进制 BIN /binary /ˈbaɪnəri/
八进制 OCT /octonary /ˈɒktənəri/
波特率计算:
串口向电脑发送数据:
#include <REGX52.H>
void Delayms(unsigned int time);
void UartInit(void);
void UART_SendByte(unsigned char Byte);
main(){
unsigned char Sec;
UartInit();
while(1){
UART_SendByte(Sec);
Sec++;
Delayms(1000);
}
}
#include <REGX52.H>
/**
* @brief 串口初始化,4800bps@11.0592MHz
* @param
* @retval
*/
void UartInit(void) //4800bps@11.0592MHz
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x40; //8位数据,可变波特率
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xF4; //设定定时初值
TH1 = 0xF4; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}
/**
* @brief 像串口发送一个字节的数据
* @param Byte要发送的数据
* @retval
*/
void UART_SendByte(unsigned char Byte){
SBUF=Byte;//写入即可自动发出;
while(TI==0);//检测是否发出,发出则为1;
TI=0; //重置;
}
串口接收数据,并返回
#include <REGX52.H>
void UartInit(void);
void UART_SendByte(unsigned char Byte);
main(){
UartInit();
while(1){
}
}
void Uart_Routine() interrupt 4{
if(RI==1){ //保证当单片机接收数据时执行
P2=SBUF;
UART_SendByte(SBUF);//单片机返回接收的数据
RI=0;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)