色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用Keil C編譯器配置具有不同定時器的DS89C430雙串口

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-02-21 11:56 ? 次閱讀

DS89C430和其他高速微控制器具有兩個相同的串行端口。本應用筆記向用戶介紹微控制器中使用的通用異步接收器/發送器。應用筆記討論了波特時鐘源、中斷模式、波特率生成、異步10位操作和雙串行端口操作。代碼示例重點介紹了如何使用定時器 1 和定時器 2 作為串行端口的波特率發生器。

介紹

DS89C430高速微控制器的串行接口與其他8051處理器的串行接口相同。

本應用筆記介紹了該接口最常用的工作模式(10位異步或標準全雙工異步通信模式1)的設置和操作。將提供港口運行的總體概述,特別是模式1操作和波特率生成。將介紹詳細的軟件示例。示例說明了使用具有不同計時器配置的雙串行端口。DS89C430用戶指南和下面的附錄A描述了DS89C430寄存器在系統時鐘頻率設置、波特率產生和串行端口操作中涉及的所有寄存器。

波特率生成

每種模式都有一個與之關聯的波特率發生器。對于每個 UART,此生成器通常是相同的。幾種波特率生成技術具有獨立于兩個UART的選項。以下波特率描述特定于為模式 1 操作配置的串行端口使用的計時器和波特率生成公式。

使用定時器 1 生成波特率

要使用定時器1作為波特率發生器,通常將其置于8位自動重新加載模式。這樣,CPU 就不參與波特率生成。請注意,不應啟用計時器中斷。在 8 位自動重新加載模式(定時器 1、模式 2)中,重新加載值存儲在 TH1 中。因此,定時器1輸入時鐘頻率和TH1的組合決定了波特率。定時器1輸入時鐘相對于外部晶體時鐘,可以通過兩種方式改變:

更改系統時鐘,或

更改定時器輸入時鐘分頻比。

通過使用 PMR 特殊功能寄存器中的時鐘分頻位 (CD1:0) 來修改系統時鐘。定時器1輸入時鐘分頻比可使用T1M (CKCON.4)和T1MH (CKMOD.4)寄存器位進行配置。將 T1MH 位設置為邏輯 1 會導致系統時鐘用于時鐘定時器 1。當 T1MH 清除 (= 0) 時,將 T1M 位設置為邏輯 1 可為定時器 4 提供系統時鐘除以 1 的輸入。當T1M和T1MH均為邏輯0時,定時器1輸入時鐘固定在振蕩器頻率除以12。使用電源管理模式時,將 T1MH 或 T1M 設置為邏輯 1 會導致系統時鐘 (OSC/1024) 用作定時器 1 的輸入時鐘。如果在電源管理模式下兩個位都為清除 (= 0),則系統時鐘除以 3 (OSC/3072) 提供給定時器 1。

表1總結了每種不同配置的外部晶體頻率與定時器1輸入時鐘之間的關系。

系統時鐘模式 PMR 寄存器位
(4x/2x、CD1、CD0)
定時器1輸入時鐘頻率
T1MH, T1M = 00 T1MH, T1M = 01 T1MH, T1M = 1X
晶體乘法模式 4X 100 OSC/12 OSC/1 OSC/0.25
晶體乘法模式 2X 000 OSC/12 OSC/2 OSC/0.5
除以 1(默認值) X01, X10 OSC/12 OSC/4 OSC/1
電源管理模式 (/1024) X11 OSC/3072 OSC/1024 OSC/1024

使用定時器 1 的波特率公式

pYYBAGP0QQ6ASKvhAAAOJol9cRk043.gif?imgver=1

表2列出了TH1寄存器的重載值,用于生成一些更常見的波特率。

波特率 斯莫德 輸入時鐘頻率(1分頻)
TH1 - 重新加載值
OSC = 11.05MHz OSC = 22.11MHz
115200 0/1 FD/FA FA/F4
57600 0/1 FA/F4 F4/E8
38400 0/1 F7/EE 電波/直流電
28800 0/1 F4/E8 E8/D0
19200 0/1 電波/直流電 直流/B8
14400 0/1 E8/D0 D0/A0
9600 0/1 直流/B8 B8/70
1200 0/1 不適用 不適用

使用定時器 2 生成波特率

