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

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

QQ登錄

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

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

新人關(guān)于PC與單片機(jī)開(kāi)發(fā)板的串口通信問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:210889 發(fā)表于 2017-6-19 11:32 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
自己參照了教程例子,用串口調(diào)試助手完成了發(fā)送1,2,3數(shù)據(jù)分別控制led亮,流水燈功能,呼吸燈功能.
然后我想再結(jié)合開(kāi)發(fā)板按鍵上的控制上面三個(gè)功能的程序,整合到一起. 整合后發(fā)現(xiàn)只能實(shí)現(xiàn)串口調(diào)試助手發(fā)送數(shù)據(jù)(助手也能正常顯示接受數(shù)據(jù)),
按鍵部分就沒(méi)反應(yīng)了.  下面程序, 不知道是我自己編寫(xiě)邏輯有錯(cuò)還是什么,望人指點(diǎn)一下.

  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit S1=P3^5;
  6. sbit S2=P3^4;
  7. sbit S3=P3^3;
  8. sbit S4=P3^2;
  9. sbit led1=P1^0;
  10. sbit led2=P1^1;
  11. sbit led3=P1^2;
  12. sbit led4=P1^3;
  13. uchar aa=0xfe,num = 0,a;
  14. uchar i = 0,j = 0,k = 0,t = 0;
  15. void delay(unsigned int t)        ;
  16. void delay2(unsigned int z);
  17. void keyscan();
  18. void initial_com();



  19. void initial_com()
  20. {
  21. //SCON = 0x50;
  22. TMOD|= 0x20;
  23. TH1 = 0xfd;
  24. TL1 = 0xfd;

  25. TR1 = 1;
  26. REN = 1;
  27. SM0 = 0;
  28. SM1 = 1;
  29. EA = 1;
  30. ES = 0;   //允許串口中斷
  31. SBUF = 0x01;
  32. while(!TI);
  33. TI = 0;   //串口中斷  
  34. ES = 1;

  35. }

  36. void keyscan()                          //掃描按鍵程序
  37. {
  38.   if(S1==0)
  39.    {
  40.      delay(5);
  41.          if(S1==0)
  42.          {
  43.            i++;
  44.           }
  45.           while(!S1);
  46.           delay(5);
  47.           while(!S1);
  48.         }
  49.         
  50.         if(S2==0)
  51.    {
  52.      delay(5);
  53.          if(S2==0)
  54.          {
  55.            j++;
  56.           }
  57.           while(!S2);
  58.           delay(5);
  59.           while(!S2);
  60.         }
  61.         
  62.         if(S3==0)
  63.    {
  64.      delay(5);
  65.          if(S3==0)
  66.          {
  67.            k++;
  68.           }
  69.           while(!S3);
  70.           delay(5);
  71.           while(!S3);
  72.         }
  73.         
  74.         if(S4==0)
  75.    {
  76.      delay(5);
  77.          if(S4==0)
  78.          {
  79.            t++;
  80.           }
  81.           while(!S4);
  82.           delay(5);
  83.           while(!S4);
  84.         }
  85.         
  86. }

  87. void delay(unsigned int t)
  88. {
  89.   unsigned int x,y;
  90.   for(x=t;x>0;x--)
  91.   for(y=110;y>0;y--);
  92. }
  93. void delay2(unsigned int z)
  94. {
  95.   while(--z);
  96. }
  97. void main()
  98. { //P1=0xff;
  99.   unsigned int CYCLE=600,PWM_LOW=0;//定義周期(呼吸燈部分)
  100.   // aa = 0xfe;
  101.    initial_com();
  102.    while(1)
  103.    {
  104.     if(num==1)
  105.     {
  106.      ES = 0;
  107.          num = 0;
  108.          SBUF = a;
  109.          SBUF = i;
  110.          while(!TI);
  111.          TI = 0;
  112.          ES = 1;
  113.     }




  114.         }
  115. }

  116. void ser() interrupt 4
  117. {
  118. unsigned   int CYCLE=600,PWM_LOW=0;
  119.         keyscan();
  120.         RI=0;
  121. //        P1=SBUF;                        //接收數(shù)據(jù)SBUF,即將計(jì)算機(jī)的數(shù)據(jù)接收。
  122.     i = SBUF;
  123.         a=SBUF;
  124. //        ledoff=SBUF;
  125.         num=1;
  126.         //aa=0xfe;
  127. /*****************呼吸燈部分*******************/
  128.         if(a == 0x03)
  129.         {  
  130.                  while (1) //主循環(huán)
  131.   { //keyscan();
  132.   //if(S1==0)
  133. // {
  134.    // delay(5);
  135. //        if(S1==0)
  136. //        {
  137. led1=1;
  138. delay2(150000);                           
  139. for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)//PWM_LOW表示低電平時(shí)間
  140. {

  141. led1=0; //點(diǎn)亮LED
  142. delay2(PWM_LOW)
  143. led1=1; //熄滅LED
  144. delay2(CYCLE-PWM_LOW)

  145. }
  146. //LED0=0;
  147. for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)


  148. led1=0;
  149. delay2(PWM_LOW);
  150. led1=1;
  151. delay2(CYCLE-PWM_LOW);

  152.           }
  153.         }
  154. }        
  155. /*****控制燈******/
  156.         if(a == 0x01)
  157.         {         
  158.                  P1 = aa;        
  159.            delay(100);
  160.                  aa = _crol_(aa,1);
  161.         }
  162.         if(a == 0x00)
  163.         {
  164.           P1 = 0xff;
  165.         }
  166.              /**************流水燈部分****************/
  167.            if(a == 0x02) //偶數(shù)整除等于,按鍵在        偶次數(shù)才觸發(fā)流水燈
  168.           {
  169.         P1=aa;;  
  170.         delay(500);  
  171.         aa=_crol_(aa,1);
  172.                 }
  173. /*************按鍵控制部分,是不是我不應(yīng)該寫(xiě)在這個(gè)中斷里面???寫(xiě)在主函數(shù)上也是沒(méi)反應(yīng)***************/         
  174.   if(i==1)
  175.     {
  176.       delay(5);
  177.           if(i==1)
  178.         {
  179.            led1= 0;
  180.            }
  181.          }




  182.   if(i==2)
  183.      {
  184.         P1=aa;;  
  185.         delay(500);  
  186.         aa=_crol_(aa,1);
  187.                 }



  188.   if(i==3)
  189.      {
  190.            while(1)
  191.            {
  192.              led1= 1;
  193.                  delay2(150000);
  194.                  for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)
  195.                    {
  196.                       led1= 0;
  197.                           delay2(PWM_LOW);
  198.                           led1=1;
  199.                           delay2(CYCLE-PWM_LOW);
  200.                    }
  201.                         for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
  202.              {                    //與逐漸變亮相反的過(guò)程   

  203.              led1=0;
  204.              delay2(PWM_LOW);
  205.              led1=1;
  206.              delay2(CYCLE-PWM_LOW);
  207.                          }
  208.            }
  209.          }         
  210. }

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

