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

QQ登錄

只需一步,快速開始

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

串口通信 PC機(jī)向單片機(jī)發(fā)送命令打開或關(guān)閉指定LED燈

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:396671 發(fā)表于 2018-11-5 17:38 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
輸入輸出一樣,但是if判段數(shù)據(jù)怎么不對(duì),燈亮不了


#include<reg52.h>
#include<string.h>


void main (void)
{ char a,b=0;
  SCON=0x50;//串行口方式1
  PCON=0x00;//T1初始化,
  TMOD=0x20;//T1設(shè)為方式2
  TH1=0xFD;//選9600波特,fosc=11.0592MHz
  TR1=1;//啟動(dòng)T1  
  while(1)
    {
      if(RI)//如果接收到數(shù)據(jù),就把接收到的數(shù)回發(fā)給PC
         { RI=0;//清接收標(biāo)志
           a=SBUF ;//讀串行口數(shù)據(jù)
           SBUF=a;//把從PC機(jī)發(fā)送過來的數(shù)據(jù)返回給PC機(jī)
           while(!TI);//沒有發(fā)送完等待
           TI=0;//清發(fā)送完中斷標(biāo)志
                   if(a==1){
                                P0 = 0x00;
                   }
                   if(a==0){
                                P0 = 0xff;
                   }
       }
  }  
}


新建文件夾 (2).zip

41.46 KB, 下載次數(shù): 10

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

使用道具 舉報(bào)

沙發(fā)
ID:100391 發(fā)表于 2018-11-5 19:23 | 只看該作者
你是不是忘記給TL1賦值了?
回復(fù)

使用道具 舉報(bào)

板凳
ID:277550 發(fā)表于 2018-11-5 19:46 | 只看該作者
PC 串口要按十六進(jìn)制發(fā)1,即ASCII 是1 ,而不是字符'1'。。。。。。。。。。

否則,程序要修改成

                   if(a==’1‘){
                                P0 = 0x00;
                   }
                   if(a==‘0’){
                                P0 = 0xff;
                   }

評(píng)分

參與人數(shù) 1黑幣 +2 收起 理由
yin... + 2 贊一個(gè)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:280876 發(fā)表于 2018-11-5 20:41 | 只看該作者
#include<reg52.h>
#include<string.h>

void main (void)
{     char a,b=0;
  SCON=0x50;//串行口方式1
  PCON=0x00;//T1初始化,
  TMOD=0x20;//T1設(shè)為方式2
  TH1=0xFD;//選9600波特,fosc=11.0592MHz
  TR1=1;//啟動(dòng)T1  
  while(1)
    {
      if(RI)//如果接收到數(shù)據(jù),就把接收到的數(shù)回發(fā)給PC
      {                      RI=0;//清接收標(biāo)志
           a=SBUF ;//讀串行口數(shù)據(jù)
           SBUF=a;//把從PC機(jī)發(fā)送過來的數(shù)據(jù)返回給PC機(jī)
           while(!TI);//沒有發(fā)送完等待
           TI=0;//清發(fā)送完中斷標(biāo)志
            switch(a)
             {
               case 0x00 : P0=0x00; break;   
               case 0x01 : P0=0xAA; break;
               case 0x02 : P0=0xFF; break;
             }   
       }
   }  
}
有強(qiáng)迫癥,幫你整理一下。。

評(píng)分

參與人數(shù) 1黑幣 +3 收起 理由
yin... + 3 贊一個(gè)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

5#
ID:213173 發(fā)表于 2018-11-5 21:01 | 只看該作者
void main (void)
{ char a,b=0;
  SCON=0x50;//串行口方式1
  PCON=0x00;//T1初始化,
  TMOD=0x20;//T1設(shè)為方式2
  TH1=0xFD;//選9600波特,fosc=11.0592MHz
  TL1=0xFD;//漏寫
  TR1=1;//啟動(dòng)T1  
  while(1)
回復(fù)

使用道具 舉報(bào)

6#
ID:421437 發(fā)表于 2018-11-5 23:17 | 只看該作者
pc給它發(fā)的是不是ascii碼?
串口設(shè)置為二進(jìn)制

評(píng)分

參與人數(shù) 1黑幣 +2 收起 理由
yin... + 2 贊一個(gè)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

7#
ID:421482 發(fā)表于 2018-11-6 08:17 | 只看該作者
串口的發(fā)送設(shè)置

評(píng)分

參與人數(shù) 1黑幣 +2 收起 理由
yin... + 2 贊一個(gè)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

8#
ID:396671 發(fā)表于 2018-11-6 21:02 | 只看該作者
懂了,還是我自己沒學(xué)好,謝謝大佬們的回答
回復(fù)

使用道具 舉報(bào)

9#
ID:396671 發(fā)表于 2018-11-6 21:09 | 只看該作者
devcang 發(fā)表于 2018-11-5 19:46
PC 串口要按十六進(jìn)制發(fā)1,即ASCII 是1 ,而不是字符'1'。。。。。。。。。。

否則,程序要修改成

明白了,謝謝大佬。
還有一個(gè)問題
PC機(jī)向單片機(jī)發(fā)送命令啟動(dòng)或停止蜂鳴器播放音樂,
當(dāng)播放音樂時(shí)該怎么停止,這時(shí)是播放函數(shù)運(yùn)行中,pc輸入數(shù)據(jù)要等到放完才接受,也就是停不下來
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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