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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2107|回復: 10
收起左側

求注釋單片機程序,我好一句一句研究、修改、測試、吃透!

[復制鏈接]
ID:477733 發表于 2019-2-18 15:16 | 顯示全部樓層 |閱讀模式
半路出家,剛接觸單片機程序,感覺改程序就像打游戲,不通關睡不著覺,就想讓繼電器按我的設想去工作,不想直接問小白問題,哪位大神幫我把這段程序加下注釋,我好一句一句研究、修改、測試、吃透!跪謝!!

  1. /********************************************************************/

  2. #include<STC12C5A60S2.h>   //庫文件
  3. #include<Init_IO.h>             //庫文件
  4. #define uchar unsigned char//宏定義無符號字符型
  5. #define uint unsigned int  //宏定義無符號整型

  6. typedef unsigned char BYTE;
  7. typedef unsigned int WORD;

  8. uchar dat[4];
  9. uchar cnt,cnt1;
  10. bit start=0,start1=0;

  11. bit ON1=0;
  12. bit ON2=0;
  13. bit ON3=0;
  14. bit ON4=0;
  15. bit ON5=0;
  16. bit ON6=0;
  17. bit ON7=0;
  18. bit ON8=0;

  19. /*------------------------------------------------
  20.                    函數聲明
  21. ------------------------------------------------*/
  22. void Send(uchar da);
  23. void Delay(WORD n);

  24. /*------------------------------------------------
  25.                    串口初始化
  26. ------------------------------------------------*/

  27. void init ()
  28. {
  29.         TMOD = 0x20;                          //定時器1產生波特率
  30.         SCON = 0x50;                         //方式1,8位數據,波特率可變
  31.         TH1=TL1 = 0xF7;                 //串口1波特率 38400      
  32.         S2CON = 0x50;                         //方式1,八位數據,可變波特率
  33.         BRT=0xFD;                                  //串口2波特率9600
  34.         TR1=1;                                          //啟動定時器產生串口2波特率      
  35.         AUXR = AUXR|0x10;        //允許獨立波特率發生器運行
  36.         AUXR = AUXR|0x40;
  37.         IP=0x00;                                 //優先級默認
  38.           EA=1;                                      //開總中斷
  39.         IE2=0x01;                                 //開串口2中斷
  40. }
  41. /*--------------------------------------
  42.           延時函數
  43. --------------------------------------*/
  44. void Delay(WORD n)
  45. {
  46.     WORD x;

  47.     while (n--)
  48.      {
  49.         x = 500;
  50.         while (x--);
  51.           }
  52. }

  53. /*--------------------------------------
  54.           串口函數
  55. --------------------------------------*/
  56. void clbuf()
  57. {
  58.         dat[0] = 0;
  59.         dat[1] = 0;
  60.         dat[2] = 0;
  61.         dat[3] = 0;
  62. }

  63. void Send(uchar da)
  64. {
  65.      SBUF = da;
  66.      while(!TI);
  67.      TI = 0;
  68. }

  69. void scan()
  70.         {                     
  71.         /********************************************************************
  72.                                     接收數據判斷函數
  73.         *********************************************************************/
  74.         if(dat[0]=='p' && dat[1]=='1'&&dat[2]=='0'&&dat[3]=='1')
  75.         {
  76.         clbuf();
  77.         K09 = 0;Delay(3);K09=1;
  78.         }
  79.         if(dat[0]=='p' && dat[1]=='1'&&dat[2]=='0'&&dat[3]=='2')
  80.         {
  81.         clbuf();
  82.         K10 = 0;Delay(3);K10=1;
  83.         }
  84.         if(dat[0]=='p' && dat[1]=='1'&&dat[2]=='0'&&dat[3]=='3')
  85.         {
  86.         clbuf();
  87.         K11 = 0;Delay(3);K11=1;
  88.         }
  89.         if(dat[0]=='p' && dat[1]=='1'&&dat[2]=='0'&&dat[3]=='4')
  90.         {
  91.         clbuf();
  92.         K12 = 0;Delay(3);K12=1;
  93.         }
  94. }

  95. /*--------------------------------------
  96.           主函數
  97. --------------------------------------*/
  98. void main()
  99. {
  100.    P4SW|=0x20;                   //配置P4.5為IO口
  101.    P4M0|=0x10;                   //配置P4.4為IO口
  102.    P4M1|=0x10;
  103.    P0=P1=P2=P3=0xff;
  104.    P4|=0x30;
  105.    init();//串口初始化

  106.    Send(0X67);Send(0X6F);Send(0X6F);Send(0X64);

  107.    while(1)
  108.    {
  109.             scan();

  110.           if(!IN01||!IN02||!IN03||!IN04||!IN05||!IN06||!IN07||!IN08){Delay(1);

  111.                  if(!IN01&&!ON1){ON1=1;Send(0X02);Send(0X03);Send(0X01);Send(0X03);K01=0;}
  112.                  if(!IN02&&!ON2){ON2=1;Send(0X02);Send(0X03);Send(0X02);Send(0X03);K02=0;}
  113.                  if(!IN03&&!ON3){ON3=1;Send(0X02);Send(0X03);Send(0X03);Send(0X03);K03=0;}
  114.                  if(!IN04&&!ON4){ON4=1;Send(0X02);Send(0X03);Send(0X04);Send(0X03);K04=0;}
  115.                  if(!IN05&&!ON5){ON5=1;Send(0X02);Send(0X03);Send(0X01);Send(0X03);K05=0;}
  116.                  if(!IN06&&!ON6){ON6=1;Send(0X02);Send(0X03);Send(0X02);Send(0X03);K06=0;}
  117.                  if(!IN07&&!ON7){ON7=1;Send(0X02);Send(0X03);Send(0X03);Send(0X03);K07=0;}
  118.                  if(!IN08&&!ON8){ON8=1;Send(0X02);Send(0X03);Send(0X04);Send(0X03);K08=0;}

  119.                  if(!K01||!K02||!K03||!K04){Delay(5);K01=1;K02=1;K03=1;K04=1;}
  120.                  if(!K05||!K06||!K07||!K08){Delay(9);K05=1;K06=1;K07=1;K08=1;}
  121.                                  
  122.                  if(IN01&&ON1){ON1=0;}
  123.                  if(IN02&&ON2){ON2=0;}
  124.                  if(IN03&&ON3){ON3=0;}
  125.                  if(IN04&&ON4){ON4=0;}                                 
  126.                  if(IN05&&ON5){ON5=0;}
  127.                  if(IN06&&ON6){ON6=0;}
  128.                  if(IN07&&ON7){ON7=0;}
  129.                  if(IN08&&ON8){ON8=0;}

  130.        }

  131.           if(!IN09){Send(0X02);Send(0X03);Send(0X05);Send(0X03);while(!IN09);}
  132.           if(!IN10){Send(0X02);Send(0X03);Send(0X06);Send(0X03);while(!IN10);}
  133.           if(!IN11){Send(0X02);Send(0X03);Send(0X07);Send(0X03);while(!IN11);}
  134.           if(!IN12){Send(0X02);Send(0X03);Send(0X08);Send(0X03);while(!IN12);}
  135.    }
  136. }
  137.       
  138. /*--------------------------------------
  139.       串口二接收中斷函數
  140. --------------------------------------*/
  141. void uart2_isr()  interrupt 8
  142. {
  143.    if( S2CON & 0x01 )
  144.          {
  145.                 S2CON &=~0x01;
  146.                 dat[cnt1] = S2BUF;
  147.                 if((dat[cnt1]>='A'))
  148.                 start1  = 1;
  149.                 if(start1)
  150.                 {
  151.                         cnt1 ++;
  152.                 if(cnt1 > 3)
  153.                 {
  154.                         cnt1 = 0;
  155.                         start1 = 0;      
  156.                 }      
  157.                 }
  158.          }
  159. }
  160. /********************************************************************
  161.                               結束
  162. *********************************************************************/
