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

QQ登錄

只需一步,快速開始

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

關(guān)于單片機(jī)多機(jī)通訊的問(wèn)題 希望各位大佬指教下

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:843631 發(fā)表于 2021-2-5 01:34 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
200黑幣
  • 主機(jī)代碼
  • #include <reg52.h>
  • #define uchar unsigned char
  • #define uint unsigned int
  •         void UART_init()
  • {
  • TMOD = 0x20; //定時(shí)器1,工作方式2:8位、自動(dòng)重裝  0x0010_0000
  •   TH1 = 0xfd; //fd: 9600bps @ 11.0592M
  •   TL1 = 0xfd; //e8: 1200bps @ 11.0592M
  •   //f4: 2400bps @ 11.0592M
  •   REN = 1; //允許串口接收
  •   SM0 = 1;
  •   SM1 = 1; //SM0和SM1:串口工作模式3,主從模式 + 波特率可變
  •   SM2 = 0; //只接收地址(從機(jī)如此配置,主機(jī)不需要)
  •         TB8=1;
  •         RI=0;
  •         TI=0;
  •   TR1 = 1; //啟動(dòng)定時(shí)器1
  •   EA = 1; //中斷 總開關(guān)
  • }
  • void master(uchar addr);
  • void main()
  • {
  •        UART_init();
  •         master(0x01);
  •         while(1);
  • }
  • void master(uchar addr)
  • {
  •                 SBUF=addr;    //先發(fā)送從機(jī)地址
  •                 while(!TI);
  •                 TI=0;
  •                while(!RI);  //這里一開始接收的不是從機(jī)發(fā)送的0xaa(接收的是0xff)  一定要再接收一次才是0xaa
  •                RI=0;
  •               while(!RI);    //再接收一次才是0xaa    換了設(shè)備試了試也是這個(gè)樣子
  •               RI=0;
  •                 if(SBUF==0XAA)
  •                 {
  •                         SBUF=0XFA;
  •                         while(!TI);
  •                         TI=0;
  •                         P1=0X00;
  •                 }
  • else if(SBUF==0XFF)
  •         P1=0XF0;   //P1口是接的led燈來(lái)驗(yàn)證
  • }

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

使用道具 舉報(bào)

沙發(fā)
ID:843631 發(fā)表于 2021-2-5 01:35 | 只看該作者
從機(jī)的代碼
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
void UART_init()         //從機(jī)需要開中斷
        {
  
  TMOD = 0x20; //定時(shí)器1,工作方式2:8位、自動(dòng)重裝  0x0010_0000
  TH1 = 0xfd; //fd: 9600bps @ 11.0592M
  TL1 = 0xfd; //e8: 1200bps @ 11.0592M
  //f4: 2400bps @ 11.0592M
  REN = 1; //允許串口接收
  SM0 = 1;
  SM1 = 1; //SM0和SM1:串口工作模式3,主從模式 + 波特率可變
  SM2 = 1; //只接收地址(從機(jī)如此配置,主機(jī)不需要)
        TI=0;
        RI=0;
  ES = 1; //開串口中斷
  TR1 = 1; //啟動(dòng)定時(shí)器1
  EA = 1; //中斷 總開關(guān)
}
        void main()
{
       
        UART_init();


       
       
}



void ssio()   interrupt 4   //從機(jī)地址是0x01
{
        uchar addr;
        ES=0;
        addr=SBUF;
        RI=0;
        if(addr==0X01)
        {       
                P1=0X00;
                SBUF=0XAA;
                while(!TI);
                TI=0;
                while(!RI);
                RI=0;
                if(SBUF==0XFA)
                P1=0XF0;
               
               
        }
       
        ES=1;
}
回復(fù)

使用道具 舉報(bào)

板凳
ID:843631 發(fā)表于 2021-2-5 01:36 | 只看該作者
從機(jī)明明代碼上發(fā)送的是0xaa 不知道為什么憑空多了個(gè)0xff出來(lái)
回復(fù)

使用道具 舉報(bào)

地板
ID:213173 發(fā)表于 2021-2-5 08:41 | 只看該作者
CalmBlank 發(fā)表于 2021-2-5 01:36
從機(jī)明明代碼上發(fā)送的是0xaa 不知道為什么憑空多了個(gè)0xff出來(lái)

void main()
{
        UART_init();
        while(1);
}
回復(fù)

使用道具 舉報(bào)

5#
ID:390416 發(fā)表于 2021-2-5 08:55 | 只看該作者
單片機(jī)串口1打印程序 可以打印3個(gè)十六位的變量 http://www.torrancerestoration.com/bbs/dpj-201660-1.html
回復(fù)

使用道具 舉報(bào)

6#
ID:390416 發(fā)表于 2021-2-5 08:55 | 只看該作者
STC單片機(jī)串口發(fā)送 不需要while死等 串口接收?qǐng)?zhí)行軟件復(fù)位 http://www.torrancerestoration.com/bbs/dpj-200927-1.html
回復(fù)

使用道具 舉報(bào)

7#
ID:843631 發(fā)表于 2021-2-5 22:31 | 只看該作者
wulin 發(fā)表于 2021-2-5 08:41
void main()
{
        UART_init();

我試了一下 加了while(1)沒有變化 還是會(huì)有一個(gè)0xff發(fā)出來(lái).....
回復(fù)

使用道具 舉報(bào)

8#
ID:843631 發(fā)表于 2021-2-5 23:01 | 只看該作者
wulin 發(fā)表于 2021-2-5 08:41
void main()
{
        UART_init();

void main()
{

        UART_init();
        SBUF=0X01;
        while(!TI);
        TI=0;
        if(RI==1)
                P1=0XAA;
        while(1);

}

寫成這個(gè)樣子 P1口的led也會(huì)亮....
回復(fù)

使用道具 舉報(bào)

9#
ID:843631 發(fā)表于 2021-2-5 23:28 | 只看該作者
謝謝大佬,是串口初始化的問(wèn)題   把sm0 1 2 ren 用scon表達(dá)就沒有這個(gè)現(xiàn)象了 。。。也不知道為啥
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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