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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機串口通信程序遇到問題!請高手指點

[復制鏈接]
跳轉到指定樓層
樓主
我想通過按鍵控制單片機發送數據到串口,每按一次按鍵變量r_cut加1,CS是前面五個數據的和,只取后兩位。實際按鍵后。r_cur,CS 兩個變量的數值有變化,但是串口接到的數據都是固定的沒有變化。請大師指一下。謝謝。

單片機源程序如下:
  1. #define uchar unsigned char
  2. #define uint unsigned int
  3. sbit key1=P3^2;
  4. sbit key2=P3^3;

  5. uchar i,flag1,r_cut,cs;
  6. uchar code red[6]={0xc5,0xaa,0xa4,&r_cut,0x01,&cs};
  7. void delay(uint);
  8. void init()
  9.                 {
  10.                  PCON &= 0x7F;               
  11.              SCON = 0x50;               
  12.              AUXR |= 0xC0;               
  13.              AUXR &= 0xFE;               
  14.            
  15.             TMOD=0X22;

  16.                 TH1=0xB8;
  17.             TL1=0xB8;
  18.         TR1=1;
  19.                 ET1 =0;
  20.             EA=1;
  21.             ES=1;
  22.                 P_SW1=0X40; //P3.6,P3.7
  23.                
  24.             P3M0=0X00;
  25.            P3M1=0X00;
  26.             r_cut=0x0f;
  27.                 a=10;
  28.         
  29.                 }
  30. void delay(uint z)
  31.                 {
  32.                   uint x,y;
  33.                     for(x=z;x>0;x--)
  34.                             for(y=100;y>0;y--);
  35.                
  36.                
  37.                 }
  38. void scankey()
  39.                 {
  40.                   if(key1==0)
  41.               delay(10);
  42.                    if(key1==0)
  43.                       {
  44.                           a++;
  45.                            r_cut++;
  46.                                    cs=(0xc5+0xaa+0xa4+r_cut+0x01)&0xff;
  47.                                 
  48.                            ES=0;
  49.                            for(i=0;i<6;i++)
  50.                               {
  51.                                     SBUF=red[i];
  52.                                         while(!TI);
  53.                                         TI=0;
  54.                                 flag1=0;
  55.                                    }
  56.                                   ES=1;
  57.                                 while(!key1);
  58.                         
  59.                            }
  60.                   if(key2==0)
  61.                 delay(10);
  62.                    if(key2==0)
  63.                       {
  64.                                    a--;
  65.                            r_cut--;
  66.                                    cs=(0xc5+0xaa+0xa4+r_cut+0x01)&0xff;
  67.                            
  68.                            
  69.                            
  70.                            
  71.                            ES=0;
  72.                            for(i=0;i<6;i++)
  73.                               {
  74.                                     SBUF=red[i];
  75.                                         while(!TI);
  76.                                         TI=0;
  77.                                   }
  78.                                   ES=1;
  79.                                 while(!key2);
  80.                         
  81.                       }
  82.                
  83.                
  84.                 }
  85. void main()
  86.                 {

  87.                   init();
  88.                   while(1)
  89.                   {
  90.                           scankey();
  91.                   }
  92.                
  93.                
  94.                 }

  95. void ser() interrupt 4
  96.     {
  97.                   
  98.                         if (RI)
  99.                         {
  100.                                 RI=0;
  101.                         }
  102.                         else TI=0;
  103.                
  104.         }
復制代碼

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

使用道具 舉報

沙發
ID:213173 發表于 2019-8-17 07:48 | 只看該作者
樓主數組定義錯誤。數組成員只能是常量,不可以是變量或表達式。ROM中定義的數組不可更改,RAM中定義的數組才可以更改。串口只發不收不需要開接收中斷。1T的MCU延時程序要修正參數。程序修改如下:
  1. #include <STC15F2K60S2.H>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit key1=P3^2;
  5. sbit key2=P3^3;

  6. uchar a,i,flag1,r_cut,cs;
  7. //uchar code red[6]={0xc5,0xaa,0xa4,&r_cut,0x01,&cs};
  8. uchar data red[6]={0xc5,0xaa,0xa4,0x00,0x01,0x00};

  9. void delay(uint);

  10. void init()
  11. {
  12.         PCON &= 0x7F;               
  13.         SCON = 0x50;               
  14.         AUXR |= 0xC0;               
  15.         AUXR &= 0xFE;               
  16.         TMOD=0X22;
  17.         TH1=0xB8;
  18.         TL1=0xB8;
  19.         TR1=1;
  20. //        ET1=0;
  21. //        EA=1;
  22. //        ES=1;
  23.         P_SW1=0X40; //P3.6,P3.7
  24.         P3M0=0X00;
  25.         P3M1=0X00;
  26.         r_cut=0x0f;
  27.         a=10;
  28. }
  29. void delay(uint z)
  30. {
  31.         uint x,y;
  32.         for(x=z;x>0;x--)
  33.                 for(y=1150;y>0;y--);//1T/y=1150,12T/y=110
  34. }
  35. void scankey()
  36. {
  37.         if(key1==0)
  38.         {
  39.                 delay(10);
  40.                 if(key1==0)
  41.                 {
  42.                         a++;
  43.                         r_cut=a;
  44.                         red[3]=r_cut;
  45.                         cs=(0xc5+0xaa+0xa4+r_cut+0x01)&0xff;       
  46.                         red[5]=cs;
  47. //                        ES=0;
  48.                         for(i=0;i<6;i++)
  49.                         {
  50.                                 SBUF=red[i];
  51.                                 while(!TI);
  52.                                 TI=0;
  53.                                 //flag1=0;
  54.                         }
  55. //                        ES=1;
  56.                         while(!key1);
  57.                 }
  58.         }
  59.         if(key2==0)
  60.         {
  61.                 delay(10);
  62.                 if(key2==0)
  63.                 {
  64.                         a--;
  65.                         r_cut=a;
  66.                         red[3]=r_cut;
  67.                         cs=(0xc5+0xaa+0xa4+r_cut+0x01)&0xff;       
  68.                         red[5]=cs;
  69. //                        ES=0;
  70.                         for(i=0;i<6;i++)
  71.                         {
  72.                                 SBUF=red[i];
  73.                                 while(!TI);
  74.                                 TI=0;
  75.                         }
  76. //                        ES=1;
  77.                         while(!key2);
  78.                 }
  79.         }
  80. }
  81. void main()
  82. {
  83.         init();
  84.         while(1)
  85.         {
  86.                 scankey();
  87.         }
  88. }
  89. /*
  90. void ser() interrupt 4
  91. {
  92.         if (RI)
  93.         {
  94.                 RI=0;
  95.         }
  96.         else TI=0;
  97. }*/
復制代碼


回復

使用道具 舉報

板凳
ID:230975 發表于 2019-8-17 09:46 | 只看該作者
是的,定義錯誤。謝謝,不能用CODE.謝謝指教。我調試一下。
十分感謝。
回復

使用道具 舉報

地板
ID:230975 發表于 2019-8-17 10:15 | 只看該作者
謝謝師傅指點
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久精品天堂 | 羞羞在线观看视频 | 免费爱爱视频 | 欧美国产一区二区三区 | 美人の美乳で授乳プレイ | 天天干天天插天天 | 色.com| 成人免费小视频 | 成人视屏在线观看 | 久草视频在线播放 | 欧美视频三区 | 偷拍亚洲色图 | 看a网站| 91精品欧美久久久久久久 | 日韩欧美国产精品 | 久久久高清 | 日日干夜夜操天天操 | 日韩一区二区三区视频 | 久久99久久 | 一级片网址 | 国产中的精品av涩差av | 538在线精品 | 欧洲成人午夜免费大片 | 久色| av av在线 | 国产一区二区三区视频免费观看 | 国产精品中文在线 | 国产精品自产拍 | 国产成人在线视频播放 | 中文二区 | 色五月激情五月 | 这里只有精品999 | 精品欧美黑人一区二区三区 | 北条麻妃一区二区三区在线视频 | 99国产精品一区二区三区 | 黄视频网站在线 | 亚洲91视频 | jvid精品资源在线观看 | 欧美黑人巨大videos精品 | 欧美色综合一区二区三区 | 91亚洲精品在线观看 |