復制代碼




回復

使用道具 舉報

ID:319023 發表于 2019-2-18 16:34 | 顯示全部樓層
多學C語言這是基礎,找書去看例程代碼,百度找學習視頻看。
回復

使用道具 舉報

ID:444306 發表于 2019-2-18 17:35 | 顯示全部樓層
感覺改程序就像打游戲,不通關睡不著覺,那就別人不睡著覺你打游戲?

評分

參與人數 1黑幣 +15 收起 理由
zhengchong60 + 15

查看全部評分

回復

使用道具 舉報

ID:477852 發表于 2019-2-18 18:43 | 顯示全部樓層
  支持一下
回復

使用道具 舉報

ID:138119 發表于 2019-2-18 18:54 | 顯示全部樓層
小哥哥!如果愿意,一起學習如何?
回復

使用道具 舉報

ID:477733 發表于 2019-2-18 19:44 | 顯示全部樓層
areyouok 發表于 2019-2-18 17:35
感覺改程序就像打游戲,不通關睡不著覺,那就別人不睡著覺你打游戲?

每個函數都仔細百度學習過,每個循環都試著反復判斷過,但是整個放在一起就沒法讀懂了,半路出家閉門造車,折磨自己好幾天了,沒辦法只好來這里求助了,可能比喻不恰當,還請諒解。
回復

