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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6500|回復(fù): 12
打印 上一主題 下一主題
收起左側(cè)

我想按鍵按下一次單片機(jī)就發(fā)送一次數(shù)據(jù)到串口助手,但一直循環(huán)發(fā)送

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:357396 發(fā)表于 2018-10-25 22:12 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

求大神幫忙看看我的問題

單片機(jī)源程序如下:
  1. #include <REG52.h>
  2. unsigned char code a[]={0x78,0x09,0x00,0x00,0x00};
  3. unsigned char i,j;
  4. sbit k3 = P3^3;
  5. bit flag;
  6. void delay(unsigned int n)   
  7. {
  8.     unsigned char a,b;
  9.     for(a=0;a<n;a++)
  10.         for(b=0;b<123;b++);
  11.    
  12. }


  13. void InitUART(void)
  14. {
  15.     TMOD = 0x20;
  16.     SCON = 0x50;
  17.     TH1 = 0xFD;  //9600
  18.     TL1 = TH1;
  19.     PCON = 0x00;
  20.     EA = 0;
  21.     ES = 1;
  22.     TR1 = 1;
  23. }


  24. void Send_string(unsigned char c)
  25. {


  26.   SBUF=c;
  27.   while(TI==0);
  28.   TI=0;
  29. }
  30. void key()
  31. {
  32. if(k3==0)
  33. {  delay(100);
  34.          if(k3==0)
  35.          {
  36.                                 for(i=0;i<5;i++)
  37.                 {
  38.              Send_string(a[ i]);                  delay(10);                }         } }}

  39. void main(void)
  40. {        P3 = 0xff;
  41. InitUART();         
  42. while(1)           {               key();           }        }
復(fù)制代碼





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

使用道具 舉報(bào)

沙發(fā)
ID:357396 發(fā)表于 2018-10-25 22:24 | 只看該作者
EA=1的
回復(fù)

使用道具 舉報(bào)

板凳
ID:415560 發(fā)表于 2018-10-25 23:41 | 只看該作者
用中斷吧,中斷好做一點(diǎn)
回復(fù)

使用道具 舉報(bào)

地板
ID:213173 發(fā)表于 2018-10-26 08:13 | 只看該作者
改一下按鍵程序即可
void key()
{
        if(k3==0)
        {
                delay(100);
                if(k3==0)
                {
                        for(i=0;i<5;i++)
                        {
                                Send_string(a[i]);                  
//                                delay(10);               
                        }         
                        while(!k3);
                }
        }
}
回復(fù)

使用道具 舉報(bào)

5#
ID:164602 發(fā)表于 2018-10-26 08:25 | 只看該作者
你的程序,我修改了一下,符合我的板子:12M下的4800加倍(從程序上看,你的波特率是11.0592M下的9600)
得到的結(jié)果是沒有問題的——你的程序中問題是按鍵沒有松開消抖。
#include <REG51.h>

unsigned char code a[]={0x78,0x09,0x00,0x00,0x00};
unsigned char i,j;
sbit k3 = P3^3;
bit flag;

void delay(unsigned int n)   
{
    unsigned char a,b;
    for(a=0;a<n;a++)
        for(b=0;b<123;b++);
}


void InitUART(void)
{
//    TMOD = 0x20;
//    SCON = 0x50;
//    TH1 = 0xFD;  //9600
//    TL1 = TH1;
//    PCON = 0x00;
//    EA = 0;
//    ES = 1;
//    TR1 = 1;
        PCON |= 0x80;
        SCON = 0x50;
        TMOD &= 0x0F;
        TMOD |= 0x20;
        TL1 = 0xF3;
        TH1 = 0xF3;
        ET1 = 0;
        TR1 = 1;
}


void Send_string(unsigned char c)
{
  SBUF=c;
  while(TI==0);
  TI=0;
}

void key()
{
        if(k3==0)
        {
                delay(100);
      if(k3==0)
      {
         for(i=0;i<5;i++)
         {
             Send_string(a[i]);
             delay(10);
         }
                                 for (i=0;(i<50)&&(k3==0);i++)
                                 {
                                                delay(100);
                                        }
       }
        }
}

void main(void)
{
        P3 = 0xff;
        InitUART();         
        while(1)
        {
     key();
  }
}

