欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

51單片機串口通信 接收不到返回值

查看數: 5360 | 評論數: 2 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2019-8-17 17:33

正文摘要:

新人第一次提問,如有不足請各位多多包涵~ 單片機型號:STC85C516  晶振:12MHz  波特率:2400 問題描述:在做UART串口通信時 我想實現用電腦給單片機發送一個數字 然后單片機返回這個數字+ ...

回復

ID:601140 發表于 2019-8-18 11:22
wulin 發表于 2019-8-18 07:16
1.沒有STC85C516這個型號,只有STC89C516RD+這個型號。
2.使用12MHz晶振波特率會有誤差,建議使用11.0592M ...

那個單片機型號確實是我打錯了不好意思...非常感謝您的詳細解答!!
ID:213173 發表于 2019-8-18 07:16
1.沒有STC85C516這個型號,只有STC89C516RD+這個型號。
2.使用12MHz晶振波特率會有誤差,建議使用11.0592MHz晶振。
3.串口通訊模塊已經是做在MCU內部的硬件,通過正常配置相應寄存器就能正常工作,不需要像模擬串口那樣寫程序。
4.串口中斷號是interrupt 4, 不是interrupt 3
給你一個測試程序參考
  1. #include <reg52.H>

  2. unsigned char a;//接收緩沖變量

  3. void main()                                                       
  4. {
  5.         TMOD=0x20;        //定時器1方式2(8位自動重載)
  6.         TH1=0xf3;         //波特率2400,12MHz晶振誤差0.16%
  7.         TL1=0xf3;
  8. //        TH1=0xf4;         //波特率2400,11.0592MHz晶振誤差0.00%
  9. //        TL1=0xf4;
  10.         TR1=1;                //開定時器1
  11.         REN=1;                //允許串行接收
  12.         SM0=0;                //設置串口方式1(8位UART波特率可變)
  13.         SM1=1;                //設置串口方式1(8位UART波特率可變)
  14.         EA=1;                        //開總中斷
  15.         ES=1;                        //開串口中斷
  16.         while(1);
  17. }

  18. void UARTInterrupt(void) interrupt 4
  19. {//當接收完成發生中斷請求RI由硬件置1
  20.         RI=0;                        //接收中斷請求標志位必須軟件清0
  21.         a=SBUF;                //保存SBUF接收到的數據
  22.         SBUF=a;                //發送收到的數據
  23.         while(!TI);        //等待發送中斷請求標志位為1
  24.         TI=0;                        //發送中斷請求標志位必須軟件清0
  25. }
復制代碼

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表