找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2463|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)接受的數(shù)據(jù)沒(méi)有加一是波特率代碼配置錯(cuò)誤了嗎?

[復(fù)制鏈接]
搶樓 搶樓 本帖為搶樓帖,歡迎搶樓! 
跳轉(zhuǎn)到指定樓層
樓主
ID:418482 發(fā)表于 2018-11-7 21:07 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |閱讀模式
6黑幣
麻煩大家告我一下如何改正
  1. #include<stc12c5a60s2.h>

  2. void configuart(unsigned int baud);

  3. void main()
  4. {
  5.    EA=1;
  6.    configuart(9600);
  7.    while(1);
  8. }
  9. void configuart(unsigned int baud)
  10. {
  11.            PCON|=0X80;
  12.         SCON=0X50;
  13.         TMOD&=0X0F;
  14.         TMOD|=0X20;
  15.         TH1=256-(22118400/12/32)/baud;
  16.         TL1=TH1;
  17.         ET0=0;
  18.         ES=1;
  19.         TR1=1;
  20. }

  21. void interruptuart() interrupt 4
  22. {
  23.       if(RI)
  24.           {
  25.              RI=0;
  26.                  SBUF=SBUF+1;
  27.           }
  28.           if(TI)
  29.           {
  30.              TI=0;
  31.           }
  32. }
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:164602 發(fā)表于 2018-11-8 08:21 | 只看該作者
看你用的是STC12的單片機(jī),你確定它是12分頻的?
可能問(wèn)題就出在這里。
看看STC-ISP下載軟件的波特率計(jì)算器,可以知道:如果你的單片機(jī)是12分頻的,你的計(jì)算就是正確的,如果不是12分頻的,就錯(cuò)了。


這是12分頻的,初值和你計(jì)算的一樣。



這個(gè)是不分頻的,初值和你的計(jì)算結(jié)果就不同了。
回復(fù)

使用道具 舉報(bào)

板凳
ID:94031 發(fā)表于 2018-11-8 09:10 | 只看該作者
SBUF=SBUF+1;用法錯(cuò)誤,應(yīng)該rbuf=SBUF;,rbuf=rbuf+1;
回復(fù)

使用道具 舉報(bào)

地板
ID:149144 發(fā)表于 2018-11-8 09:12 | 只看該作者
怎么又是你,你在做什么東西,做東西不要急,先好好看看數(shù)據(jù)手冊(cè)
configuart(9600); baud = 9600 ?
里面的內(nèi)容發(fā)過(guò)來(lái)
估計(jì)你的 AUXR  沒(méi)有配置
回復(fù)

使用道具 舉報(bào)

5#
ID:418482 發(fā)表于 2018-11-8 12:16 | 只看該作者
xuyaqi 發(fā)表于 2018-11-8 09:10
SBUF=SBUF+1;用法錯(cuò)誤,應(yīng)該rbuf=SBUF;,rbuf=rbuf+1;

這樣不行啊
回復(fù)

使用道具 舉報(bào)

6#
ID:418482 發(fā)表于 2018-11-8 12:17 | 只看該作者
cuihaodianzi 發(fā)表于 2018-11-8 09:12
怎么又是你,你在做什么東西,做東西不要急,先好好看看數(shù)據(jù)手冊(cè)
configuart(9600); baud = 9600 ?
里面 ...

配置了也沒(méi)有用
回復(fù)

使用道具 舉報(bào)

7#
ID:418482 發(fā)表于 2018-11-8 13:06 | 只看該作者
HC6800-ES-V2.0 發(fā)表于 2018-11-8 08:21
看你用的是STC12的單片機(jī),你確定它是12分頻的?
可能問(wèn)題就出在這里。
看看STC-ISP下載軟件的波特率計(jì)算 ...
  1. #include<stc12c5a60s2.h>

  2. //void configuart(unsigned int baud);

  3. void main()
  4. {
  5.    EA=1;
  6.    
  7.    while(1);
  8. }
  9. void configuart()
  10. {
  11.            PCON &= 0x7F;                //波特率不倍速
  12.         SCON = 0x50;                //8位數(shù)據(jù),可變波特率
  13.         AUXR &= 0xBF;                //定時(shí)器1時(shí)鐘為Fosc/12,即12T
  14.         AUXR &= 0xFE;                //串口1選擇定時(shí)器1為波特率發(fā)生器
  15.         TMOD &= 0x0F;                //清除定時(shí)器1模式位
  16.         TMOD |= 0x20;                //設(shè)定定時(shí)器1為8位自動(dòng)重裝方式
  17.         TL1 = 0xFA;                //設(shè)定定時(shí)初值
  18.         TH1 = 0xFA;                //設(shè)定定時(shí)器重裝值
  19.         ET1 = 0;                //禁止定時(shí)器1中斷
  20.         TR1 = 1;
  21. }

  22. void interruptuart() interrupt 4
  23. {
  24.       if(RI)
  25.           {
  26.              RI=0;
  27.                  SBUF=SBUF+1;
  28.           }
  29.           if(TI)
  30.           {
  31.              TI=0;
  32.           }
  33. }
復(fù)制代碼


重新添加了代碼還是不加1 啊
回復(fù)

使用道具 舉報(bào)

8#
ID:123289 發(fā)表于 2018-11-8 13:10 | 只看該作者
你現(xiàn)發(fā)一個(gè),試試。第一個(gè)中斷由誰(shuí)引起呢?
回復(fù)

使用道具 舉報(bào)

9#
ID:418482 發(fā)表于 2018-11-8 13:10 | 只看該作者
xuyaqi 發(fā)表于 2018-11-8 09:10
SBUF=SBUF+1;用法錯(cuò)誤,應(yīng)該rbuf=SBUF;,rbuf=rbuf+1;

這個(gè)代碼也是不行
回復(fù)

使用道具 舉報(bào)

10#
ID:418482 發(fā)表于 2018-11-9 08:32 | 只看該作者
已解決
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表