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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2825|回復: 8
收起左側

單片機串口通信出了點問題 求大神看一下

[復制鏈接]
ID:474631 發表于 2019-2-12 19:19 | 顯示全部樓層 |閱讀模式
就是輸入1的時候蜂鳴器響 2的時候led流水燈 但是什么反應都沒有 串口通信可以實現 但是不能時間額外的功能
#include "reg51.h"
#define led P0
typedef unsigned char u8;
typedef unsigned int u16;
sbit beep=P1^5;
u8 Data;
void delay(u16 i)
{
        while(i--);
}

void Communicate()
{
        TMOD=0x20;
        TH1=0xf3;TL1=0xf3;
        TR1=1;PCON=0x80;
  SCON=0x50;ES=1;EA=1;
}
void main()
{ u8 i;
        Communicate();
        while(1)
        {
         if(Data==1)
         {
                 beep=~beep;
                 delay(1000);
         }
         if(Data==2)
         {
                 led=0x80;
                 for(i=0;i<7;i++)
                 {
                         led=(led>>1);
                         delay(20000);
                 }
                 for(i=0;i<7;i++)
                 {
                         led=(led<<1);
                         delay(20000);
                 }
         }
        }
}
void tx() interrupt 4
{

        Data=SBUF;
        RI=0;
        SBUF=Data;
        while(TI==0);
        TI=0;
        
}

QQ瀏覽器截圖20190212191846.png
回復

使用道具 舉報

ID:432823 發表于 2019-2-13 07:24 | 顯示全部樓層

        RI=0;
        Data=SBUF;
        
        while(TI==0);
        TI=0;

評分

參與人數 1黑幣 +20 收起 理由
yousunny + 20 贊一個!

查看全部評分

回復

使用道具 舉報

ID:158375 發表于 2019-2-13 08:14 | 顯示全部樓層
這個未必是單片機串口通信出了問題。
void tx() interrupt 4
{
        Data=SBUF;
        RI=0;
        SBUF=Data;
        while(TI==0);
        TI=0;
}
中斷接收了數據,然后發送出去;什么時候按照你的想法處理這個數據呢?
這個中斷處理也不是很好。
回復

使用道具 舉報

ID:94031 發表于 2019-2-13 08:44 | 顯示全部樓層
查查波特率有無問題。
回復

使用道具 舉報

ID:164602 發表于 2019-2-13 09:23 | 顯示全部樓層
你的程序什么問題也沒有(已經用板子試驗通過了),是你在使用串口調試軟件時范了錯誤。
從你的程序上看:判斷是1、2——注意!注意!注意——重要的事兒說三遍,你判斷的數字1、2,不是字符1、2
而從你截圖中看到的,是發送字符1、2,當然沒反應了。呵呵呵
要勾選HEX發送嘛!

評分

參與人數 2黑幣 +40 收起 理由
yousunny + 30 很給力!
日本人孫笑川 + 10 很給力!

查看全部評分

回復

使用道具 舉報

ID:393699 發表于 2019-2-13 09:45 | 顯示全部樓層
試著用字符串比較函數strcmp替代if判斷?
回復

使用道具 舉報

ID:476086 發表于 2019-2-13 09:50 | 顯示全部樓層
1.串口接收到數據,然后根據數據內容進行蜂鳴器或者LED顯示處理后,是否需要將Data變量進行清零?
2.我們這種前后臺系統,在做延時的時候,不能直接調用DELAY這種函數的,這樣系統會死在這里很長時間的。如果此時有新的串口指令過來的話,你的MCU是無法進行處理的。
回復

使用道具 舉報

ID:476086 發表于 2019-2-13 09:54 | 顯示全部樓層
笨笨兔 發表于 2019-2-13 08:14
這個未必是單片機串口通信出了問題。
void tx() interrupt 4
{

其實是將數據保存在了Data這個變量了,我估計樓主重新發出去的操作是看看有沒有正確接收,調試用的吧。
回復

使用道具 舉報

ID:476375 發表于 2019-2-14 11:11 | 顯示全部樓層
SBUF =  Data; while(TI == 0); TI = 0;這些放到main()里面的while(1)最下面試試;中斷函數里面不能while(TI == 0);堵塞
回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美中文字幕一区二区三区 | 91精品久久久久 | 国产精品三级 | 成人日韩av | 久久福利网站 | 日日人人 | 91精品久久久久久久久 | 日韩成人免费av | 欧美精品乱码99久久影院 | 中文字幕视频在线观看免费 | 国产免费人成xvideos视频 | 久久精品国产一区二区电影 | 久久国产精品99久久久大便 | 日韩视频一区在线观看 | 中文字幕一区二区三区在线乱码 | 日韩黄a | 黄视频网站免费观看 | 久久久久国产精品 | 国产特级毛片 | 人人操日日干 | 日韩精品在线视频 | 国产精品一区二区不卡 | 中文字幕一区二区三区精彩视频 | 毛片免费视频 | 欧美日韩成人在线观看 | 综合自拍| 欧美成人h版在线观看 | 在线看av网址 | h片免费看 | 欧美成人a∨高清免费观看 91伊人 | 日日干天天操 | 国产yw851.c免费观看网站 | 韩日精品在线观看 | 亚洲精品一区中文字幕乱码 | 国产精品久久久久久一区二区三区 | 91xxx在线观看 | 一级片视频免费观看 | 成人免费网站www网站高清 | 午夜国产一级 | 99色在线视频 | 亚洲黄色一级 |