【正文】
C LKfTFC LKfC LKtTn ????107 返回 2022年 8月 17日星期三 8253/8254編程示例 ? 已知 8254各通道時鐘接 8MHz信號 , 端口地址為700H、 702H、 704H和 706H, 要求在 OUT0產(chǎn)生周期為 10us的 方波 , OUT1產(chǎn)生 2KHz的連續(xù)脈沖信號 , OUT3產(chǎn)生一個最大的負脈沖 。 除方式 2,3外,最小值都為 1。 由此可見,定時和計數(shù)的實際是計數(shù),只是定時是在計數(shù)的基礎上再乘以時鐘周期。 2.用于定時 當用于定時時,計數(shù)器裝入初值后,在 GATE為高電平情況下,由CLK脈沖觸發(fā)開始自動計數(shù),當減 1計數(shù)結束時,在 OUT端發(fā)送計數(shù)結束信號。BUSY=1等待 , 直到不忙 INC BX LOOP LP1 92 2022年 8月 17日星期三 可編程定時 /計數(shù)器 8253(8254) 三種方法 :軟件定時 、 硬件定時 、 可編程硬件定時 主要內(nèi)容: 8253/8254的內(nèi)部結構及引腳信號 8253 /8254的工作方式 8253/8254的編程 8253最高工作頻率 8254最高工作頻率為 10MHz 93 返回 2022年 8月 17日星期三 8253/8254主要功能 1.用于計數(shù) 當用于計數(shù)時,計數(shù)裝入初始值后,在 GATE為高電平的情況下,可以用外部事件作為 CLK脈沖對計數(shù)值進行減 1計數(shù),每來一個脈沖,計數(shù)器減 1一次,當計數(shù)值減到結束時,由 OUT端輸出一個信號。讀取 C口狀態(tài) AND AL, 00010000B 。屏蔽無關位 , 取 BUSY JZ LP2 。送一個字符到 8255的 A口 MOV DX, 342H LP2: IN AL, DX 。則程序段為: 解: MOV AL,10110000B ; A口方式 1輸入, B口方式 0輸出,其余 C口位輸出 OUT 63H, AL;方式選擇控制字寫入控制寄存器 MOV AL,00001001B ;置位 /復位控制字,使 PC4=1,即使 INTE=1允許內(nèi)部中斷 OUT 63H, AL ;置位 /復位控制字寫入控制寄存器 89 返回 2022年 8月 17日星期三 三 、 8255作為打印機接口實例 90 返回 2022年 8月 17日星期三 打印機接口的時序要求 數(shù)據(jù)有效 數(shù)據(jù)有效B U S YA C KD A T AS T B0 . 5 u s5 u s91 2022年 8月 17日星期三 打印程序 MOV AL, 0A8H ; 方式選擇字 (C上半口輸入 PC4) MOV DX, 343H ; 控制端口 OUT DX, AL ; 方式選擇控制字寫入控制口 MOV CX, Counter 。 對 8255的初始化程序只需要兩條指令如下: MOV AL, 95H ;方式選擇控制字 OUT 63H,AL ;寫入控制寄存器 87 返回 2022年 8月 17日星期三 端口 C置 /復位控制字 — 寫入控制口 0 D 6 D 5 D 4 D 3 D 2 D 1 D 0端口C置復位控制字標志無關位 X X X可設為 0 0 0位選擇0 0 0 =P C00 0 1 =P C10 1 0 =P C20 1 1 =P C31 0 0 =P C41 0 1 =P C51 1 0 =P C61 1 1 =P C70= 復位1= 置位0 D6 D5 D4 D3 D2 D1 D088 返回 2022年 8月 17日星期三 例 【 例 】 使 A口為方式 1輸入,且采用中斷傳送, B口采用方式 0輸出,其余 C口的位作為輸出。則對照控制字格式,得其方式選擇控制字為:10010101B=95H。方式選擇控制字 MOV DX,12BH 。 8255控制端口的地址為 12BH。 因此: 8255有兩個控制字是編程的關鍵所在 。 83 返回 2022年 8月 17日星期三 三 、 8255編程 ? 對 8255編程首先要寫入方式選擇控制字 ,然后再行輸入輸出操作 。 ? 下面分別介紹 A口輸入 、 B口輸出 、 A口輸出和 B口輸出不同情況下的內(nèi)部邏輯 。 ? 方式 1下 A和 B端口的輸入和輸出具有不同的組態(tài) 。 77 返回 2022年 8月 17日星期三 選通輸入輸出方式 方式 1 ? 方式 1規(guī)定固定的用于應答式的聯(lián)絡信號線。 ? 端口輸入具有緩沖功能;輸出具有鎖存功能 。 ? 在此方式下 , 三個數(shù)據(jù)端口 A、 B和 C中的任何一個端口都可由程序設定為 8位的輸入口或輸出口 。 (2) 與系統(tǒng)總線接口信號引腳 D7~ D0 數(shù)據(jù)線 /RD, /WR, /CS RESET 高電平有效 , 有效時 8255內(nèi)部寄存器清除 , 同時三個數(shù)據(jù)端口被自動設為輸入端口 。 ? 雙機通信的要求如下:數(shù)據(jù)為 7位 、 1位停止位 、 奇校 驗 、 波特率為 19200;雙機同時運行該程序 , 一方鍵入 的字符在另一方屏幕上顯示 , 當按下小寫字母 q時 , 結束通信回到 DOS。 65 返回 2022年 8月 17日星期三 設置波特率方法 ? 計算除數(shù)值 除數(shù)= 1843200247。(波特率 16) 59 返回 2022年 8月 17日星期三 波特率發(fā)生器與除數(shù)寄存器 波特率 D L M( 高 8 位 ) D LL ( 低 8 位 ) 110 04H 17H 300 01H 80H 600 00H C 0H 12 0 0 00H 60H 24 0 0 00H 30H 36 0 0 00H 20H 48 0 0 00H 18H 72 0 0 00H 10H 96 0 0 00H 0CH 14 4 00 00H 08H 19 2 00 00H 06H 28 8 00 00H 04H 38 4 00 00H 03H 57 6 00 00H 02H 11 5 20 0 00H 01H ? 根據(jù)波特率與除數(shù)的關系 , 可計算出不同波特率對應的除數(shù)值 ,如表所示 。 D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 0 0 0 0 0 I D 1 I D 0 I P 0 0 = M ode m 狀態(tài)發(fā)生變化 0 1 = 發(fā)送緩沖器空 1 0 = 接收數(shù)據(jù)就緒 1 1 = 接收字符代碼錯或接收中止狀態(tài) 1 = 無中斷狀態(tài) 0 = 有中斷狀態(tài) IIR 58 返回 2022年 8月 17日星期三 9. 波特率發(fā)生器 ? 16550及 8250使用 ,分頻后產(chǎn)生所需的內(nèi)部基準脈沖 , 作為接收器和發(fā)送器的同步脈沖 , 以控制接收移位寄存器和發(fā)送移位寄存器的移位操作 。 1 允許中斷0 禁止中斷M o d e m 狀態(tài)中斷1 允許中斷0 禁止中斷1 允許中斷0 禁止中斷1 允許中斷0 禁止中斷接收字符代碼錯或接收中止狀態(tài)中斷接收數(shù)據(jù)寄存器就緒中斷發(fā)送數(shù)據(jù)緩沖器空中斷0 0 0 E D S S I E L S I E T B E I E R B F I0D7 D6 D5 D4 D3 D2 D1 D0I E E 57 返回 2022年 8月 17日星期三 IIR ? 中斷識別寄存器 IIR, 可以識別 4個中斷源引起的中斷 。 R L S D △R L S D △R I △D S R △C T S響鈴指示 ( R I )數(shù)據(jù)裝置準備就緒允許發(fā)送 ( C T S )允許發(fā)送 ( C T S )△△ 數(shù)據(jù)裝置就緒 ( D S R )△ 響鈴指示△ 數(shù)據(jù)載波檢測 ( D C D )數(shù)據(jù)載波檢測 ( D C D )△表示變化的狀態(tài)RI D S R C T SD7 D6 D5 D4 D3 D2 D1 D0 M S R 56 返回 2022年 8月 17日星期三 IER ? 反映了接收器和發(fā)送器以及 Modem是否允許中斷的情況 , 通過設置可以指定其中的某些部件允許中斷 。 線路狀態(tài)寄存器的格式: Di= ET T S RE T H RE B I F E P E O E D R D 7 D6 D5 D4 D 3 D2 D1 D0 1 狀態(tài)存在 0 狀態(tài)不存在 超時錯誤 發(fā)送移位寄存器空 發(fā)送保持寄存器空 中止檢測 接收數(shù)據(jù)就續(xù) 溢出錯 奇偶錯 幀出錯 L S R 54 返回 2022年 8月 17日星期三 5. Modem控制寄存器 ? Modem控制寄存器 MCR用于設置 16550/8250與通信設備之間聯(lián)絡應答的輸出信號 , 其格式如所示 。 控制寄存器的內(nèi)容可以通過 IN指令讀出 。 ( 2 ) 當數(shù)據(jù)進入發(fā)送移位寄存器后 , 發(fā)送保持 寄存器自動變空 , CPU即可再次寫入數(shù)據(jù) 。 51 返回 2022年 8月 17日星期三 ? 發(fā)送部分負責接收 CPU送來的并行數(shù)據(jù) , 并通過移位的方法將其變換成串行信號 , 最后通過發(fā)送端 SOUT發(fā)送出去 。 (5) 檢查正確性:接收同步控制電路對數(shù)據(jù)的正確性進行檢查 。 ( 3 ) 去除無關位:接收同步控制電路自動去除起始位 、 奇 偶校驗位和停止位 。 ( 2 ) 采樣數(shù)據(jù)位:每隔 16個 RCLK脈沖對 SIN輸入的數(shù)據(jù)位進 行一次采樣 。 49 返回 2022年 8月 17日星期三 二、內(nèi)部結構及工作原理 D7 D0 A 2 , A 1 , A 0 D D I S SI N R C L K B A U D O U T S O U T R T S C T S D T R I N T R P T 發(fā)送保持寄存器 D O S T R D O S T R C S O U T X T A L 1 X T A L 2 D S R R L S D RI O U T 1 O U T 2 數(shù)據(jù)接收寄存器 線路控制寄存器 線路狀態(tài)寄存器 除數(shù)寄存器高位 除數(shù)寄存器低位 M o d e m 控制寄存器 M o d e m 狀態(tài)寄存器 中斷允許寄存 器 中斷識別寄存器 M o d e m 控制邏輯 中斷控制邏輯 波特率發(fā)生器 接收同步控制器 發(fā)送同步控制器 接收移位寄存器 發(fā)送移位寄存器 數(shù) 據(jù) 總 線 緩 沖 器 讀 寫 控 制 邏 輯 C S 0 C S 2 D I S T R D I S T R MR C S 1 A D S 內(nèi) 部 數(shù) 據(jù) 總 線 50 返回 2022年 8月 17日星期三 ? 接收移位寄存器將 SIN腳的串行數(shù)據(jù)進行移位輸入 。 (6) 片內(nèi)具有優(yōu)先級中斷控制邏輯 。 (4) 異步通信格式 , 可通過編程選擇 。 (3) 波特率 :8250=50~9600波特 。 MAX485 MAX485 48 返回 2022年 8月 17日星期三 可編程串行通信接口芯片 16550與 8250 一 、 16550及 8250功能 (1) 具有全雙工 、 雙緩沖器發(fā)送器和接收器 。 ? RS485邏輯電平: 邏輯 1: A的電位比 B高 200mV以上 邏輯 0: B的電位比 A高 200mV以上 47 返回 2022年 8月 17日星期三 RS485接口的連接 ? 由于是差分傳輸,因此 RS- 485接口采用同名端相連的方法,即所有 485芯片的 A和 A連在一起, B和 B連在一起。 ? RS485主要特點: – 采用差分傳輸方式,具有很強的抗共模干擾能力。 10V 電壓轉換器 45 返回 2022年 8月 17日星期三 RS232簡單連接示意圖 32 532 5發(fā)送數(shù)據(jù) 發(fā)送數(shù)據(jù)接收數(shù)據(jù) 接收數(shù)據(jù)信號地R S 2 3 2