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

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

QQ登錄

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

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

單片機(jī)設(shè)置定時(shí)/計(jì)數(shù)器對(duì)串口通信有什么幫助嗎

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
這是89c52的51單片機(jī)教程中演示串口的一個(gè)示例程序:
#include "reg52.h"
typedef unsigned int u16;//對(duì)系統(tǒng)默認(rèn)數(shù)據(jù)類型進(jìn)行重定義
typedef unsigned char u8;
void uart_init(u8 baud)
{
    TMOD|=0X20;     //設(shè)置計(jì)數(shù)器工作方式 2
    SCON=0X50;     //設(shè)置為工作方式 1
    PCON=0X80;     //波特率加倍
    TH1=baud;     //計(jì)數(shù)器初始值設(shè)置
    TL1=baud;
    ES=1; //打開(kāi)接收中斷     
    EA=1;     //打開(kāi)總中斷
    TR1=1;     //打開(kāi)計(jì)數(shù)器
}


void main()
{
    uart_init(0XFA);//波特率為 9600
    while(1)
    {
    }
}
void uart() interrupt 4 //串口通信中斷函數(shù)
{
    u8 rec_data;
    RI = 0;     //清除接收中斷標(biāo)志位
    rec_data=SBUF;     //存儲(chǔ)接收到的數(shù)據(jù)
    SBUF=rec_data;     //將接收到的數(shù)據(jù)放入到發(fā)送寄存器
    while(!TI);     //等待發(fā)送數(shù)據(jù)完成
        TI=0;     //清除發(fā)送完成標(biāo)志位
}                                            

這個(gè)程序可以實(shí)現(xiàn)將串口接收到的數(shù)據(jù)再發(fā)送回相連的電腦。
設(shè)置定時(shí)器對(duì)這樣的串口通信有什么用嗎,我感覺(jué)沒(méi)有用啊。

還有為什么要波特率加倍,波特率一開(kāi)始又是什么。。暈
真的很迷惑


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

使用道具 舉報(bào)

沙發(fā)
ID:1027834 發(fā)表于 2022-7-6 12:00 | 只看該作者
51單片機(jī)沒(méi)有獨(dú)立的波特率發(fā)生器,它需要借助定時(shí)器當(dāng)作波特率發(fā)生器。如果你不設(shè)置定時(shí)器的話,串口這種異步通訊,沒(méi)有波特率當(dāng)作時(shí)鐘,它怎么發(fā)送數(shù)據(jù)呢?又怎么接收到正確的數(shù)據(jù)呢?
至于波特率加倍……我一般不加倍……不加倍會(huì)好理解一些,就是你算出來(lái)的波特率。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:1028115 發(fā)表于 2022-7-6 13:22 | 只看該作者
Materialism 發(fā)表于 2022-7-6 12:00
51單片機(jī)沒(méi)有獨(dú)立的波特率發(fā)生器,它需要借助定時(shí)器當(dāng)作波特率發(fā)生器。如果你不設(shè)置定時(shí)器的話,串口這種異 ...

但是這個(gè)定時(shí)器的中斷號(hào)是2,也沒(méi)有用到中斷2呀。這個(gè)定時(shí)器就感覺(jué)和串口通信沒(méi)什么聯(lián)系
回復(fù)

使用道具 舉報(bào)

地板
ID:161164 發(fā)表于 2022-7-6 13:30 | 只看該作者
同意沙發(fā)
補(bǔ)充一下自己的理解
波特率的詳細(xì)原理可以去百度
以9600為例,單位是bps(Bit per Second)
就是一秒傳輸9600位元
1200字元
即每字元耗時(shí)0.833毫秒
發(fā)個(gè)"Hello World!"就耗時(shí)10毫秒了
以例程的阻塞式等待方式發(fā)送
這10毫秒什么都不能干!

從而得知波特率加倍就是加快傳輸速度
減短發(fā)送耗時(shí)
回復(fù)

使用道具 舉報(bào)

5#
ID:1028115 發(fā)表于 2022-7-6 13:49 | 只看該作者
Materialism 發(fā)表于 2022-7-6 12:00
51單片機(jī)沒(méi)有獨(dú)立的波特率發(fā)生器,它需要借助定時(shí)器當(dāng)作波特率發(fā)生器。如果你不設(shè)置定時(shí)器的話,串口這種異 ...

就是說(shuō),為什么這個(gè)定時(shí)器的TL和TH都要設(shè)為0xfa(250)呢,別的值不行嗎
回復(fù)

使用道具 舉報(bào)

