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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1722|回復: 0
打印 上一主題 下一主題
收起左側

HC6800-ES V2.0單片機串口通信原理與程序

[復制鏈接]
跳轉到指定樓層
樓主
HC6800-ESV2.0 串口通信
說明
平臺:windows 10 64位
開發工具:普中科技 HC6800-ES V2.0 、keil uVision2
原理
教程:串口通信原理
文檔:普中科技51單片機教程
步驟
1、確定定時器T1的工作方式(TMOD)
這里我們用的是T1定時器的工作方式2,自動重裝初值
2、計算T1的初值(TH1,TH2)
計算公式:

SMOD = 0波特率正常。SMOD = 1波特率增倍。T1溢出率就是T1定時器溢出一次的時間T的倒數,T1溢出率 = 1/T;
設X為初值,因為8位數據,所以,一次溢出時間 = 【256-X】*12/晶振頻率,得出T1的溢出率再運用之前的公式,就可以算出定時器 初值。

這里給出一個常用的表格:

  
波特率
  (bps)
  
晶振
  
(MHz)
初值
誤差(%)
晶振
  
(MHz)
初值
誤差(12MHz晶振)(%)
SMOD=0
SMOD=1
SMOD=0
SMOD=1
SMOD=0
SMOD=1
300
11.0592
0XA0
0X40
0
12
0X98
0X30
0.16
0.16
600
11.0592
0XD0
0XA0
0
12
0XCC
0X98
0.16
0.16
1200
11.0592
0XE8
0XD0
0
12
0XE6
0XCC
0.16
0.16
1800
11.0592
0XF0
0XE0
0
12
0XEF
0XDD
2.12
-0.79
2400
11.0592
0XF4
0XE8
0
12
0XF3
0XE6
0.16
0.16
3600
11.0592
0XF8,248
0XF0
0
12
0XF7
0XEF
-3.55
2.12
4800
11.0592
0XFA
0XF4
0
12
0XF9
0XF3
-6.99
0.16
7200
11.0592
0XFC
0XF8
0
12
0XFC
0XF7
8.51
-3.55
9600
11.0592
0XFD
0XFA
0
12
0XFD
0XF9
8.51
-6.99
14400
11.0592
0XFE
0XFC
0
12
0XFE
0XFC
8.51
8.51
19200
11.0592
-
0XFD
0
12


0XFD
-
8.51
28800
11.0592
0XFF
0XFE
0
12
0XFF
0XFE
8.51
8.51
需要注意的是,普中這塊開發板用的晶振是12Mhz的,所以選擇值的時候要注意,另外因為用的是12Mhz的晶振,不是11.0592Mhz,計算出來的T1定時的初值將不是一個整數,這樣進行通信時會產生累計誤差。在實踐過程中,筆者發現,在4800及以下波特率通信時,因為誤差較小,所以產生的影響很小,在通信時沒有發生過異常現象,但是高于4800時,則會產生明顯誤差,通信時傳輸的數據會嚴重失真,建議采用4800以下的波特率。

3、啟動定時器T1
4、確定串行口工作方式(SCON)
之類可以有兩種代碼:
一是按位設置,而是整塊設置,但其實本質都是按位設置。
第一種:
按位設置
1     SM0 = 0;
2     SM1 = 1;
第二種
1     SCON = 0X50;
5、中斷設置
這里我們用到的串口通信的中斷,雖然我們用到了T1定時器,但其中斷我們并不進行操作,所以我們不寫T1定時器的中斷服務程序,串口通信的中斷號為4;

詳細代碼
#include<reg52.h>
#define uchar unsigned char

void init();
void main()
{
       init();
       while(1);
}

void init()
{
       TMOD = 0x20;     //定時器T1,工作方式2
//    SCON = 0X50;      //第二種設置方式
//    PCON = 0X80;      //波特率倍增
       TH1 = 0Xe6;         //初值,設置波特率為1200
       TL1 = 0Xe6;
       REN = 1;          //允許串口接收數據
       SM0 = 0;          //設置串口方式1
       SM1 = 1;
       TR1 = 1;
       EA = 1;   //打開總中斷
       ES = 1;   //打開串口中斷
}

void ser()interrupt 4
{      
       uchar mes;
       mes = SBUF; //讀取數據
       RI = 0;       //軟件清零,為下一次中斷做準備
       SBUF = mes;
       while(!TI);     //等待發送數據完畢
       TI = 0;        //軟件清零,為下一次中斷做準備
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人精品一区二区 | 国产99久久久国产精品 | 三级欧美 | 成人在线播放网址 | aaaaaaa片毛片免费观看 | 成人精品在线视频 | 国产精品国产成人国产三级 | 国内久久 | 欧美日韩在线一区二区三区 | 国产高清在线观看 | 国产成人福利在线 | av黄色片在线观看 | 草草视频在线观看 | 亚洲人va欧美va人人爽 | 中文字幕高清 | 天堂在线www | 亚洲精品久久久久avwww潮水 | 色噜噜色综合 | 日韩精品在线一区 | 国产91丝袜在线熟 | 日韩高清黄色 | 九九色九九 | 亚洲综合在线网 | 欧美日韩一区二区三区视频 | 久久亚洲精品久久国产一区二区 | 久久久久久免费看 | 五月婷婷视频 | 成人在线观看免费 | 四虎永久在线精品免费一区二 | 喷水毛片 | 日韩手机视频 | 久久久91精品国产一区二区精品 | 91精品久久久久久久久久入口 | 午夜免费福利影院 | 九色 在线| 精品视频免费在线 | 超碰97干 | 国产目拍亚洲精品99久久精品 | 亚洲国产高清高潮精品美女 | 欧美激情综合色综合啪啪五月 | 精久久久 |