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

QQ登錄

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

帖子
查看: 1986|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)串口通訊,中斷完成特定動(dòng)作,單片機(jī)發(fā)送特定數(shù)據(jù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:311281 發(fā)表于 2018-12-26 11:40 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
問(wèn)題:中斷完成特定動(dòng)作,單片機(jī)發(fā)送特定數(shù)據(jù),問(wèn)題在于它一直發(fā)數(shù)據(jù),不停,動(dòng)作標(biāo)志位也清0了,代碼太多,部分代碼如下:
//**串口中斷程序**//
void UART_SER(void) interrupt 4
{
  unsigned char Temp;
  uchar i;
  if(RI)
  {
    RI=0;         // 標(biāo)志位清零
        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;//緩存數(shù)組清零[ i]
                           }
                        }
                   cnt=0;
                }
         }
         
//    SBUF=Temp;//把接受的值再返還給電腦端         
  }
//  if(TI)  //如果是發(fā)送標(biāo)志位,清零
//  {
//    TI=0;
//  }
}
//**發(fā)送數(shù)據(jù)**//
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;         //為了測(cè)試程序先定義一個(gè)sw的狀態(tài)
  sw1=0; //為了測(cè)試程序先定義一個(gè)sw的狀態(tài)
  sw2=0; //為了測(cè)試程序先定義一個(gè)sw的狀態(tài)
  TH0=(65536-2000)/256;         //定時(shí)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語(yǔ)句對(duì)move_ok進(jìn)行判定
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累計(jì)校驗(yàn)和
         TX1_sendmsg(send_msg);
  }
  if(TX_flag==1)
  {
           TX_flag==0;

  }


}


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

串口通訊助手發(fā)送接收

串口通訊助手發(fā)送接收
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:434820 發(fā)表于 2018-12-26 12:28 | 只看該作者
你這中斷只響應(yīng)了一次
回復(fù)

使用道具 舉報(bào)

板凳
ID:311281 發(fā)表于 2018-12-26 16:11 | 只看該作者
已搞定,咋感覺(jué)每次發(fā)完貼都會(huì)了,自己結(jié)題。謝謝各位!錯(cuò)的原因是因?yàn)閙ove_ok中的一個(gè)函數(shù)又將其置1,默認(rèn)又進(jìn)入中斷執(zhí)行命令。
回復(fù)

使用道具 舉報(bào)

地板
ID:72777 發(fā)表于 2018-12-26 16:32 | 只看該作者
愛(ài)學(xué)習(xí)愛(ài)交流 發(fā)表于 2018-12-26 16:11
已搞定,咋感覺(jué)每次發(fā)完貼都會(huì)了,自己結(jié)題。謝謝各位!錯(cuò)的原因是因?yàn)閙ove_ok中的一個(gè)函數(shù)又將其置1 ...

恭喜恭喜
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表