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

QQ登錄

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

搜索
查看: 3490|回復(fù): 2
收起左側(cè)

程序在STC89C52RC單片機(jī)上不能運(yùn)行

[復(fù)制鏈接]
ID:208322 發(fā)表于 2017-6-16 17:02 | 顯示全部樓層 |閱讀模式
用藍(lán)牙模塊通信,和開(kāi)發(fā)學(xué)習(xí)板。板子和單片機(jī)都沒(méi)有壞。燒錄也成功了。RXT對(duì)的單片機(jī)的RXT,TXD對(duì)單片機(jī)的TDXD.ER腳通了VCC的電。用KEil模擬仿真,手機(jī)可以的到Success.
可是換成RXD對(duì)單片機(jī)的RTXD.TXD對(duì)單片機(jī)的RXD.仿真也沒(méi)有數(shù)據(jù)是怎么回事?
剛自學(xué)。不知道那有問(wèn)題。求教各位大神
  1. #include "reg52.h"
  2. #include "intrins.h"

  3. unsigned char SenData,Flag;

  4. char code str1[]="Success";
  5. char code str2[]="Error";

  6. void send_str();
  7. void InitUART(void);
  8. void send_str2();
  9. void delayms(unsigned char ms);
  10. void send_char(unsigned char txd);

  11. void InitUART(void)
  12. {
  13. /*******************設(shè)定串口**********************/
  14. SCON=0x50;                        //設(shè)置為工作方式1
  15. TMOD=0x20;                        //設(shè)置計(jì)數(shù)器工作方式2
  16. PCON =0x80;                        //波特率加倍
  17. TH1=0xFA;                                //計(jì)數(shù)器初始值設(shè)置,注意波特率是9600的
  18. TL1=TH1;
  19. ES=1;                                                //打開(kāi)接收中斷
  20. EA=1;                                                //打開(kāi)總中斷
  21. TR1=1;                                        //打開(kāi)計(jì)數(shù)器
  22. /******************設(shè)定中斷**********************/
  23. }
  24. void main()  //主函數(shù)
  25. {        
  26. InitUART();
  27. while(1){
  28. if(Flag==1)
  29. {
  30. ES = 0;
  31. delayms(50);
  32. //----------------------該段即對(duì)接收的數(shù)據(jù)進(jìn)行處理
  33. if(SenData==97)//97為字符a的ascii
  34. {
  35. delayms(10);//延時(shí)去抖動(dòng)
  36. send_str();//發(fā)送數(shù)據(jù)
  37. }
  38. else
  39. {
  40. delayms(10);
  41. send_str2();
  42. }
  43. Flag=0;//數(shù)據(jù)處理完畢后將標(biāo)志位置0,表示沒(méi)有新數(shù)據(jù)要處理
  44. }
  45. ES = 1;
  46. }
  47. }

  48. void ser_int()interrupt 4//接收字符串
  49. {  

  50. if(RI==1)//RI接受中斷標(biāo)志
  51. {
  52. SenData = SBUF ;
  53. RI=0;//清除標(biāo)志.
  54. Flag =1;//標(biāo)志位置1表示有新數(shù)據(jù)進(jìn)來(lái)
  55. }
  56. else
  57. TI = 0;
  58. }


  59. void send_str()//發(fā)送字串
  60. {
  61. unsigned char i=0;
  62. while(str1[ i]!='\0')
  63. {
  64. SBUF =str1[ i];
  65. while(!TI);//等待數(shù)據(jù)傳送
  66. TI=0;//清除數(shù)據(jù)傳輸標(biāo)志
  67. i++;//下一個(gè)字符串
  68. }
  69. }

  70. void send_str2()//發(fā)送字串
  71. {
  72. unsigned char i=0;
  73. while(str2[ i]!='\0')
  74. {
  75. SBUF =str2[ i];
  76. while(!TI);//等待數(shù)據(jù)傳送
  77. TI=0;//清除數(shù)據(jù)傳輸標(biāo)志
  78. i++;//下一個(gè)字符串
  79. }
  80. }



  81. void delayms( unsigned char ms)//延時(shí)子程序
  82. {
  83. unsigned char i;
  84. while(ms--)
  85. {
  86. for(i=0;i<120;i++);
  87. }
  88. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

ID:140371 發(fā)表于 2017-6-17 11:02 | 顯示全部樓層
最少這裡SBUF =str1;SBUF =str2;要改成 SBUF =str1[];SBUF =str2[i];

評(píng)分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:164602 發(fā)表于 2017-6-17 15:18 | 顯示全部樓層
“用藍(lán)牙模塊通信,和開(kāi)發(fā)學(xué)習(xí)板。板子和單片機(jī)都沒(méi)有壞。燒錄也成功了。RXT對(duì)的單片機(jī)的RXT,TXD對(duì)單片機(jī)的TDXD.ER腳通了VCC的電!
你說(shuō)的。程序我就不看了,因?yàn)檫@里錯(cuò)了。核{(lán)牙RXT是接收端,那么就應(yīng)該對(duì)應(yīng)單片機(jī)發(fā)送端TXD,同理,藍(lán)牙TXD發(fā)送端應(yīng)該對(duì)應(yīng)單片機(jī)接收端。
1.jpg

評(píng)分

參與人數(shù) 1黑幣 +60 收起 理由
admin + 60 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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