要將定時器 2 用作串行端口 0 的波特率發生器,定時器配置為自動重新加載模式。然后,TCLK 或 RCLK 位(或兩者)設置為邏輯 1。TCLK = 1 選擇定時器 2 作為發射器的波特率發生器;RCLK = 1 為接收器選擇計時器 2。因此,串行端口 0 可以通過為一個數據方向選擇定時器 1,為另一個數據方向選擇定時器 2,使發射器和接收器以不同的波特率運行。RCLK 和 TCLK 分別位于 T2CON.4 和 TCON.5 中。

雖然定時器2輸入時鐘的配置可以類似于定時器1,但必須將其置于波特率發生器模式才能由串行端口0使用。將 RCLK 或 TCLK 設置為邏輯 1 會選擇定時器 2 進行波特率生成。完成此操作后,定時器2的輸入時鐘固定為振蕩器頻率除以2。唯一的例外是當定時器2用于在電源管理模式(PMM)下生成波特率時。對于 PMM,系統時鐘 (OSC/1024) 用作計時器 2 的輸入時鐘。設置 RCLK 或 TCLK 時,定時器 2 中斷將自動禁用。此外,TF2 (TCON.7) 標志未在計時器滾動更新時設置。下表3總結了各種配置的外部晶體頻率與定時器2輸入時鐘之間的關系。

系統時鐘模式 PMR 寄存器位
(4x/2x、CD1、CD0)
定時器2輸入時鐘頻率
波特率發生器模式
(RCLK或TCLK = 1)
晶體乘法模式 4X 100 OSC/2
晶體乘法模式 2X 000 OSC/2
除以 1(默認值) X01, X10 OSC/2
電源管理模式 (/1024) X11 OSC/1024

使用定時器 2 的波特率公式

pYYBAGP0QRCAfop7AAASAA65qJs039.gif?imgver=1

表4顯示了RCAP2H和RCAP2L寄存器的重載值,用于生成一些更常見的波特率。

波特率 輸入時鐘頻率(1分頻)
RCAP2H/RCAP2L - 重新加載值
OSC = 11.05MHz OSC = 22.11MHz
115200 FF/FD FF/FA
57600 FF/FA FF/F4
38400 FF/F7 FF/EE
28800 FF/F4 FF/E8
19200 FF/EE FF/直流
14400 FF/E8 FF/D0
9600 FF/直流 FF/B8
1200 鐵/E0 FD/C0

串行端口初始化

要使用UART函數,必須初始化串行端口。此過程包括選擇模式和時基,然后初始化波特率發生器。然后可以使用串行通信。見表5。波特率發生器運行后,UART可以發送/接收數據。大多數串行端口控制由 SCON0 和 SCON1 寄存器提供。有關這些寄存器的詳細位說明,請參考上文引用的DS89C430用戶指南。

SM0 SM1 SM2 模式 功能 長度(位) 時期
0 0 0 0 同步 8 參見 PMR 寄存器
0 0 1 0 同步 8 參見 PMR 寄存器
0 1 X 1 異步 10 定時器 1 或 2(僅限端口 0)
波特率方程
1 0 0 2 異步 11 參見 PMR 寄存器
1 0 1 2 與多處理器通信異步 11 參見 PMR 寄存器
1 1 0 3 異步 11 定時器 1 或 2(僅限端口 0)
波特率方程
1 1 1 3 與多處理器通信異步 11 定時器 1 或 2(僅限端口 0)
波特率方程

模式 1

如前所述,我們只對異步模式 1 操作感興趣。此異步模式通常用于與 PC、調制解調器和其他類似接口進行通信。此模式提供標準的全雙工異步通信。總共傳輸 10 位,包括 1 個起始位、8 個數據位和 1 個停止位。接收到的停止位存儲在相關SCON寄存器的位位置RB8中。

在模式 1 中,波特率是定時器溢出的函數。這使得波特率可由用戶編程。兩個UART在模式1配置方面存在的一個區別是:串行端口1只能使用計時器1。相反,串行端口 0 可以使用定時器 1 或定時器 2 來生成波特率。如果兩個串行端口使用相同的計時器,則它們以相同的波特率運行。或者,一個定時器的運行速度可以是另一個定時器的兩倍(當波特率倍增器位 PCON.7 和 WDCON.7 的配置不同時)。如果兩個UART使用不同的定時器,則彼此相關的波特率配置不會那么嚴格。模式 1 的波特率生成在上面定時器 1 和定時器 2 的波特率生成部分中進行了討論。以下示例提供了更多詳細信息

