串口通信方式0 的波特率计算
时间:10-02
整理:3721RD
点击:
下面有一段代码是郭天祥51单片机上面的,我调试了很久在上位机上也没有收到数据,不知道是不是
波特率设置的问题,系统晶振是f=11.0592MHZ,方式0的波特率=f/12,但是这样算出的太大了吧。不知道是什么原因,
希望各位帮忙解答一下!
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- void delayms(uint ms)
- {
- uint i,j;
- for(i=ms;i>0;i--)
- for(j=110;j>0;j--);
- }
- void main()
- {
- SCON = 0x00;
- EA = 1;
- ES = 1;
- TI = 0;
- while(1)
- {
- SBUF = 0xaa;
- delayms(1);
- }
- }
- void ser0()interrupt 4
- {
- TI = 0;
- }
这程序能运行才会有问题,波特率设置在哪边呢
程序没看到设置波特率?
是串口通信方式0,不用设置呀,系统默认就是系统频率f/12.
是串口通信方式0,不用设置呀,系统默认就是系统频率f/12.
你什么单片机啊这么高级
因为我们平时设置的是串口通信方式1所以要设置,现在是方式0.。算了不说这个问题了。
为甚么在上位机发送给单片机数据后,单片机把原数据有发送出来,但是上位机上面接收到的数据有时候会丢失掉,
比如:我发送1234567 上位机上面接收到的可能是123457 或者 124567等等。
发的太快啊,最简单的就是发完一个字节加一个小的延时啊
额,谢谢!
谢谢分享啊