久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: MAX6675測(cè)溫?cái)?shù)據(jù)發(fā)送串口單片機(jī)程序求助,有8處警告 [打印本頁(yè)]

作者: 新手啊啊啊啊    時(shí)間: 2019-1-22 17:25
標(biāo)題: MAX6675測(cè)溫?cái)?shù)據(jù)發(fā)送串口單片機(jī)程序求助,有8處警告


單片機(jī)源碼:
  1. #include<reg52.h>
  2. #include "intrins.h"//_nop_()延時(shí)函數(shù)使用
  3. typedef unsigned char uchar;
  4. typedef unsigned int uint;
  5. extern uchar lowEightBit[2],highEightBit[2];        /*用于存儲(chǔ) 2 個(gè)通道的數(shù)據(jù),每個(gè)通道兩個(gè)字節(jié)*/
  6. sbit SO=P0^0; //P0.0 口與 SO 相連
  7. sbit CS=P1^0; //P1.0 口與 CS 相連
  8. sbit SCK=P0^1; //P0.1 口與 SCK 相連
  9. sbit SO_TWO=P0^2; //P0.2 口與 SO 相連
  10. sbit CS_TWO=P1^1; //P1.1 口與 CS 相連
  11. sbit SCK_TWO=P0^3; //P0.3 口與 SCK 相連
  12. uint temperatureDetectionOne();
  13. uint temperatureDetectionTwo();
  14. void ConfigUART(unsigned int baud);
  15. void mdelay(unsigned int xms);
  16. void send_byte(unsigned char c); /*發(fā)送單個(gè)字符*/
  17. void send_str(unsigned char *str);/*發(fā)送單字符串*/
  18. unsigned int j;
  19. unsigned int i;
  20. unsigned int n;
  21. unsigned char *start = "lzh";

  22. void main()//主程序
  23. {
  24. EA = 1; //使能總中斷
  25. ConfigUART(9600); //配置波特率為 9600
  26. while(1)
  27. {
  28. for(j=250;j>0;j--)
  29. {
  30. if(j==250)
  31. { /*依次進(jìn)行 10 個(gè)通道數(shù)據(jù)的采集,每隔一秒采集一
  32. 次*/
  33. temperatureDetectionOne();
  34. temperatureDetectionTwo();
  35. }
  36. mdelay(4); //延時(shí),1s 采集一次,更新溫度數(shù)據(jù)
  37. }
  38. }
  39. }
  40. void ConfigUART(unsigned int baud)
  41. {
  42. SCON = 0x50; //配置串口為模式 1
  43. TMOD &= 0x0F; //清零 T1 的控制位
  44. TMOD |= 0x20; //配置 T1 為模式 2
  45. TH1 = 256 - (11059200/12/32)/baud; //計(jì)算 T1 重載值
  46. TL1 = TH1; //初值等于重載值
  47. ET1 = 0; //禁止 T1 中斷
  48. ES = 1; //使能串口中斷
  49. TR1 = 1; //啟動(dòng) T1
  50. }

  51. uint temperatureDetectionOne() //熱電偶數(shù)據(jù)讀取,返回溫度
  52. {
  53. uchar i;
  54. unsigned long Temp_2;
  55. Temp_2=0;
  56. CS=1;
  57. SCK=0; _nop_(); _nop_();
  58. //這個(gè)_nop_()等效與匯編里面的 NOP 指令,也就是空一個(gè)機(jī)器周期,
  59. //在 51 單片機(jī)中_nop_()等于空 12 個(gè)時(shí)鐘周期【即一個(gè)機(jī)器周期】
  60. CS=0;
  61. for(i=0;i<16;i++)//16 位數(shù)據(jù)讀取
  62. {
  63. Temp_2<<=1;//向左移一位
  64. _nop_();
  65. SCK=1;//上升
  66. if(SO==1)
  67. {Temp_2=Temp_2|0x01;}
  68. else
  69. Temp_2=Temp_2|0x00; _nop_();
  70. SCK=0; _nop_();
  71. }
  72. CS=1; //讀取完后對(duì) CS 置 1 進(jìn)行溫度轉(zhuǎn)換!MAX6675 的
  73. /*熱電偶斷開*/
  74. if((Temp_2>>2)&(0x01) || Temp_2 == 0x1fff)
  75. {
  76. Temp_2 = 0x0000;
  77. }
  78. else /*正常*/
  79. {
  80. Temp_2=Temp_2<<1;
  81. Temp_2=Temp_2>>4;
  82. }
  83. lowEightBit[0] = Temp_2 & (0xff);
  84. highEightBit[0] = (Temp_2>>8)&(0xff);
  85. Temp_2=Temp_2*100/4; //變換為溫度值--每 LSB 代表 0.25 度,注意:在此處先
  86. return(Temp_2);
  87. }

  88. uint temperatureDetectionTwo()
  89. {
  90. uchar i;
  91. unsigned long Temp_2;
  92. Temp_2=0;
  93. CS_TWO=1;
  94. SCK_TWO=0; _nop_(); _nop_();
  95. CS_TWO=0;
  96. for(i=0;i<16;i++)
  97. {
  98. Temp_2<<=1; _nop_();
  99. SCK_TWO=1;
  100. if(SO_TWO==1)
  101. {Temp_2=Temp_2|0x01;}
  102. else
  103. Temp_2=Temp_2|0x00; _nop_();
  104. SCK_TWO=0; _nop_();
  105. }
  106. CS_TWO=1;
  107. /*熱電偶斷開*/
  108. if((Temp_2>>2)&(0x01) || Temp_2 == 0x1fff)
  109. {
  110. Temp_2 = 0x0000;
  111. }
  112. else /*正常*/
  113. {
  114. Temp_2=Temp_2<<1;
  115. Temp_2=Temp_2>>4;
  116. }
  117. lowEightBit[1] = Temp_2 & (0xff);
  118. highEightBit[1] = (Temp_2>>8)&(0xff);
  119. Temp_2=Temp_2*100/4;
  120. return(Temp_2);
  121. }

  122. void mdelay(unsigned int xms)
  123. {
  124. unsigned i,j;
  125. for(i=xms;i>0;i--)
  126. for(j=112;j>0;j--);
  127. }

  128. void InterruptUART() interrupt 4
  129. {
  130. if(RI)
  131. {
  132. RI = 0;
  133. send_str(start); //發(fā)送頭
  134. for(n =0;n<2;n++) //發(fā)送 2 個(gè)通道的數(shù)據(jù)
  135. {
  136. SBUF = lowEightBit[n];
  137. while(!TI);
  138. TI = 0;
  139. SBUF = highEightBit[n];
  140. while(!TI);
  141. TI = 0;
  142. }
  143. SBUF = 'e'; //發(fā)送尾
  144. }
  145. if(TI)
  146. {
  147. TI = 0;
  148. }
  149. }

  150. void send_byte(unsigned char c)
  151. {
  152. SBUF=c;
  153. while(!TI);//等待發(fā)送完數(shù)據(jù)
  154. TI=0;
  155. }

  156. void send_str(unsigned char *str)
  157. {
  158. while(*str!='\0')
  159. {
  160. send_byte(*str);
  161. str++;
  162. }
  163. }