串行通信中斷

每個UART都可以生成一個中斷,每個UART都有自己的中斷使能、向量和優先級。每個UART中斷都有兩個標志(RI,TI),ISR使用它來確定中斷是來自接收的字還是傳輸的字。當UART完成字的傳輸時,將設置TI位并生成中斷(如果啟用)。同樣,UART 設置 RI 位,并在完全接收到字時生成中斷。在完全接收或傳輸字之前,不會通知 CPU。或者,如果啟用了中斷,則這些標志中的任何一個的設置都會導致跳轉到串行通道的關聯中斷向量。DS89C430的中斷向量表見表6。

中斷 中斷向量 自然秩序 中斷標志 使 優先級控制
電源故障 0033H 0(最高) PFI (WDCON.4) EPFI (WDCON.5) 不適用
外部中斷 0 0003H 1 IE0 (TCON.1) EX0 (IE.0) MPX0 (IP1.0)/LPX0 (IP0.0)
計時器 0 溢出 000Bh 2 TF0 (TCON.5) ET0 (IE.1) MPT0 (IP1.1)/LPT0 (IP0.1)
外部中斷 1 0013H 3 IE1 (TCON.3) EX1 (IE.2) MPX1 (IP1.2)/LPX1 (IP0.2)
計時器 1 溢出 001Bh 4 TF1 (TCON.7) ET1 (IE.3) MPT1 (IP1.3)/LPT1 (IP0.3)
串行端口 0 0023H 5 RI_0 (SCON0.0)/TI_0 (SCON0.1) ES0 (IE.4) MPS0 (IP1.4)/LPS0 (IP0.4)
計時器 2 溢出 002Bh 6 TF2 (T2CON.7)/EXF2 (T2CON.6) ET2 (IE.5) MPT2 (IP1.5)/LPT2 (IP0.5)
串行端口 1 003Bh 7 RI_1 (SCON1.0)/TI_1 (SCON1.1) ES1 (IE.6) MPS1 (IP1.6)/LPS1 (IP0.6)
外部中斷 2 0043H 8 IE2 (EXIF.4) EX2 (EIE.0) MPX2 (EIP1.0)/LPX2 (EIP0.0)
外部中斷 3 004Bh 9 IE3 (EXIF.5) EX3 (EIE.1) MPX3 (EIP1.1)/LPX3 (EIP0.1)
外部中斷 4 0053H 10 IE4 (EXIF.6) EX4 (EIE.2) MPX4 (EIP1.2)/LPX4 (EIP0.2)
外部中斷 5 005Bh 11 IE5 (EXIF.7) EX5 (EIE.3) MPX5 (EIP1.3)/LPX5 (EIP0.3)
看門狗中斷 0063H 12 WDIF (WDCON.3) EWDI (EIE.4) MPWDI (EIP1.4)/LPWDI (EIP0.4)

為了使用Keil?編譯器開發C代碼,我們需要將DS89C430的中斷向量與其中斷號相匹配。表 7 顯示了中斷的 Keil C 編譯器編號。

中斷編號 地址 中斷編號 地址
0(外部中斷 0) 0003H 16 0083H
1(定時器/計數器 0) 000Bh 17 008Bh
2(外部中斷 1) 0013H 18 0093H
3(定時器/計數器 1) 001Bh 19 009Bh
4(串行端口) 0023H 20 00A3h
5(定時器/計數器 2) 002Bh 21 00ABh
6 0033H 22 00B3小時
7 003Bh 23 00BBh
8 0043H 24 00C3h
9 004Bh 25 00立方比
10 0053H 26 00D3h
11 005Bh 27 00分貝
12 0063H 28 00E3h
13 006Bh 29 00EBh
14 0073H 30 00F3h
15 007Bh 31 00聯邦小時

從表 7 中,串行端口 0 分配了中斷號 4,串行端口 1 分配了中斷號 7。

使用 Keil C編譯器創建和編譯 C 應用程序

假設讀者已經擁有 Keil C 編譯器。本應用筆記解釋了如何使用Keil μVision?工具套件為Maxim的超高速閃存微控制器系列(包括DS89C430)構建C應用。本文還介紹了使用Maxim微控制器工具包(MTK)應用將編譯的應用加載到微控制器的過程。DS89C430插入DS89C450評估(EV)板。有關該板DIP開關的設置和位置,請查看完整的DS89C450數據資料。要使用串行端口 1,請將 SW1.6 和 SW1.7 放在 ON 位置。