6#
ID:213173 發(fā)表于 2022-7-6 14:51 | 只看該作者
此程序只是演示最基本的串口通訊的配置和使用,實(shí)際使用中往往傳輸?shù)氖前凑胀ㄓ崊f(xié)議編制的數(shù)據(jù)串,可能是只發(fā)不收,也可能是只收不發(fā),更可能是收/發(fā)不同內(nèi)容的數(shù)據(jù)。至于為什么要設(shè)置定時(shí)器作波特率發(fā)生器樓上已經(jīng)解釋。對(duì)于晶振頻率5.5296、11.0592、22.1184......MHz,波特率加倍與否無(wú)所謂,但對(duì)于使用6.0、12.0、24.0.....MHz晶振的單片機(jī)會(huì)因波特率誤差較大而錯(cuò)碼,選擇波特率加倍設(shè)置可以降低波特率誤差。
回復(fù)

使用道具 舉報(bào)

7#
ID:1038594 發(fā)表于 2022-7-6 16:40 | 只看該作者
串口要運(yùn)行波特率是至關(guān)重要的,波特率規(guī)定了數(shù)據(jù)傳輸?shù)乃俾剩敲磫纹瑱C(jī)靠什么產(chǎn)生標(biāo)準(zhǔn)的波特率呢,那么就需要單片機(jī)的定時(shí)器產(chǎn)生,所以串口離不開(kāi)波特率,產(chǎn)生波特率的是定時(shí)器。
回復(fù)

使用道具 舉報(bào)

8#
ID:1028115 發(fā)表于 2022-7-7 14:00 | 只看該作者
謝謝各位回復(fù)。還有個(gè)問(wèn)題就是,我查閱了那些文檔,看了視頻,我都沒(méi)有找到51單片機(jī)的stc89c52這個(gè)型號(hào)的串口是和定時(shí)器1相關(guān)的。我看電路圖也沒(méi)看到他們有什么關(guān)系。你們都是怎么知道串口和哪個(gè)定時(shí)器相關(guān)的呢?
而且定時(shí)器的初值,高8位和低8位為什么都直接設(shè)置為0xfa呢。
回復(fù)

使用道具 舉報(bào)

9#
ID:883242 發(fā)表于 2022-7-7 15:31 | 只看該作者
wulin 發(fā)表于 2022-7-6 14:51
此程序只是演示最基本的串口通訊的配置和使用,實(shí)際使用中往往傳輸?shù)氖前凑胀ㄓ崊f(xié)議編制的數(shù)據(jù)串,可能是只 ...

波特率加倍只能惡化誤差,減半才是減少誤差的方法。
回復(fù)

使用道具 舉報(bào)

10#
ID:213173 發(fā)表于 2022-7-7 16:32 | 只看該作者
Hephaestus 發(fā)表于 2022-7-7 15:31
波特率加倍只能惡化誤差,減半才是減少誤差的方法。

難道STC-ISP算錯(cuò)了???




回復(fù)

使用道具 舉報(bào)

11#
ID:1027834 發(fā)表于 2022-8-19 18:20 | 只看該作者
kirei0715 發(fā)表于 2022-7-6 13:22
但是這個(gè)定時(shí)器的中斷號(hào)是2,也沒(méi)有用到中斷2呀。這個(gè)定時(shí)器就感覺(jué)和串口通信沒(méi)什么聯(lián)系

在你貼出來(lái)的程序中,沒(méi)有發(fā)現(xiàn)定時(shí)器中斷號(hào)2,只有一個(gè)定時(shí)器工作模式2,模式2是8位自動(dòng)重裝模式。我查看89C52的DATASHEET,發(fā)現(xiàn)他只能用定時(shí)器1做波特率發(fā)生器,而且 TR1=1; 也確實(shí)是定時(shí)器1的開(kāi)啟語(yǔ)句。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品国产三级国产aⅴ入口 | a级片播放| 久久一区二区三区四区五区 | 国产精品亚洲综合 | 亚洲欧美综合精品久久成人 | 97免费视频在线观看 | 亚洲精品第一国产综合野 | 性高湖久久久久久久久3小时 | 免费在线一区二区三区 | 久久久精品网 | 91成人在线 | 免费成人在线网站 | 天天爱天天操 | 亚洲久草 | 国产二区三区 | 国产欧美精品区一区二区三区 | 久久久久久99 | 午夜午夜精品一区二区三区文 | 成人免费高清 | 婷婷久久五月天 | av色站| 久久久www成人免费无遮挡大片 | 亚洲欧美少妇 | 一区二区三区视频 | 欧美一级片在线看 | 欧美综合国产精品久久丁香 | 欧美日韩在线精品 | 亚洲精品一区二区 | 欧美日韩在线国产 | 性一区 | 欧美精品一二区 | 久久中文字幕在线 | 国产高清视频在线播放 | 国产成人一区二区三区精 | 一级毛片在线播放 | 国产高清一区二区三区 | 91精品一区二区三区久久久久 | 亚洲成人免费在线观看 | 亚洲激情一区二区 | 欧美一区不卡 | 精品欧美一区二区三区 |