復(fù)制代碼

作者: 新手啊啊啊啊    時(shí)間: 2019-1-22 17:26
有8處警告。。全是loweightbit higheightbit,到底是定義數(shù)組出了問(wèn)題還是下面引用出了問(wèn)題呢?
作者: 新手啊啊啊啊    時(shí)間: 2019-1-22 17:28
8處警告。。全是loweightbit 和 higheightbit ,到底是定義數(shù)組出了問(wèn)題還是下面引用出了問(wèn)題呢?  上面是整個(gè)程序,是用兩個(gè)6675芯片實(shí)現(xiàn)測(cè)溫,然后把數(shù)據(jù)傳到串口的功能,有大佬幫忙看看哪里有問(wèn)題嗎?
作者: weidoit    時(shí)間: 2019-1-23 11:54
本帖最后由 weidoit 于 2019-1-23 13:09 編輯

//extern uchar lowEightBit[2],highEightBit[2];        /*用于存儲(chǔ) 2 個(gè)通道的數(shù)據(jù),每個(gè)通道兩個(gè)字節(jié)*/  
/*第5行去掉  extern */
uchar lowEightBit[2],highEightBit[2];        /*用于存儲(chǔ) 2 個(gè)通道的數(shù)據(jù),每個(gè)通道兩個(gè)字節(jié)*/Keil編譯通過(guò),Proteus 仿真如圖。

0x 02 00>>2 = 0x80= 128(DEC)   0x0200%0x04=0    0/4=0
0x 02 05>>2 = 0x81= 129 (DEC)    0x0205%0x04=1    1/4=0.25   129+0.25=129.25



作者: wulin    時(shí)間: 2019-1-23 13:42
新手啊啊啊啊 發(fā)表于 2019-1-22 17:28
8處警告。。全是loweightbit 和 higheightbit ,到底是定義數(shù)組出了問(wèn)題還是下面引用出了問(wèn)題呢?  上面是 ...

extern uchar lowEightBit[2],highEightBit[2];//多了extern




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 午夜极品 | 国产精品亚洲一区二区三区在线观看 | 欧美成人第一页 | 九九九久久国产免费 | 亚洲国产成人av好男人在线观看 | aaa在线| 欧美日韩国产在线观看 | 欧美一区二区在线 | 99国产精品久久久 | 国产精品永久免费视频 | 日韩高清国产一区在线 | 91资源在线| 国产精品视频区 | 日本三级日产三级国产三级 | 欧美极品在线 | 久久久久亚洲精品国产 | 欧美在线二区 | 国产精品视频网址 | 国产精品久久久av | 久久精品综合 | 婷婷五月色综合香五月 | 欧美一区二区三区久久精品视 | 日韩在线电影 | 欧美v片 | 97精品国产手机 | 日韩欧美在线不卡 | av一区二区三区在线观看 | 黄色成人在线 | 欧美一区二区三区在线观看视频 | 国产精品一区久久久 | 日本免费一区二区三区 | 亚洲视频免费 | 国产精品1区 | 成人永久免费视频 | 欧美日韩视频在线第一区 | 国产91色在线 | 亚洲 | 少妇一区二区三区 | 日韩福利视频 | 国产一区二区三区四区 | com.国产| 一本一道久久a久久精品蜜桃 |