使用道具 舉報

ID:477733 發表于 2019-2-18 19:49 | 顯示全部樓層
areyouok 發表于 2019-2-18 17:35
感覺改程序就像打游戲,不通關睡不著覺,那就別人不睡著覺你打游戲?

換個比喻,這就像一片古文,字,詞我都認識了,可是聯系了上下文我就理解不了,煩請幫指點下程序設計思路
回復

使用道具 舉報

ID:213173 發表于 2019-2-18 21:13 | 顯示全部樓層
你有逐句研究、修改、測試、吃透一個程序的時間,不如找一個視頻教程,亦步亦趨,照貓畫虎,由簡到繁,十天半月就能看懂甚至自己就能寫出這樣的程序,其實這個程序也是很初級的,只能算入門級的作品。如果買一個有配套視頻的開發板,按照例程實戰,進步會很快,這時碰巧再接到一個對于你至關重要工程。當你日以繼夜的完成任務后,你會發現你很佩服自己。
回復

使用道具 舉報

ID:478073 發表于 2019-2-19 14:12 | 顯示全部樓層
自己動手,豐衣足食!
回復

使用道具 舉報

ID:478073 發表于 2019-2-19 14:13 | 顯示全部樓層
zgablong001 發表于 2019-2-18 19:44
每個函數都仔細百度學習過,每個循環都試著反復判斷過,但是整個放在一起就沒法讀懂了,半路出家閉門造車 ...

有那么多說話的時間,早就學會了
回復

使用道具 舉報

ID:474670 發表于 2019-2-19 14:23 | 顯示全部樓層
zgablong001 發表于 2019-2-18 19:49
換個比喻,這就像一片古文,字,詞我都認識了,可是聯系了上下文我就理解不了,煩請幫指點下程序設計思路

找一個視頻教程,不是百度找解釋!方法決定結果

評分

參與人數 1黑幣 +10 收起 理由
正規007 + 10 很給力!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: av中文在线播放 | 日韩一区二区三区四区五区 | 亚洲国产成人一区二区 | aaaa日韩| 亚洲a视频 | 日本一区二区三区精品视频 | 日本免费在线 | 精品视频在线一区 | 成人精品在线视频 | 亚洲欧美激情精品一区二区 | 在线观看成人小视频 | 亚洲国产网 | 久久久久久av | 亚洲成人一区二区三区 | 国产一区二| 精品免费在线 | 国产午夜精品一区二区三区在线观看 | 91久久夜色精品国产网站 | 欧美性受xxxx | 国产原创视频 | 人干人操 | 精久久久 | 国产1区2区在线观看 | 精品国产乱码久久久久久丨区2区 | 国产在线永久免费 | 国产日韩一区二区 | 成人精品一区二区三区中文字幕 | 日韩视频免费 | 超碰人人做 | 一区二区三区在线播放视频 | 2018天天干天天操 | 免费视频久久 | 蜜桃传媒一区二区 | 凹凸日日摸日日碰夜夜 | 欧美精品久久久 | 欧美精品二区 | 国产精品伦理一区二区三区 | 国产伊人久久久 | 小h片免费观看久久久久 | 国产高清免费 | 岛国视频 |