雙串行端口示例

以下示例演示了DS89C430上兩個串行端口的使用。它們說明了如何以不同計時器生成的不同波特率初始化和使用兩個串行端口。如前所述,有關串行端口 0 的許多信息同樣適用于串行端口 1。但是,這些示例將有助于澄清有關使用串行端口的任何混淆。

在所有示例中,軟件只需將消息輸出到分別連接到端口 0 和端口 1 的終端應用程序(此處顯示的 MTK)。然后,軟件等待輸入。當任一端子向DS89C430發送字符時,設置相關的RI位。中斷使軟件識別出此位已設置。然后,軟件讀取接收到的字符并將其傳輸到兩個串行端口的傳輸緩沖區。為了便于說明,字符通過串行端口 0 回顯到終端 0,并在通過串行端口 1 傳輸到終端 1 之前增加 1。

在示例中,輸入時鐘頻率設置為默認值 1 分頻;兩個 SMOD 位被清除;計時器的中斷被禁用;定時器的模式已初始化;并加載計數和重新加載寄存器。這完全配置了波特時鐘生成。將兩個串行控制寄存器設置為所需模式后,定時器啟動并開始串行通信。所有軟件應用程序示例都包括包含中斷子例程和其他實用程序函數的 DualPort.h 頭文件。

結論

本應用筆記展示了使用兩個標準串行端口在軟件中實現10位異步UART是多么容易。同樣的技術可用于實現超高速閃存系列微控制器中的任何串行端口,包括DS89C430、DS89C450或其他高速8051兼容器件。定時器的時鐘倍頻器和可選高速時鐘會直接影響串行端口的波特率生成。用戶可以設置直接由所選定時器的速度得出的串行端口波特率。不同串口模式的波特率公式請參考DS89C430用戶指南。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7542

    瀏覽量

    151316
  • 定時器
    +關注

    關注

    23

    文章

    3246

    瀏覽量

    114719
  • 編譯器
    +關注

    關注

    1

    文章

    1623

    瀏覽量

    49108
收藏 人收藏

    評論

    相關推薦

    怎樣通過DS89C430企業設計超聲導波激勵信號源系統?

    為什么要設計超聲導波激勵信號源系統?超聲導波激勵信號源系統軟件電路設計由哪些組成?超聲導波激勵信號源系統硬件電路設計包括哪些?請問怎樣通過DS89C430設計超聲導波激勵信號源系統?
    發表于 04-13 07:07

    DS89C430, DS89C440, DS89C450中文

    DS89C430DS89C440 和 DS89C450 是當前 8051 兼容微控制中性能最高的。此系列產品具有重新設計的處理
    發表于 04-15 17:50 ?56次下載

    DS89C430-DS89C450.pdf

    The DS89C430 and DS89C450 offer the highest performance available in 8051-compatible
    發表于 04-15 17:51 ?29次下載

    DS89C430/S89C450 pdf datasheet

    The DS89C430 and DS89C450 offer the highestperformance available in 8051-compatible
    發表于 08-13 14:06 ?4次下載

    STC89C51定時器2的應用

    STC89C51定時器2的應用
    發表于 10-21 14:15 ?105次下載
    STC<b class='flag-5'>89C</b>51<b class='flag-5'>定時器</b>2的應用

    使用免費的SDCC C編譯器開發DS89C430/450系列

    摘要:SDCC (小型設備C編譯器)是為8位微控制開發的免費C編譯器。本應用筆記演示如何使用SDCC來開發
    發表于 04-23 13:55 ?6098次閱讀
    使用免費的SDCC <b class='flag-5'>C</b><b class='flag-5'>編譯器</b>開發<b class='flag-5'>DS89C430</b>/450系列

    Keil C編譯器的使用與DS89C430/450

    application for the Ultra-High-Speed Flash family of microcontrollers, which includes the DS89C430 and the DS89C450. The process of loa
    發表于 04-23 14:03 ?1677次閱讀
    <b class='flag-5'>Keil</b> <b class='flag-5'>C</b><b class='flag-5'>編譯器</b>的使用與<b class='flag-5'>DS89C430</b>/450

    DS89C430/DS89C450超高速閃存微控制存儲

    Abstract: The Dallas Semiconductor DS89C430 ultra high-speed microcontroller is a
    發表于 04-23 15:04 ?980次閱讀
    <b class='flag-5'>DS89C430</b>/<b class='flag-5'>DS89C</b>450超高速閃存微控制<b class='flag-5'>器</b>存儲<b class='flag-5'>器</b>接

    如何配置DS89C430串口同定時器使用的Keil C

    Abstract: The DS89C430 and other high-speed microcontrollers have two identical serial ports.
    發表于 04-23 15:45 ?1697次閱讀

    基于C430編譯器的診斷信息

    基于C430編譯器的診斷信息
    發表于 10-12 17:27 ?1次下載
    基于<b class='flag-5'>C430</b><b class='flag-5'>編譯器</b>的診斷信息

    基于MSP430系列C編譯器編程指南

    基于MSP430系列C編譯器編程指南
    發表于 10-12 17:36 ?6次下載
    基于MSP<b class='flag-5'>430</b>系列<b class='flag-5'>C</b><b class='flag-5'>編譯器</b>編程指南

    使用C18編譯器定時器連接PIC18 MCU和兼容UNI/O?總線的串行EEPROM

    本文檔內容介紹了基于使用C18編譯器定時器連接PIC18 MCU和兼容UNI/O總線的串行EEPROM設計,供參考
    發表于 04-24 16:34 ?6次下載
    使用<b class='flag-5'>C</b>18<b class='flag-5'>編譯器</b>和<b class='flag-5'>定時器</b>連接PIC18 MCU和兼容UNI/O?總線的串行EEPROM

    Keil μVision調試DS89C4x0配合使用

    本應用筆記介紹如何使用Keil μVision2工具套件調試超高速閃存系列微控制的應用,包括DS89C430DS89C450。此過程涉及將調試監視
    的頭像 發表于 02-21 09:50 ?1134次閱讀
    將<b class='flag-5'>Keil</b> μVision調試<b class='flag-5'>器</b>與<b class='flag-5'>DS89C</b>4x0配合使用

    DS89C430/DS89C450超高速閃存微控制存儲接口時序

    達拉斯半導體DS89C430超高速微控制是一款每機器周期1時鐘的器件。DS89C430可直接替代舊的8051架構設計。但是,必須評估內存接口時序。本應用筆記介紹了使用DS89C430
    的頭像 發表于 03-01 14:31 ?1737次閱讀
    <b class='flag-5'>DS89C430</b>/<b class='flag-5'>DS89C</b>450超高速閃存微控制<b class='flag-5'>器</b>存儲<b class='flag-5'>器</b>接口時序

    使用Keil C編譯器處理DS5250

    本應用筆記介紹如何使用Keil μVision2工具套件為DS5240或DS5250高速安全微控制創建和編譯
    的頭像 發表于 03-01 17:10 ?1050次閱讀
    使用<b class='flag-5'>Keil</b> <b class='flag-5'>C</b><b class='flag-5'>編譯器</b>處理<b class='flag-5'>DS</b>5250
    主站蜘蛛池模板: 影音先锋色av男人资源网| 婬香婬色天天视频| 在公交车上被JB草坏了被轮J了| 这里只有精品网| china18一19 第一次| 国产精品久久一区二区三区蜜桃| 好男人WWW免费高清视频在线| 久久人妻AV一区二区软件| 漂亮的保姆6在线观看中文 | 亚洲熟伦熟女专区| 51精品少妇人妻AV一区二区| 把她带到密室调教性奴| 国产偷国产偷亚洲高清人乐享| 色窝窝亚洲AV在线观看| 亚洲日本一区二区三区在线不卡| 2020国产成人精品视频人| 99午夜视频| 国产精人妻无码一区麻豆 | 黄色软件视频app| 男人插女人逼逼| 午夜aaaa| 2020国产成人免费视频| 国产成人无码AV麻豆| 精品午夜国产福利观看| 欧美成人精品高清在线观看| 受被三个攻各种道具PLAY| 亚洲免费视频在线观看| x8国产精品视频| 韩国甜性涩爱| 欧美三级aaa| 亚洲视频在线观看网站| 成人小视频在线观看免费| 老熟女重囗味GRANNYBBW| 亚洲国产欧美日本大妈| 动漫美女被到爽了流| 暖暖视频中国在线观看免费韩国| 亚洲高清一区二区三区电影| 大桥未久电影在线观看| 男人都懂www深夜免费网站| 一品道门免费视频韩国| 国产毛多水多高潮高清|