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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1329|回復: 6
收起左側

[已解決]單片機串口程序調試問題

[復制鏈接]
ID:776619 發表于 2022-5-16 18:37 | 顯示全部樓層 |閱讀模式
最近調試51單片機程序,編譯下載后運行得不到意料的回復A的結果,程序如下:

#include "reg52.h"

typedef unsigned int u16;        //對系統默認數據類型進行重定義
typedef unsigned char u8;


/*******************************************************************************
* 函 數 名       : uart_init
* 函數功能                 : 串口通信中斷配置函數,通過設置TH和TL即可確定定時時間
* 輸    入       : baud:波特率對應的TH、TL裝載值
* 輸    出             : 無
*******************************************************************************/
void uart_init(u8 baud)
{
        TMOD|=0X20;        //設置計數器工作方式2
        SCON=0X50;        //設置為工作方式1
        PCON=0X80;        //波特率加倍
        TH1=baud;        //計數器初始值設置
        TL1=baud;
        ES=1;                //打開接收中斷
        EA=1;                //打開總中斷
        TR1=1;                //打開計數器               
}

/*******************************************************************************
* 函 數 名       : main
* 函數功能                 : 主函數
* 輸    入       : 無
* 輸    出             : 無
*******************************************************************************/
void main()
{        
        uart_init(0XFA);//波特率為9600

        while(1)
        {                        
                                                        
        }               
}

void uart() interrupt 4 //串口通信中斷函數
{
        u8 rec_data;

        RI = 0;                        //清除接收中斷標志位
        rec_data=SBUF;        //存儲接收到的數據
        SBUF=0x41;        //收到回復A
        while(!TI);                //等待發送數據完成
        TI=0;                        //清除發送完成標志位                                
}

用串口助手,輸入一個字符,得到16進制的A1。把原程序寫成輸出B,得到輸出結果是A2。把原程序寫成輸出C,得到輸出結果是A3。不知道為什么?
2022-05-16_183403.jpg

程序結果2

程序結果2

程序結果1

程序結果1
回復

使用道具 舉報

ID:1026496 發表于 2022-5-16 23:18 | 顯示全部樓層
你的晶振是多少,估計是 波特率不對所以顯示的不對,建議你算下初值 百度上有 51單片機11.0592M晶振波特率初值表
回復

使用道具 舉報

ID:390416 發表于 2022-5-16 23:40 | 顯示全部樓層
http://www.zg4o1577.cn/bbs/dpj-214747-1.html  單片機發送到串口助手,以及串口助手顯示到LCD1602
回復

使用道具 舉報

ID:776619 發表于 2022-5-17 06:35 | 顯示全部樓層
yaoyao2022 發表于 2022-5-16 23:18
你的晶振是多少,估計是 波特率不對所以顯示的不對,建議你算下初值 百度上有 51單片機11.0592M晶振波特率初 ...

12M,串口可以改波特率來適應實驗板的啊,改了作用不大。
回復

使用道具 舉報

ID:776619 發表于 2022-5-17 06:42 | 顯示全部樓層
本來程序是接收原樣返回的,返回的是亂碼,就改成固定返回一個值。試過在P3.1接一個外部的另一個串口信號發送,單針剛一接上電腦就正常顯示外部串口的值了,排除了P3.1到電腦線路問題,同時能正常下載程序運行說明實驗板能正常接收串口數據。
回復

使用道具 舉報

ID:161164 發表于 2022-5-17 09:36 | 顯示全部樓層
9600@12Mhz的誤差有點大啊~ CSDN_1652751340505.jpg

回復

使用道具 舉報

ID:776619 發表于 2022-5-17 10:34 | 顯示全部樓層
lkc8210 發表于 2022-5-17 09:36
9600@12Mhz的誤差有點大啊~

謝謝你們,換了個11.0592的晶振果然好了,那以后要用的串口程序的必須得用11.0592的晶振啰!!!這樣好了我的GPS模塊程序也可以了。用GPS信號做時鐘來對時,已通過,就是數組太大了,影響12864顯示,不知編譯時DATA,XDATA之類的選擇怎樣才最優化,現在對時功能做到了,可能數組地址空間有沖突,顯示有干擾,現在只能對時結束后把串口關了,中斷1也關斷。完美顯示時間、溫度、日期等。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人jvid在线播放 | 九九热在线免费观看 | 亚洲av毛片成人精品 | 国产精品久久久久影院色老大 | 亚洲电影在线播放 | 欧美日韩一区二区三区视频 | 免费国产一区二区 | 国产视频1 | 超碰美女在线 | 超级碰在线 | 久久久久久成人 | 日韩国产一区二区三区 | 欧美性生活网 | 2018国产精品 | 欧美精品一区久久 | 亚洲一区二区免费视频 | 午夜精品久久久久久久99黑人 | 成人免费视频在线观看 | 亚洲精品在线免费看 | 久久成人精品 | 久久久精品久久久 | 国产日韩欧美一区二区 | 中文成人在线 | 国产免费拔擦拔擦8x高清 | 欧美日韩亚洲一区二区 | 免费一区| 欧美色影院 | 久久精品视频一区二区 | 亚洲欧美日韩激情 | 欧美激情欧美激情在线五月 | 在线看免费的a | 久久久久久99 | 色综合天天网 | 91在线看| 天天操网 | 国产人成精品一区二区三 | 欧美一级毛片免费观看 | 91免费观看国产 | 欧美多人在线 | 成人h视频 | 国产精品一区二区视频 |