看你的截圖,接收到的數(shù)據(jù)多了一個(gè)FF,這個(gè)沒有找到原因。因?yàn)槟阍瓉淼某绦蛑粫?huì)發(fā)送兩次,也是不循環(huán)一直發(fā)送,也沒有收到多余的數(shù)據(jù)(在我的板子了,修改了波特率后)
回復(fù)

使用道具 舉報(bào)

6#
ID:308437 發(fā)表于 2018-10-26 09:03 | 只看該作者
你串口中斷沒寫啊。如果不寫,可以直接在發(fā)送完,寫上ES=0;(關(guān)閉串口,但是不建議這做,可能會(huì)有很多問題),還是把程序放到中斷吧
回復(fù)

使用道具 舉報(bào)

7#
ID:383749 發(fā)表于 2018-10-26 10:08 | 只看該作者
樓上說的EA=1,是需要開總中斷的。另外你的硬件是怎么設(shè)計(jì)的,按鍵按下去拉低IO口,松開后有上拉電阻拉高吧?
回復(fù)

使用道具 舉報(bào)

8#
ID:330198 發(fā)表于 2018-10-26 10:14 | 只看該作者
我試過沒問題,除非你按鍵一直按下了,否則不會(huì)一直發(fā)的
回復(fù)

使用道具 舉報(bào)

9#
ID:357396 發(fā)表于 2018-10-26 11:41 | 只看該作者
一個(gè)做畢設(shè)的人 發(fā)表于 2018-10-25 23:41
用中斷吧,中斷好做一點(diǎn)

我用中斷也是這樣...........
回復(fù)

使用道具 舉報(bào)

10#
ID:410942 發(fā)表于 2018-10-26 14:29 | 只看該作者
加多一個(gè)標(biāo)志位flag.按下一次flag取反,在按鍵里加多一個(gè)判斷。if(k3==0&&flag==0)..這樣試一下。
回復(fù)

使用道具 舉報(bào)

11#
ID:410942 發(fā)表于 2018-10-26 17:06 | 只看該作者
wulin 發(fā)表于 2018-10-26 08:13
改一下按鍵程序即可
void key()
{

改一下按鍵程序即可
void key()
{
        if(k3==0)
        {
                delay(100);
                if(k3==0)
                {
                        for(i=0;i<5;i++)
                        {
                                Send_string(a);                  
//                                delay(10);               
                        }         
                     //   while(!k3);這句放這里 還是有時(shí)會(huì)發(fā)兩次
                }
                 //   while(!k3);這句放這里效果最好。
        }
                 //   while(!k3);這句放這里也可以。
}

回復(fù)

使用道具 舉報(bào)

12#
ID:357396 發(fā)表于 2018-10-26 20:40 | 只看該作者
感謝各位大神幫助!,好像是我的開發(fā)板有問題,換了一個(gè)板子就好了
回復(fù)

使用道具 舉報(bào)

13#
ID:416027 發(fā)表于 2018-10-26 21:22 | 只看該作者
你可以用while()語句檢測按鍵是否彈起來,單片機(jī)的運(yùn)行速度很快你按鍵按下一次的時(shí)間這段程序可能走了好幾遍了
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产在线观看av | 久久99精品久久久久久 | 国产高清久久 | 国产日韩欧美激情 | www.色综合| 嫩草最新网址 | 二区不卡 | 欧美日本在线观看 | 日韩国产欧美一区 | 九九久久99 | 99久久婷婷国产综合精品电影 | 亚洲一区 中文字幕 | 精品国产一区二区三区久久 | 日本一区二区三区四区 | 爱爱免费视频网站 | 91短视频网址 | 中文字幕日韩三级 | 午夜爽爽爽男女免费观看 | 欧美日韩中| 激情av在线 | 嫩草懂你的影院入口 | 黄色网络在线观看 | 国产精品片 | 国产日韩欧美二区 | 久久九七| 涩涩视频网站在线观看 | 久久久久久免费毛片精品 | 午夜成人在线视频 | 日韩毛片视频 | 日本亚洲欧美 | 精品一区二区三区在线观看 | 亚洲一区中文字幕在线观看 | 懂色av蜜桃av | 国产精品久久久久久久久 | 中文字幕视频在线观看 | 亚洲一区免费在线 | 91成人在线 | 日韩一区二区av | 2022精品国偷自产免费观看 | 欧美男人的天堂 | 最近日韩中文字幕 |