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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4307|回復: 0
打印 上一主題 下一主題
收起左側

給大家分享個51單片機串口發送漢字與字節程序(工作總結)

[復制鏈接]
跳轉到指定樓層
樓主
ID:609989 發表于 2019-9-25 17:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近使用STC89C58RD+這款CPU,做一個RX232 串口與上位機通訊程序。
功能:得到上位機指令控制一個I/0。急停一段時間向上位機send一個幫助指令(這個需要漢字,這個漢子老坑爹了,需要一個“KeilFDfix_b7(冠銘師兄版)“補丁)
         內部的TR0沒有使用,代碼沒問題也可以使用。

單片機源程序如下:
  1. #include <stc89.h>
  2. #include <stdio.h>
  3. #define uchar unsigned char
  4. #define uint  unsigned int
  5. //I/O
  6. sbit stop  = P3^2;
  7. sbit led_ok = P2^0;
  8. sbit led_ng = P2^1;
  9. sbit led_help = P2^6;
  10. sbit a = P1^0;
  11. sbit b = P1^1;
  12. sbit c = P1^2;
  13. sbit d = P1^3;
  14. //bit
  15. uint h,k,l,t,f,i=0,g=0,num=0,s;
  16. bit flag;
  17. //delay_1ms
  18. void delayms(uint time)
  19. {
  20.    uint x,y;
  21.    for(x=0;x<time;x++)
  22.       for(y=0;y<112;y++);
  23. }
  24. //delay_1s
  25. void delays(uint time_1s)
  26. {
  27.    uint q,w;
  28.    for(q=0;q<time_1s;q++)
  29.      {
  30.       delayms(1000);
  31.       for(w=0;w<112;w++);
  32.      }
  33.          
  34. }
  35. //UART
  36. uchar rev_string[2];
  37. uchar code  ok[] = {0xaa,0x00};
  38. uchar code  ng[] = {0xaa,0x11};
  39. //UART Init
  40. void  UARTinit()
  41. {        
  42.     SM0=0;         //串行口工作方式1
  43.     SM1=1;        
  44.     TMOD=0x20;    //工作方式2
  45.     TH1=0xfd;  //9600波特率裝初值
  46.     TL1=0xfd;
  47.     TR1=1;     //打開定時器1
  48. }
  49. // 中斷
  50. void init()
  51. {
  52.   EA=1;       //打開總中斷
  53.   EX0=1;      //打開中斷1
  54. //  ES=1;       //串口使能
  55.    ET0=1;                                  //定時器T0中斷允許
  56.    TMOD=0x01;                                              //使用定時器T0  (0000 0001)
  57.    TH0=(65535-50000)/256;    //將定時器計時時間設定為10000微秒=10毫秒   計算后得數 TH0=60;                        
  58.    TL0=(65535-50000)%256;                  // 計算后得數 TL0=175
  59. }
  60. // 發送
  61. void send_ok()
  62. {
  63.     REN=0;
  64.     for(k=0;k<2;k++)
  65.       {
  66.           SBUF=ok[k];         
  67.           while(!TI);
  68.           TI=0;
  69.       }
  70.    
  71. }
  72. void send_ng()
  73. {
  74.     REN=0;
  75.     for(l=0;l<2;l++)
  76.       {
  77.           SBUF=ng[l];         
  78.           while(!TI);
  79.           TI=0;
  80.       }
  81.    
  82. }
  83. //received
  84. void recv()
  85. {
  86.     REN=1;
  87.     for(h=0;h<2;h++)
  88.       {
  89.             delayms(200);  //輔助延時
  90.             while(!RI);
  91.             rev_string[h]=SBUF;
  92.             RI=0;
  93.       }
  94.     REN=0;   
  95. }
  96. //上電 確認程序
  97. void power_on()
  98. {
  99.       delayms(200);
  100.       P1=0xff;         //關閉所有P1口
  101.       for(t=0;t<4;t++)
  102.         {
  103.             delayms(500);
  104.             P1=P1<<1;

  105.         }
  106.       delayms(500);
  107.       P1=0xff;
  108. }
  109. //MAIN
  110. void main()
  111. {
  112.   power_on();
  113.   while(1)
  114.   {  
  115.       
  116.       switch (g)
  117.       {
  118.           case 0:
  119.            {
  120.                init();
  121.                a=0;
  122.                g++;
  123.            }break;
  124.           case 1:
  125.            {
  126.                UARTinit();
  127.                b=0;
  128.                g=22;
  129.                delayms(200);
  130.            }break;
  131.           case 22:
  132.             {
  133.                 recv();
  134.                 c=0;
  135.                if((rev_string[0]==0xaa)&&(rev_string[1]==0x00))
  136.                   {
  137.                       delayms(300);
  138.                       led_ok=0;
  139.                       send_ok();
  140.                      
  141.                       delays(5);
  142.                       led_ok=1;
  143.                       g=22;
  144.                   }
  145.                if((rev_string[0]==0xaa)&&(rev_string[1]==0x11))
  146.                   {
  147.                       delayms(300);
  148.                       led_ng=0;
  149.                       send_ng();
  150.                      
  151.                       delays(5);
  152.                       led_ng=1;
  153.                       g=22;
  154.                   }
  155.              }break;
  156.          }
  157.      }
  158. }
  159. //T0中斷
  160. void T0_time() interrupt 1
  161. {
  162.     TH0=(65535-10000)/256;
  163.     TL0=(65535-10000)%256;
  164.     num++;
  165. }
  166. //中斷
  167. void int0() interrupt 0
  168. {
  169.   if(stop==0)
  170.    {   
  171.        for(s=0;s<100;s++)
  172.        {
  173.            flag=1;
  174.            while(flag)
  175.            {
  176.            delayms(200);
  177.            i++;         
  178.            flag=0;   
  179.            }   
  180.             if(stop)
  181.               {
  182.                delayms(10);
  183.                break;             //跳出本層循環
  184.               }           
  185.        }
  186.        flag=0;
  187.       while(!stop);
  188.        if(i<=20)
  189.         {
  190.             
  191.             P2=0xff;
  192.             P1=0xff;
  193.             REN=0;   
  194.             i=0;
  195.             g=0;
  196.             ISP_CONTR=0x20;
  197.         }
  198.         if(i>=20)  //幫助模塊
  199.          {  
  200.                 led_help=0;
  201.                 TI = 1;//發送請求標志位
  202.         printf("輸入你想要的漢字。\n    ");  //方法2
  203.                 while(!TI);//判斷是否發送完成  發送完成出循環
  204.                 TI = 0;   
  205.                
  206.    
  207.                 delayms(200);//延遲200ms
  208.                 led_help=1;
  209.                 i=0;
  210.                 flag=0;
  211.          }
  212.      }
  213.       
  214.       
  215. }
復制代碼


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 男女那个视频 | 国产 欧美 日韩 一区 | 亚洲网站在线 | 蜜桃综合在线 | 大学生a级毛片免费视频 | 欧美一区在线看 | 91porn在线观看 | 亚洲狠狠 | 国产一二区视频 | 欧美色性 | 伊人精品一区二区三区 | 黄色日本片 | 96国产精品久久久久aⅴ四区 | 99视频免费在线观看 | 一级日韩 | 久久精品日产第一区二区三区 | 日本成人免费观看 | 中文字幕一区二区三区在线乱码 | 久久精品一区二区 | 欧美日韩专区 | 精品中文字幕在线观看 | 在线三级网址 | 亚洲a视频| 红桃视频一区二区三区免费 | 久久久激情视频 | 久久久久久99 | 亚洲免费视频一区 | 中文字幕1区 | 久久久免费 | 91欧美精品| 亚洲精品永久免费 | 久久99国产精品 | 日韩国产在线观看 | 成人国产精品色哟哟 | 欧美精品中文字幕久久二区 | 午夜精品一区二区三区在线观看 | 国产成人一区二区三区 | 一级欧美视频 | 欧美理伦片在线播放 | 蜜桃官网| av网站在线播放 |