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

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

QQ登錄

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

搜索

51單片機(jī)串口通信問(wèn)題,求解答

查看數(shù): 2781 | 評(píng)論數(shù): 7 | 收藏 2
關(guān)燈 | 提示:支持鍵盤翻頁(yè)<-左 右->
    組圖打開(kāi)中,請(qǐng)稍候......
發(fā)布時(shí)間: 2020-2-20 20:07

正文摘要:

串口設(shè)置通信,輸入數(shù)字為什么燈就是不亮,是程序哪里有問(wèn)題還是串口助手設(shè)置錯(cuò)了  串口中斷中能使用while(TI==0)  替代while(!TI)   還有人說(shuō)不能在串口中斷中使用while循環(huán)  & ...

回復(fù)

ID:685842 發(fā)表于 2020-2-21 15:14
。。jj 發(fā)表于 2020-2-21 09:22
樓主的程序沒(méi)有問(wèn)題,我在開(kāi)發(fā)板上試了一下,我的led可以亮,應(yīng)該是樓主的led出了問(wèn)題。

問(wèn)題找出來(lái)了   買板子的時(shí)候商家說(shuō)晶振是12MHZ的   但板子晶振是11.0592  波特率一直不對(duì)
ID:685842 發(fā)表于 2020-2-21 14:31
。。jj 發(fā)表于 2020-2-21 09:22
樓主的程序沒(méi)有問(wèn)題,我在開(kāi)發(fā)板上試了一下,我的led可以亮,應(yīng)該是樓主的led出了問(wèn)題。

燈可以亮  好像接受出現(xiàn)了問(wèn)題    發(fā)送1的時(shí)候燈led6,led7都亮了   但返回的數(shù)據(jù)一直亂碼
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar i;
sbit led0=P2^0;
sbit led1=P2^1;
sbit led2=P2^2;
sbit led3=P2^3;
sbit led4=P2^4;
sbit led5=P2^5;
sbit led6=P2^6;
sbit led7=P2^7;
void uart_init() //串口初始化函數(shù)
{
        TMOD=0x20;         //設(shè)置計(jì)數(shù)器工作方式2
        TH1=0xF3;         //計(jì)數(shù)器初始值設(shè)置,注意波特率是4800
        TL1=0xF3;
        PCON=0x80;         //波特率加倍
        TR1=1;                 //打開(kāi)計(jì)數(shù)器
        SCON=0x50;         //設(shè)置為工作方式1
        ES=1;                 //打開(kāi)接收中斷
        EA=1;                 //打開(kāi)總中斷
}
void  uart() interrupt 4
{
        uchar receiveData;
        i=SBUF;
                  
                switch(i)
        {
                case '0':led0=0;break;
                case '1':led1=0;break;
                case '2':led2=0;break;
                case '3':led3=0;break;
                case '4':led4=0;break;
                case '5':led5=0;break;
//                case '6':led6=0;break;
//                case '7':led7=0;break;
                default:P2=0XFF;break;
        }
        receiveData=SBUF;        //出去接收到的數(shù)據(jù)
                if(RI==1)
                {
                        led6=0;
                }
        RI=0;                            //清除接收中斷標(biāo)志位
        SBUF=receiveData;   //將接收到的數(shù)據(jù)放入到發(fā)送寄存器
        while(!TI);                    //等待發(fā)送數(shù)據(jù)完成
                if(TI==1)
                {
                        led7=0;
                }
        TI=0;                            //清除發(fā)送完成標(biāo)志位
}
int main()
{
          uart_init();        //串口初始化
          while(1);
          return 0;
}
ID:685842 發(fā)表于 2020-2-21 14:13
wulin 發(fā)表于 2020-2-21 06:07
從程序看沒(méi)有嚴(yán)重問(wèn)題。分支判斷使用了字符數(shù)字0~7 case '0':led0=0;break;,串口助手要用文本模式發(fā)送數(shù)字 ...

