51单片机晶振选用12M,串口通信波特率用9600,我想问下怎么才能 串口打印 0x55呢
我是新手大家帮下忙阿555谁能帮我写下详细的代码救命~~那具体应该怎么写阿能帮我写具体的代码吗?谢谢了...
我是新手 大家帮下忙阿 555
谁能帮我写下详细的代码 救命~~
那具体应该怎么写阿 能帮我写具体的代码吗? 谢谢了 展开
谁能帮我写下详细的代码 救命~~
那具体应该怎么写阿 能帮我写具体的代码吗? 谢谢了 展开
4个回答
展开全部
12M晶振不能输出9600的波特率;
12M晶振只能输出1200的波特率,有少量误差,不过不影响使用。
#include<reg52.h>
#include<intrins.h>
void Uart0_transmit(unsigned char i) //向串口发送一个字节
{
ES=0;
TI=0;
SBUF=i; // 发送数据到uart0
while (!TI); / 等待发送1个字节数据完成
TI=0 ; // 清除中断标志
ES=1;
}
void delay_ms()
{
int i,j;
for(i=1000;i>0;i--) {
for(j=25;j>0;j--) {;}
}
}
void SysInit(void)
{
PCON |=0x80;
SCON=0x50;
TMOD=0x21;
TH1=204;
TL1=204;
TR1=1;
ES=0;
TH0=0xB8;
TL0=0x00;
TR0=1;
ET0=1;
}
void main (void)
{
SysInit();
while (1)
}
Uart0_transmit(0x55);
delay_ms;
}
}
//应该可以了,你稍微调试一下。刚写的
12M晶振只能输出1200的波特率,有少量误差,不过不影响使用。
#include<reg52.h>
#include<intrins.h>
void Uart0_transmit(unsigned char i) //向串口发送一个字节
{
ES=0;
TI=0;
SBUF=i; // 发送数据到uart0
while (!TI); / 等待发送1个字节数据完成
TI=0 ; // 清除中断标志
ES=1;
}
void delay_ms()
{
int i,j;
for(i=1000;i>0;i--) {
for(j=25;j>0;j--) {;}
}
}
void SysInit(void)
{
PCON |=0x80;
SCON=0x50;
TMOD=0x21;
TH1=204;
TL1=204;
TR1=1;
ES=0;
TH0=0xB8;
TL0=0x00;
TR0=1;
ET0=1;
}
void main (void)
{
SysInit();
while (1)
}
Uart0_transmit(0x55);
delay_ms;
}
}
//应该可以了,你稍微调试一下。刚写的
展开全部
12M通信不标准,要用11.0592M的晶振才能有标准的9600波特,设置好波特率后送到SBUF里发送就行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
TH1=204;
TL1=204;
改为
TH1=230;
TL1=230;
此时波特率为1200
TL1=204;
改为
TH1=230;
TL1=230;
此时波特率为1200
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
mov sbuf,#55H就好了,它会自动把55H发送出去。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |