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

標題: 51單片機串口通訊,中斷完成特定動作,單片機發送特定數據 [打印本頁]

作者: 愛學習愛交流    時間: 2018-12-26 11:40
標題: 51單片機串口通訊,中斷完成特定動作,單片機發送特定數據
問題:中斷完成特定動作,單片機發送特定數據,問題在于它一直發數據,不停,動作標志位也清0了,代碼太多,部分代碼如下:
//**串口中斷程序**//
void UART_SER(void) interrupt 4
{
  unsigned char Temp;
  uchar i;
  if(RI)
  {
    RI=0;         // 標志位清零
        Temp=SBUF;
        judge[cnt]=Temp;
        if(judge[0]==0x2A)        
         {
            cnt++;
                if(cnt>=8)
                {
                   check();
                   if(judge[7]==sum)
                     {
                           re_flag=1;
                         }
                        else
                        {
                           for(i=0;i<8;i++)
                           {
                              judge[ i]=0x00;//緩存數組清零[ i]
                           }
                        }
                   cnt=0;
                }
         }
         
//    SBUF=Temp;//把接受的值再返還給電腦端         
  }
//  if(TI)  //如果是發送標志位,清零
//  {
//    TI=0;
//  }
}
//**發送數據**//
void TX1_sendmsg(uchar *pdat)
{
  
  uchar i;
  ES=0;
for(i=0;i<8;i++)
  {
    SBUF=*pdat;
         pdat++;
         while(!TI);
         TI=0;
  }
  TX_flag=1;
   ES=1;


}
中斷部分:
void Timer0_(void) interrupt 1
{

  sw=0;         //為了測試程序先定義一個sw的狀態
  sw1=0; //為了測試程序先定義一個sw的狀態
  sw2=0; //為了測試程序先定義一個sw的狀態
  TH0=(65536-2000)/256;         //定時2ms
  TL0=(65536-2000)%256;
     if(pulse==0)

        {
          Mot_Dir=1;
          Mot_En=1;
          Mot_Pulse=0;
        }
        else
        {
          Mot_Dir=1;
          Mot_Pulse=~Mot_Pulse;
          Mot_En=1;
          pulse--;
        }
            if(pulse==0)
           {
             Mot_Dir=1;
             Mot_Pulse=0;
             Mot_En=1;
             move_ok=1;
                                 
           }
           break;

     default:
         Mot_Dir=1;
           Mot_Pulse=0;
           Mot_En=1;
             break;

}
在while語句對move_ok進行判定
void main ()
.......
while(1)
{
.......
if(move_ok==1)
  {
     move_ok=0;
         send_msg[0] = 0x2A;
         send_msg[1] = 0x2A;
         send_msg[2] = judge[2];
         send_msg[3] = 0x00;
         send_msg[4] = 0x00;
         send_msg[5] = 0x4f;
         send_msg[6] = 0x4b;
         send_msg[7] = 0x88; //check_number累計校驗和
         TX1_sendmsg(send_msg);
  }
  if(TX_flag==1)
  {
           TX_flag==0;

  }


}


回家.png (39.59 KB, 下載次數: 32)

串口通訊助手發送接收

串口通訊助手發送接收

作者: zhan8665    時間: 2018-12-26 12:28
你這中斷只響應了一次
作者: 愛學習愛交流    時間: 2018-12-26 16:11
已搞定,咋感覺每次發完貼都會了,自己結題。謝謝各位!錯的原因是因為move_ok中的一個函數又將其置1,默認又進入中斷執行命令。
作者: tsylovely    時間: 2018-12-26 16:32
愛學習愛交流 發表于 2018-12-26 16:11
已搞定,咋感覺每次發完貼都會了,自己結題。謝謝各位!錯的原因是因為move_ok中的一個函數又將其置1 ...

恭喜恭喜




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日日骑 | 97精品国产| 一级全黄少妇性色生活免费看 | 久久精品1| www.一级片 | 91一区二区| 欧美极品在线 | www.蜜桃av | av中文字幕在线 | 香蕉视频91 | julia中文字幕久久一区二区 | 欧美精品在线一区二区三区 | a级片在线观看 | 黄色在线播放视频 | 欧美国产日韩一区二区三区 | 久久高潮 | 午夜电影福利 | 91视频91 | 女朋友的闺蜜3韩国三级 | 日韩一区二区福利视频 | 草草视频在线播放 | 可以免费观看的av片 | 亚洲精品一区二区网址 | 黄色毛片免费 | 欧美成人精品激情在线观看 | 亚洲高清视频在线观看 | 99精品久久久 | 伊人网在线播放 | 91在线导航 | 黄视频网站免费观看 | 欧美日韩1区2区 | 国产精品国产成人国产三级 | 伊人成人免费视频 | 91国内视频在线 | 日本免费视频 | 国产99精品| 男女网站视频 | 精品电影 | 久久久久国产一级毛片 | 国产成人短视频在线观看 | 天天干天天干 |