使用道具 舉報(bào)

沙發(fā)
ID:210889 發(fā)表于 2017-6-19 12:23 | 只看該作者
有些注釋可能排錯(cuò)了,主要是按鍵控制,在串口助手上實(shí)現(xiàn)與顯示接收到的數(shù)據(jù)問(wèn)題
回復(fù)

使用道具 舉報(bào)

板凳
ID:210889 發(fā)表于 2017-6-19 14:55 | 只看該作者
人工置頂
回復(fù)

使用道具 舉報(bào)

地板
ID:210889 發(fā)表于 2017-6-19 16:08 | 只看該作者
我好像解決了,開(kāi)發(fā)板上的按鍵和串口助手上發(fā)送數(shù)據(jù),都能實(shí)現(xiàn)功能而且有顯示接收到的數(shù)據(jù).
但是仍有一個(gè)問(wèn)題,在串口助手上發(fā)送流水燈的指令02,它只左移1位就停止了,可是_crol_函數(shù)不是會(huì)一直左移嗎?而且我按鍵部分的程序也是用_crol_,它可以不斷循環(huán)左移.這是為什么?
回復(fù)

使用道具 舉報(bào)

5#
ID:164602 發(fā)表于 2017-6-20 08:53 | 只看該作者
仔細(xì)看了你的程序,問(wèn)題在這里:
你的程序:(只取回答部分)
  • void ser() interrupt 4
  • {
  • unsigned   int CYCLE=600,PWM_LOW=0;
  •         keyscan();



問(wèn)題就在這里!
當(dāng)中斷發(fā)生時(shí),你調(diào)用讀鍵程序,我問(wèn)問(wèn)你:1、你知道什么時(shí)間發(fā)生了中斷?只有那個(gè)時(shí)間你按的鍵才會(huì)被程序判斷啊;2、你按鍵的速度能趕上程序的時(shí)間?3、你一直按著鍵,然后發(fā)數(shù)據(jù),看看有沒(méi)有效果。
解決辦法:
第一:簡(jiǎn)單的,在這里加循環(huán)等待,按過(guò)鍵后才走;
第二:復(fù)雜的,按鍵函數(shù)不放這里,放主函數(shù),這里作上記號(hào),在主函數(shù)去判斷。

評(píng)分

參與人數(shù) 1黑幣 +8 收起 理由
LIPPPP + 8 很給力!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

6#
ID:210889 發(fā)表于 2017-6-20 17:46 | 只看該作者
HC6800-ES-V2.0 發(fā)表于 2017-6-20 08:53
仔細(xì)看了你的程序,問(wèn)題在這里:
你的程序:(只取回答部分)

哦那個(gè)掃描函數(shù)我也不清楚為什么會(huì)在哪里哈哈,可能 修改時(shí)弄上去了. 不過(guò)謝謝你仔細(xì)看了程序
其實(shí)最終版本可以實(shí)現(xiàn)了我想要的功能,但是在串口中斷中的流水燈部分如果我添加了循環(huán)的話(huà),會(huì)跳不出來(lái),不添加循環(huán)的話(huà)只能不停地發(fā)送數(shù)據(jù), 我初衷是想發(fā)送數(shù)據(jù),流水燈一直循環(huán)直至發(fā)送其他數(shù)據(jù).

再次感謝你為我解答.不止一次了
回復(fù)

使用道具 舉報(bào)

7#
ID:164602 發(fā)表于 2017-6-21 08:43 | 只看該作者
LIPPPP 發(fā)表于 2017-6-20 17:46
哦那個(gè)掃描函數(shù)我也不清楚為什么會(huì)在哪里哈哈,可能 修改時(shí)弄上去了. 不過(guò)謝謝你仔細(xì)看了程序
其實(shí)最終版 ...

可以用定時(shí)器啊,不是T0還沒(méi)用嘛。祝你成功!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: av第一页 | 淫片一级国产 | 性高朝久久久久久久3小时 av一区二区三区四区 | 91久久久久久久久 | 久久精品91久久久久久再现 | 91精品久久久久久久久中文字幕 | 一区二区精品 | 91玖玖| 九七午夜剧场福利写真 | 日韩在线小视频 | 亚洲第一区国产精品 | 自拍偷拍精品 | 欧美色a v| 午夜精品一区二区三区在线视频 | 天天成人综合网 | 天堂色区 | 青青草原精品99久久精品66 | 日韩成人在线免费观看 | 久久逼逼 | 久久久久国产一区二区三区不卡 | 欧美在线 | 精品国产一区二区三区成人影院 | 久久999| 第一色在线 | 欧美日韩淫片 | 99热在线观看精品 | 国产精品一区二区欧美黑人喷潮水 | 色狠狠一区| 国产成人91视频 | 午夜天堂精品久久久久 | 色综合天天综合网国产成人网 | .国产精品成人自产拍在线观看6 | 日韩午夜电影在线观看 | 久久丝袜视频 | 欧美一级一 | 国产精品国产三级国产aⅴ浪潮 | 国产精品99久久久久久久久久久久 | 欧美日韩手机在线观看 | 国产福利视频 | 亚洲在线电影 | 久久精品视频免费观看 |