請(qǐng)教一下大佬  現(xiàn)在能接受和發(fā)送但是一直是亂碼  這個(gè)哪里錯(cuò)了嗎
晶振是12MHZ   
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar  temp=85;
sbit  LED1=P2^0;
void   Delay1ms(unsigned int  T)
{
        unsigned  int  x;
        for(;T>0;T--)
        {
                for(x=110;x>0;x--);       
        }
}
void uart_init() //串口初始化函數(shù)
{
        TMOD=0x20;         //設(shè)置計(jì)數(shù)器工作方式2
        TH1=0xF3;         //計(jì)數(shù)器初始值設(shè)置,注意波特率是4800
        TL1=0xf3;
        PCON=0x80;         //波特率加倍
        TR1=1;                 //打開(kāi)計(jì)數(shù)器
        SCON=0x50;         //設(shè)置為工作方式1
        ES=1;                 //打開(kāi)接收中斷
        EA=1;                 //打開(kāi)總中斷
}
void  SentData(uchar temp)
{
        SBUF=temp;

        while(TI==0);
        if(TI==1)
        {
                LED1=~LED1;       
        }
        TI=0;
}
int main()
{
        uart_init();
        while(1)
        {
                SentData(temp);
                Delay1ms(250);
                Delay1ms(250);       
        }
        return 0;
}   C:\Users\Administrator\Desktop\串口發(fā)送問(wèn)題.png
ID:696029 發(fā)表于 2020-2-21 12:24
case '0':led0=0;break;
                case '1':led1=0;break;
                case '2':led2=0;break;
                case '3':led3=0;break;
                case '4':led4=0;break;
                case '5':led5=0;break;
                case '6':led6=0;break;
                case '7':led7=0;break;
                default:P2=0XFF;break;
這個(gè)地方是不是要改成led0=~led0;每次取一下反
ID:687423 發(fā)表于 2020-2-21 09:22
樓主的程序沒(méi)有問(wèn)題,我在開(kāi)發(fā)板上試了一下,我的led可以亮,應(yīng)該是樓主的led出了問(wèn)題。
ID:94031 發(fā)表于 2020-2-20 22:07
根據(jù)串口助手截圖看來(lái)你的串口通信問(wèn)題不大,燈不亮要用萬(wàn)用表查led相關(guān)電路是否沒(méi)接對(duì),或者不通。
ID:213173 發(fā)表于 2020-2-20 20:07
從程序看沒(méi)有嚴(yán)重問(wèn)題。分支判斷使用了字符數(shù)字0~7 case '0':led0=0;break;,串口助手要用文本模式發(fā)送數(shù)字0~7,接收端才能正確解析信息,如果用HEX模式發(fā)送數(shù)字就要去掉分支語(yǔ)句中的單引號(hào)。

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久国产一区二区三区 | 国产精品久久精品 | 日本人和亚洲人zjzjhd | 亚洲免费在线播放 | 一区二区三区欧美在线观看 | 国产1区 | 国产成人精品一区二区三区在线 | 国产 日韩 欧美 在线 | 中文福利视频 | 龙珠z国语版在线观看 | 一区二区av | 国产高清免费视频 | 99re在线视频 | 狠狠操狠狠操 | 国产日韩精品在线 | av中文字幕在线观看 | 午夜天堂精品久久久久 | 亚洲欧美中文日韩在线v日本 | 免费看黄色片 | 成人精品免费视频 | 亚洲国产一区在线 | 亚洲激情一区二区 | 国产色片在线 | 三级在线免费观看 | 久久人体 | 精品国产不卡一区二区三区 | 自拍偷拍中文字幕 | 欧洲一区在线观看 | 亚洲成人一区二区三区 | 日韩视频一区二区在线 | 亚洲欧美日本国产 | 久久久www成人免费无遮挡大片 | 天天操一操 | 国产亚洲一区二区在线观看 | 精品免费av | 欧美寡妇偷汉性猛交 | 国产精品日韩欧美一区二区三区 | av一区二区三区四区 | 日韩av成人 | 自拍视频一区二区三区 | 国产99久久精品 |