《微机原理与接口技术》知识点总结
文章目錄
- 一、8086/8088微處理器
- 寄存器類型:
- 通用寄存器
- 段寄存器
- 標志寄存器
- 狀態標志寄存器(FLAGS)
- 二、8086CPU指令系統
- 數據傳送指令MOV
- 立即數到通用寄存器的數據傳送
- 立即數到存儲單元的數據傳送
- CPU內部寄存器之間的數據傳送
- 寄存器與存儲單元之間的數據傳送
- 除法指令DIV/IDIV
- 無符號除數指令DIV
- 帶符號數的除法指令IDIV
- 符號擴展指令CBW,CWD
- CBW
- CWD
- 邏輯運算指令
- (1)與指令AND
- 指令格式
- (2)或指令OR
- (3)非指令NOT
- (4)異或指令XOR
- (5)測試指令TEST
- 移位指令
- 非循環移位指令
- 邏輯左移指令SHL
- 邏輯右移指令 SHR
- 算術左移指令 SAL
- 算術右移指令 SAR
- 循環移位指令
- (1)不帶 CF 的循環移位指令
- (2)帶 CF 的循環移位指令
- 四、匯編語言程序設計
- 偽指令
- 五、存儲器
- 存儲器件
- 地址輸入引腳
- 數據輸入引腳
- 芯片選擇線(/CS)
- 讀寫控制線(/OE、/WE)
- 6264芯片
- 6264芯片與系統的連接
- 6264芯片的編址
- 譯碼方式
- 全地址譯碼
- 部分地址譯碼
- 存儲器接口設計注意點
- 六、輸入輸出
- I/O接口概述:
- 1. I/O接口
- 系統設備
- 外圍設備
- I/O接口應具有以下能力
- 2. I/O端口及其編址
- 3. I/O地址譯碼
- 簡單接口電路
- 1. 接口的分類及特點
- 2. 三態門接口
- 3. 鎖存器接口
- 74L273
- 基本輸入/輸出方法
- 1. 無條件傳送
- 2. 查詢工作方式
- 3. 中斷控制方式
- 4. DMA控制方式
- 總結
- 簡單I/O接口電路設計
- 例1:
- 例2:
- 七、可編程數字接口
- 可編程并行接口芯片8255
- 1. 并行接口8255的特點
- 2. 8255內部的主要部件
- 3. 8255引腳信號
- 4. 8255的工作方式
- 方式0——基本的輸入/輸出方式
- 方式1——選通工作方式
- 方式1輸入
- 方式1輸出
- 方式2——雙向傳送方式
- 4. 方式控制字及位控制字
- 5. 8255芯片的應用
- 可編程并行數字接口應用例
- 可編程定時計數器8253
- 8253芯片特點
- 1. 外部引線及內部結構
- 2. 計數啟動方式
- 3. 工作方式
- 4. 控制字
- 5. 8253的應用
- 與系統的連接示意
- 應用中的注意點
- 初始化程序流程
- 8253應用例
- 八、模擬輸入/輸出接口
- D/A轉換器
- 1. D/A轉換器的基本工作原理
- 2. D/A轉換器的主要技術指標
- 3. 典型D/A轉換器DAC0832
- 單緩沖模式
- 雙緩沖模式(標準模式)
- 無緩沖器模式
- 4. D/A轉換器的應用
- A/D轉換器
- 1. A/D轉換器的工作原理
- 2. 主要技術指標
- 3. 典型的A/D轉換器芯片--ADC0809
- 主要引腳功能
- 內部結構
- 工作流程
- 與系統的連接
- 采集方式
- 中斷
- 中斷的概念
- 中斷源
- 中斷處理的基本過程
- 1. 中斷請求
- 2. 中斷判優
- (1)軟件判優
- (2)硬件判優
- 3. 中斷響應
- 4. 中斷服務
- 5. 中斷返回
- 中斷向量和中斷向量表
- 8086/8088CPU專用中斷類型有5個
- 硬件中斷
- (1)非屏蔽中斷
- (2)可屏蔽中斷
- 中斷處理流程
- 堆棧的變化
- 可編程中斷控制器8259A
- 內部結構
- 引腳功能
- 8259A編程
- 1. 初始化命令字
- (1)ICW1
- (2)ICW2
- (4)ICW4
- 2. 操作命令字
- (1)OCW1
- (2)OCW2
一、8086/8088微處理器
寄存器類型:
通用寄存器
BX: BL, BH
CX: CL, CH
DX: DL, DH
段寄存器
CS, DS, SS,ES
標志寄存器
IP,FLAGS
狀態標志寄存器(FLAGS)
狀態控制:存放運算結果的特征;
(CF,SF,AF,PF,OF,ZF)
CF進位標志位
PF奇偶標志位
AF輔助進位標志位
ZF零標志位
SF符號標志位
OF溢出標志位
控制標志:控制某些特殊操作;
(IF,TF,DF)
TF跟蹤標志位
IF中斷允許標志位
DF方向標志位
二、8086CPU指令系統
數據傳送指令MOV
MOV指令格式:MOV dst, src
立即數到通用寄存器的數據傳送
MOV AL, 4 ;AL=4 MOV AX, 1000 ;AX=1000 MOV SI, 037BH ;SI=037BHCS,DS,SS,ES,IP,FLAGS不能用立即數賦值。
mov ax, 2000mov ds, ax立即數到存儲單元的數據傳送
注意:MOV指令的兩個操作數類型是確定的。
MOV [1500H], 9這種形式不可以。 9可以是字節類型,也可以是字類型的。[1500H]可以表示一個內存單元,也可以表示首地址的內存單元。
應當寫成
MOV BYTE PTR [1500H], 9
MOV BYTE PTR [SI], 9
MOV WORD PTR [1500H], 9
MOV WORD PTR [SI], 9
CPU內部寄存器之間的數據傳送
MOV AL,BL
MOV AX, BX
MOV DS, AX
- MOV指令的兩個操作數類型必須相同;
MOV AX, BL - 兩個操作數不能同時為存儲操作數;
MOV [BX],[SI] - 兩個操作數不能同時為段寄存器;
MOV DS, ES
寄存器與存儲單元之間的數據傳送
MOV AL,[2000H]
MOV AX,[SI]
MOV [3200H], CX
MOV ARRY[DI], DL
MOV DL, [BX][SI]
- MOV指令的操作數可以使用各種尋址方式。
除法指令DIV/IDIV
- 被除數的字長要求是除數字長的兩倍。
如果除數是字節類型,被除數必須是字類型而且要預置在AX中;如果除數是字類型,被除數必須是雙字類型而且要預置在DX:AX中。 - 除法指令隱含了被除數AX或DX:AX,除數可以是寄存器或者是存儲器操作數,但不能是立即數。
無符號除數指令DIV
DIV BL商存到AL中,余數存到AH中。
DIV BX商存到AX中,余數存到DX中。
DIV BYTE PTR[SI]商存到AL中,余數存到AH中。
DIV WORD PTR[DI]商存到AX中,余數存到DX中。
說明
- 在指令執行前,必須檢查被除數的長度,如果不符合要求,要用位擴展指令來轉換。
- 除數不能是0
- 除數不能太小。除數太小將產生除法溢出。
帶符號數的除法指令IDIV
余數符號與被除數符號保持一致。
符號擴展指令CBW,CWD
使用符號擴展指令對數據類型進行調整。指令不影響標志位。
CBW
功能:字節轉換為字。將AL中的數的符號位擴展至16位,擴展的符號部分存入AH中,即由AL擴展為AX,值保持不變。
CWD
功能:字轉換為雙字。將AX中的數的符號位擴展至32位,擴展的符號部分存入DX中。即由DX:AX代替AX,值保持不變。
邏輯運算指令
慕課:邏輯運算指令
邏輯運算指令可以對操作數的任意位進行置位、清0。邏輯運算指令的執行影響6個狀態標志位,其中CF和OF標志位會被清0,其他狀態位的變化與運算結果有關。
因為邏輯運算不會進位也不會溢出。
(1)與指令AND
指令格式
AND ,OPRD1, OPRD2
AND AL, 0FH ;取AL的低4位,屏蔽高4位。 AND AX, BX ;AX與BX進行與運算,結果保存在AX中。 AND [SI], AL ;內存單元[SI]與AL與,結果存回內存單元 AND DX, [BX+SI]- 取AL中某一位或者某幾位的數。常用與運算。
- 邏輯與指令常用于將某些位置0,其余為保持不變。
- 用與指令設置標志位CF=OF=0:
AND AX, AX ;AX不變,CF=OF=0
指令執行使標志位CF=OF=0,AF值不定,對SF、PF和ZF產生影響。
(2)或指令OR
OR指令實現或運算。
OR AX, CX OR [DI], AL OR AL, 0FH ;AL的低4位被置1,高4位不變。 OR AL, 80H ;AL的符號位置1,其它位保持不變。例子:對AL進行偶校驗:
OR AL, AL ;改變PF的值,若為奇數個1發送,如果為偶數個1,將最高位置位1JPE CONTINUEOR AL,80H CONTINUE: ...- 邏輯或指令常用于將某些位置1,其余位保持不變。
(3)非指令NOT
指令格式:NOT OPRD
功能:將OPRD逐位取反,結果返回OPRD中。
例如:
(4)異或指令XOR
功能:OPRD1與OPRD2按位進行異或操作,結果回送OPRD1中。
例如:
(5)測試指令TEST
指令格式:TEST OPRD1, OPRD2
功能:OPRD1與OPRD2按位進行與操作,但是結果不回送OPRD1中,所以指令執行后兩個操作數的值保持不變。
指令的執行使標志寄存器的標志位CF=OF=0,AF值不變,SF\PF和ZF受影響。通常是ZF位最受關注。
例如:
AL的二進制表示:xxxx xxxxB
04H的二進制表示:0000 0100B
如果AL的第2位為0,那么相與后結果為0,ZF=1;反之相與后不為0,ZF=0。
- 這條指令常用于對OPRD1中的特定某一位進行測試,OPRD2用于說明測試的是OPRD1中的哪一位。
- 常見的OPRD2的取值為01H, 02H, 04H, 08H, 10H, 20H, 40H, 80H等等。
例如測試AL的第0位,可以安排如下一條指令:
TEST AL, 01H
指令執行后AL的值保持不變,但標志位受到影響。如果ZF=0說明AL的第0位是1,如果ZF=1說明AL的第0位為0。
移位指令
非循環移位指令
邏輯左移指令SHL,邏輯右移指令SHR,算術左移指令SAL,算術右移指令SAR
邏輯左移指令SHL
指令格式:SHL OPRD, COUNT
功能:將 OPRD 逐位進行左移,最低位第0位向左移到第1位,依次移動,最高位移
出OPRD,移到標志寄存器的 CF 中;第0位空出,用0填補。
說明:OPRD 可以是寄存器或存儲器操作數,COUNT 可以為 1 或 CL。
邏輯右移指令 SHR
指令格式:SHR OPRD, COUNT
功能:將 OPRD 逐位進行右移,最高位向右移到次高位,依次移動,第0位移出 OPRD,移到標志寄存器的 CF 中;最高位空出,用0填補。
說明:OPRD 可以是寄存器或存儲器操作數,COUNT 可以為1或 CL。
算術左移指令 SAL
指令格式:SAL OPRD, COUNT
說明:算術左移指令與邏輯左移指令的功能相同,這里不再贅述,但算術左移指令將操
作數作為帶符號數處理。
算術右移指令 SAR
指令格式:SAR OPRD, COUNT
功能:將 OPRD 逐位進行右移,最高位向右移到次高位,依次移動,第 0 位移出 OPRD,移到標志寄存器的 CF 中;最高位保持不變。
說明:OPRD 可以是寄存器或存儲器操作數,COUNT 可以為 1 或 CL。
循環移位指令
循環移位,顧名思義首尾相接成一個環,左循環移位后可以通過右循環移位來還原數據,反之亦然。
4條循環移位指令又按照CF標志位是否參加循環細分為兩組,一組CF不參加循環移位但仍然隨著循環操作變化,又稱為不帶CF的循環移位指令;另一組CF參加循環,稱為帶CF的循環移位指令。
(1)不帶 CF 的循環移位指令
循環左移的指令格式:ROL OPRD, COUNT
功能:將 OPRD 逐位進行左移,第 0 位移到第 1 位,依次移動,最高位移至第 0 位,
同時最高位又移到標志寄存器的 CF 中。
循環右移的指令格式:ROR OPRD, COUNT
功能:將 OPRD 逐位進行右移,最高位移到次高位,依次移動,第 0 位移至最高位,
同時最高位又移到標志寄存器的 CF 中。
說明:OPRD 可以是寄存器或存儲器操作數,COUNT 可以為 1 或 CL。
(2)帶 CF 的循環移位指令
循環左移的指令格式:RCL OPRD, COUNT
功能:將 OPRD 逐位進行左移,第 0 位移到第 1 位,依次移動,最高位移至 CF 位,
CF 位移到第 0 位。
循環右移的指令格式:RCR OPRD, COUNT
功能:將 OPRD 逐位進行右移,最高位移到次高位,依次移動,第 0 位移至 CF 位,
CF 位移到最高位。
說明:OPRD 可以是寄存器或存儲器操作數,COUNT 可以為 1 或 CL。
四、匯編語言程序設計
偽指令
又稱作偽操作語句,它是用來控制匯編語言源程序的匯編過程的,比如如何定義變量、為數據分配存儲空間、如何對源程序匯編等。偽操作語句是由匯編程序定義的,也是由匯編程序處理的。偽操作語句匯編后不生成目標代碼,所以常被稱為偽指令(directive)。它不屬于CPU的指令系統,只與匯編程序(MASM)有關。
五、存儲器
存儲器件
所有的存儲器件都有==地址輸入引腳、數據輸出或數據輸入引腳、從多片存儲芯片中選定一個芯片的片選引腳,控制讀寫操作的控制引腳。
地址輸入引腳
接受CPU發過來的地址信息,以選定存儲芯片內部的存儲單元。芯片上的地址線都是由A0開始標記到An。
- 如果存儲芯片的地址線為A0~A9,他的存儲單元地址范圍是:
00 0000 0000~11 1111 1111B,即000H~3FFH。
地址線為A0~A10根的芯片,地址范圍為:
000 0000 0000~111 1111 1111B,即000H~7FFH。 - 地址線的根數與芯片內含有的存儲單元個數有一個一一對應的關系。如含有10根地址線的芯片(A0~A9),它應該有210=1024個存儲單元;含有11根地址線的芯片(A0~A10),存儲容量為211=2048個存儲單元。
數據輸入引腳
芯片選擇線(/CS)
所有存儲器件都有芯片選擇線,而且至少一根,用來選中這個芯片,或者說激活這個芯片。片選擇線常被標識為片選#CS,片使能#CE、或簡稱為選擇#S。
如果存儲芯片含有多跟選擇線,則只有在所有選擇線都處于有效時,芯片才被激活,CPU才可以對它進行讀寫操作。
讀寫控制線(/OE、/WE)
每個存儲器都有控制輸入輸出的控制線,常常標記為#OE,#WE。
- 當#OE為低電平的時候存儲單元存放的數據流出芯片,出現在系統數據總線上。當/WE為低電平的時候,存儲器件從數據線上接收數據存儲到芯片內部。
- ROM存儲器件因為只能讀出數據不能寫入數據,所以通常只有一個輸出使能/OE引腳,有些芯片將其標為#G(輸出選通)。
- 有些RAM存儲器件受到芯片引腳數量的限制,控制數據輸入輸出的引腳只有一個,常常標記為R、#W。當R、#W引腳為高電平時芯片輸出數據,執行讀操作;當它為低電平時芯片接收數據,執行寫操作。
- 如果RAM芯片有兩個控制端#WE和#OE,這兩個引腳不能同時有效。當他們都為高電平時,處于無效狀態,芯片既不讀出數據也不寫入數據,數據線引腳處于高阻狀態。
6264芯片
6264芯片與系統的連接
- 確定要訪問的存儲芯片
- 系統中可能存在多篇存儲器芯片,要訪問的單元只能存在某一片芯片上。
- 找到芯片后,尋找該芯片上要訪問的單元
- 6264芯片上由8K(213)個單元,每個單元在該芯片上有唯一個的13位地址碼
- 每片6264芯片上第一個單元在芯片上的地址:0
- 每片6264芯片上最后一個單元在芯片上的地址:8191(213-1)
因此用芯片的13位地址碼A0-A12尋址片內的每個單元
6264芯片的編址
| xxxx xxx | 0 0000 0000 0000 | 片首地址 |
| xxxx xxx | 1 1111 1111 1111 | 片尾地址 |
- 芯片上所有的單元具有相同的高位地址(片選地址)
- 從片首地址到片為地址,構成芯片在內存空間中占有的地址范圍
譯碼:將輸入的一組高位地址信號通過變換,產生一個有效的輸出信號,用于選中某一個存儲器芯片,從而確定了該存儲器芯片在內存中的地址范圍。
將輸入的一組二進制編碼變換為一個特定的輸出信號。
譯碼方式
全地址譯碼
用全部的高位地址信號作為譯碼信號,使得存儲器芯片的每一個單元都占據一個唯一的內存地址。
部分地址譯碼
用部分高位地址信號(而不是全部)作為譯碼信號,使得被選中存儲器芯片占有幾組不通得地址范圍。
存儲器接口設計注意點
- 片內地址用于尋址芯片上的單元,高位地址用于選擇芯片(片選)
- #MEMW和==#MEMR==用于確保只有在對存儲器芯片進行讀或者寫操作時,譯碼電路才可以工作。所以他們必須作為譯碼器輸入信號。
- 74LS138譯碼器的使能端及輸入端均不能懸空
- 對全地址譯碼,要求全部高位地址都需作為譯碼器輸入。
六、輸入輸出
I/O接口概述:
I/O接口的基本功能
I/O接口及其編制方式
I/O地址譯碼
1. I/O接口
接口要解決的問題
- 速度匹配 ---- 數據的緩沖與暫存
- 信號的驅動能力 ---- 信號驅動
- 信號形式和電平的匹配 ---- 信號類型轉換
- 信息格式 ---- 信號格式轉換
- 時序匹配(定時關系)
- 總線隔離 ---- 三態門
高速的微處理器與低速的外設能過夠協調的工作,需要有一個具有數據緩沖和鎖存的能力、數據格式轉化能力、定時控制能力并且能夠提供外設狀態的連接電路,我們把它叫作輸入輸出接口。
系統設備
可編程中斷控制器、DMA控制器、PCI總線、系統實時時鐘、揚聲器、定時器等等時組成系統不可或缺的設備,常稱為系統設備。
外圍設備
鍵盤、鼠標、顯示器、打印機、磁盤、光盤、攝像頭、音箱等屬于外圍設備,常稱為外部設備。
I/O接口應具有以下能力
外部設備的工作速度往往遠低于CPU的處理速度,CPU發送的數據不能被外設即使讀取,造成數據丟失,因此需要握手聯絡信號使得CPU與I/O設備同步。
I/O接口必須能夠提供外部設備的狀態信息,同時能夠根據CPU的命令輸出控制信號,對外設實時控制。
外部設備多是復雜的機電設備,其信號電平多數與TTL或者MOS電路不兼容,需要接口來完成信號的電平轉換。
接口和設備間的數據傳輸經常收到干擾,導致信息出錯,接口應具備一定的錯誤檢測能力,對傳輸信息進行校驗。
2. I/O端口及其編址
端口:接口電路中用于緩存數據及控制信息的部件
-
計算機系統中包含各類不同功能的接口電路。
-
每個接口中含有1個或多個端口
-
端口地址
- 為確保CPU能夠訪問到每個不同的端口
-
尋址端口的方法:
- 先找到端口所在的接口電路芯片 —> 片選
- 再在該芯片上找具體訪問的端口 ---->片內尋址
每個端口地址 = 片選地址(高位地址)+ 片選地址
-
8086/8088尋址端口的能力:
- 64K個端口
-
端口的編址方式:
- 與內存統一編址
- 獨立編址 (內存地址資源充分利用,能夠應用于端口的指令較少)
8088/8086的I/O端口編址
- 采用I/O獨立編址方式,與內存共用地址總線,用IO/#M信號狀態區分
- 訪問端口時僅使用地址總線的:A15 ~ A0
- 可尋址的I/O端口數為64K(65536)個,I/O地址范圍:0~FFFFH
3. I/O地址譯碼
- 目的:
- 確定端口的地址
- 參加譯碼的信號:
- #IOR,#IOW,高位地址信號
- 對端口讀/寫信號的產生條件
- IO/#M = 1
- #RD = 0 ——> #IOR = 0
- #WR = 0 -——> #IOW = 0
OUT指令將使總線的**#IOW信號有效
IN指令將使總線的#IOR**信號有效
I/O地址譯碼
- 當接口只有一個端口時:
- 無片內地址,全部地址信號均為高位地址(可全部參與譯碼),譯碼輸出直接選擇該端口;
- 當接口具有多個端口時:
- 則16位地址線的高位參與譯碼(決定接口的基地址),二低位則用于確定要訪問哪一個端口。
由于端口資源豐富,端口地址譯碼常采用部分地址譯碼。
簡單接口電路
了解和掌握:
- 不同類型接口的特點
- 三態門接口
- 鎖存器接口
1. 接口的分類及特點
- 按傳輸信息的方向分類:
- 輸入接口(要求對數據具有控制能力)
- 輸出接口(要求對數據具有鎖存能力)
- 按傳輸信息的類型分類:
- 數字接口
- 模擬接口
- 按傳輸信息的方式分類
- 并行接口
- 串行接口
2. 三態門接口
- 特點:
- 具有對數據的控制能力,但不具備對數據的鎖存能力。
3. 鎖存器接口
**特點:**具有對數據的鎖存能力
- 8D鎖存器:
- 74LS273:8D觸發器,不具備數據的控制能力。
- 74LS373:含三態的8D觸發器,具有對數據的控制能力。
- 既可以做輸入接口,也可以做輸出接口。
74L273
無論是IO接口,還是存儲器接口,讀寫控制信號都一定要作為譯碼器的輸入。
基本輸入/輸出方法
無條件傳送
查詢式傳送
中斷方式傳送
直接存儲器存取(DMA)
1. 無條件傳送
2. 查詢工作方式
- 僅當條件滿足時才能進行數據傳送;
- 每滿足一次條件只能進行一次數據傳送。
- 適用場合:
- 外設并不總是準備好
- 對傳送速率和效率要求不高
- 工作條件:
- 外設應提供設備狀態信息
- 接口應具備狀態端口
優點:軟硬件比較簡單
缺點:CPU效率低,數據傳輸的實時性差,速度較慢
3. 中斷控制方式
- 特點:外設在需要時向CPU體出請求,CPU再去位他服務。服務結束后或在外設不需要是,CPU可執行自己的程序。
- 優點:CPU效率高,實時性號,速度快。
- 缺點:程序編制相對較為復雜。
4. DMA控制方式
特點:
- 外設直接與存儲器進行數據交換,CPU不再擔當數據傳輸的中介者。
- 總線由DMA控制器(DMAC)進行控制(CPU要放棄總線控制權),內存/外設的地址和讀寫控制信號均由DMAC提供。
總結
簡單I/O接口電路設計
例1:
例2:
七、可編程數字接口
可編程并行接口芯片8255
1. 并行接口8255的特點
通道型接口:主要用于數據的輸入或輸出
含3個獨立的8為并行輸入/輸出端口
- 2個為8位端口(PA,PB);
- 1個可拆分為兩個4位端口(PC口)
各端口均具有數據的控制和鎖存能力 - 既可作為輸入端口,也可以作輸出端口。
可通過編程,設置各端口工作在某一確定狀態下
2. 8255內部的主要部件
有3個8位的數據端口,每個端口都可以作為輸入端口,或設置為輸出端口。
- 端口A:A口屬于A組,受A組控制電路控制,具備輸入緩沖,輸出鎖存功能。
- 端口B:B口屬于B組,受B組控制電路控制,具備輸入緩沖,輸出鎖存功能。
- 端口C:C口既可以當成一個8位的數據端口用,作為輸入或輸出數據端口,也可以作為兩個獨立的4位端口用。
3. 8255引腳信號
鏈接系統端的主要引線:
- D0——D7
- #CS
- #RD
- #WR
- A0,A1(區分內部的4個端口)
- REAST
| 0 | 0 | A端口 |
| 0 | 1 | B端口 |
| 1 | 0 | C端口 |
| 1 | 1 | 控制寄存器 |
連接外設端的引腳:
- PA0 —— PA7
- PB0 —— PB7
- PC0 —— PC7
分別對應A、B、C三個端口
4. 8255的工作方式
方式0——基本的輸入/輸出方式
- 相當于三個獨立的8位簡單接口
- 3個數據端口A,B和C中任何一個端口都可由程序設定為8位的輸入口或輸出口。
- C端口的兩個半口(高4位和低4位)可獨立設為輸入或輸出端口。
- 常用于連接簡單外設,用于無條件或查詢方式,沒有規定固定的用于應答式的聯絡信號線。
習慣上:
A端口和B端口作為8位數據的輸入或輸出口
C口的某些位作為狀態輸入。
注:
- 若使C端口低4位中某一位作為輸入口,則低4位中其他位都為輸入口。同時可設高4位作為輸出。
方式1——選通工作方式
- 利用一組選通控制信號控制A端口和B端口的數據輸入輸出。
- A口、B口作為輸入或輸出口,C口的部分位用作選通控制信號
- A口、B口在作為輸入和輸出時的選通信號不同。
方式1輸入
方式1輸出
方式2——雙向傳送方式
雙向輸入輸出方式
- 可以既作為輸入口,又作為輸出口。
只有A端口可以工作在方式2下
方式2的應用:
- 可使A端口作為雙向端口所有
- 用于中斷控制方式
- 當A口工作于方式2時:
- B口可工作于方式1
此時C口的所有位都用做選通控制信號的輸入輸出 - B口也可工作于方式0
此時C口的剩余位也可工作于方式0
- B口可工作于方式1
4. 方式控制字及位控制字
- 方式控制字
- 用于確定3個端口的工作方式及數據傳送方向;
- 位控制字
- 僅用于C端口
- 可設置C口某位的初始狀態(為高電平或低電平)
- 當其工作于方式0下且作為輸出口時,一般需要對作為輸出得位設置初始狀態(即初始化)
5. 8255芯片的應用
- 芯片與系統的連接
- 芯片的初始化
- 相應的控制程序
可編程并行數字接口應用例
利用8255和8253構造報警系統
系統軟件設計
可編程定時計數器8253
計數與定時
定時/計算器的工作基準是時鐘脈沖
計數脈沖周期恒定 --> 定時
定時的時間長度取決于時鐘脈沖的周期及脈沖數
加法計數
減法計數
8253芯片特點
可編程的邏輯器件;
非通道型的接口,具有特定功能;
可實現計數和定時;
(例如定時啟動空調)
工作方式:
- 減法計數
- 計數值減為0時輸出相應控制信號
- 輸出控制型號的形式可通過軟件設置
認識學習8253主要從這幾個方面:
1. 外部引線及內部結構
連接系統端的主要引線:
- D0~D7–8位的數據信號
- #CS—片選引腳
- #RD—讀允許
- #WR—寫允許
- A0,A1—片內地址 片內有4個端口
連接外設段的主要引線 - CLK–時鐘脈沖輸入
- GATE–門控信號輸入(計數)
- OUT–定時輸出(輸出波形)
具有三個完全相同的、獨立的計數/定時器
每個計數器都占有一個端口地址
每一個計數器里面都有兩個16位的寄存器:16b初值寄存器、16b計數寄存器。
這兩個寄存器在初始都填入值,但16b初值寄存器數值不變,16b計數寄存器中的數值從初始減到0。
- 三個可獨立工作的16位定時/計數器,一個控制寄存器。共占用4個端口地址。
- 4個端口的地址編碼:
| 0 | 0 | CNT0 |
| 0 | 1 | CNT1 |
| 1 | 0 | CNT2 |
| 1 | 1 | 控制寄存器 |
2. 計數啟動方式
啟動方式由GATE端信號的形式決定
軟件啟動:GATE端必須為高電平
硬件啟動:GATE端有一個上升沿
3. 工作方式
方式0
- 軟件啟動,不自動重復計數;
- 計數結束輸出高電平。
先寫命令字后寫初值
① 當GATE為高電平時,輸入初值后開始計數。
②計數結束后輸出高電平。
③其輸出信號可用于外部可屏蔽中斷請求信號。
方式1
- 硬件啟動,不自動重復計數;
- 計數開始輸出低電平,結束后又變高。
①計數一旦啟動,GATE端即使變為低電平也不會影響計數。
②可重復觸發。當計數到0后,不用再次寫入計數初值。只要再次出現GATE上升沿型號產生一個同樣寬度的負脈沖。
方式2 - 軟、硬件啟動,自動重復計數
- 計數到最后一個脈沖時輸出低電平
①可輸出頻率為(1/N)CLK脈沖信號的連續方波信號。
②每1個OUT端脈沖包含(N-1)*CLK的正脈沖,1CLK的負脈沖。
方式3 - 軟、硬件啟動,自動重復計數
- 輸出對稱方波
①若N為偶數,輸出頻率為(1/N)CLK的連續對稱方波信號
②若N為奇數,輸出波形為(N+1)/2CLK周期的正脈沖,(N-1)/2CLK負脈沖。
方式4
①軟件啟動,不自動重復計數。
②計數結束輸出一個CLK寬度的低電平。
方式5
①硬件啟動,不自動重復計數
②波形與方式4相同
小結
- 需要兩個寫脈沖—兩次寫操作
- 第1個寫脈沖寫入控制字
- 第2個寫脈沖寫入計數初值
- 根據不同的工作方式,有不同的計數啟動方式。
- 可根據對輸出波形的要求,選擇不同的工作方式。
- 能輸出連續波形的只有方式2和方式3。
控制字
- 用于設定各計數器的工作方式
4. 控制字
5. 8253的應用
硬件設計:
- 與系統的連接
軟件設計
- 初始化程序設計
- 寫入控制字
- 置計數初值
與系統的連接示意
應用中的注意點
-
每一次啟動計數,需要有2次寫操作:
- 寫控制字
- 寫計數器初值
- 如果初值為8位字長,則一次寫入;若初值為16位字長,則需兩次寫入。
-
每個計數器的控制命令字均送入控制寄存器
-
各計數器的計數初值送到該計數器的計數寄存器及初值寄存器。
初始化程序流程
原則:先寫入控制字,后寫入計數初值
8253應用例
- 采用8253作定時/計數器,器接口地址為0120H~0123H
- 輸入8253的時鐘頻率為2MH。
- 要求:
初始化程序:
CNT0:
八、模擬輸入/輸出接口
D/A轉換器
1. D/A轉換器的基本工作原理
- 如果用8位二進制代碼來控制途中的S1 ~S8( Di=0時,Si斷開)則不同的二進制代碼就對應不同輸出電壓V;
- 當代碼在0~ FFH之間變化時,V0相應地在0 -(255/256) Vref之間變化;
2. D/A轉換器的主要技術指標
- 分辨率
- 輸入的二進制數每±1個最低有效位,是輸出的變化的程度。
- 分辨率表示方式
- LSB最低有效位
- 可以用輸入數字量的位數來表示,如8位、10位等;
- 也可以用一個LSB使輸出變化的程度來表示。
- 例:
一個滿量程為5V的10位D/A變換器的分辨率為:
5/(210-1)=5/1025=0.04888V=48.88mV
- 轉換時間
- 從開始轉換到與滿量程值相差±1/2LSB對應的模擬量所需要的時間。
3. 典型D/A轉換器DAC0832
特點:
- 8位電流輸出型D/A轉換器
- T型電阻網絡
- 差動輸出
主要引腳功能
- 輸入寄存器控制信號
D7~D0:輸入數據線
ILE:輸入鎖存允許
#CS:片選信號
#WR1:寫輸入鎖存器 - DAC寄存器的控制信號
#WR2:寫DAC寄存器 - 輸出型號
IOUT1
IOUT2
有兩道緩沖門
單緩沖模式
- 使輸入寄存器或DAC寄存器二者之一處于直通,即芯片只占用一個端口地址。
- CPU只需一次寫入即開始轉換。寫入數據的程序為:
- #XFER和#WR2接地,表示DAC寄存器為常通狀態。
輸出三角波:(不考慮頻率和賦值調整)
雙緩沖模式(標準模式)
- 輸入寄存器和DAC寄存器均需控制。
- 當輸入寄存器控制信號有效時,數據寫入輸入寄存器中,并同時位于DAC寄存器的輸入端;
- 在DAC寄存器控制信號有效時,數據寫入DAC寄存器*,并啟動變換。
- 此時芯片占用兩個端口地址。
- 優點:
- 數據接收與D/A轉換可異步進行;
- 可實現多個DAC同步轉換輸出。
- 應用場景:分時寫入,同步轉換
兩片0832
兩片0832的DAC寄存器具有同樣的地址,其#XFER 并聯在一起,共同使用了PORT3的地址
無緩沖器模式
- 是內部的兩個寄存器都處于直通狀態。
- 一般來說無緩沖模式是不能直接和CPU直接聯通的,就是說0832和CPU之間要加一個數字接口(如74LS373,8255等)。
4. D/A轉換器的應用
- 信號發生器:向D/A轉換器寫入某種按規律變化的數據,即可在輸出端獲得相應的各種波形
- 用于閉環控制系統
A/D轉換器
- A/D轉換器的一般工作原理
- A/D轉換器的主要技術指標
- A/D轉換器的應用
- 與系統的連接
- 數據采集程序的編寫
將連續的變換的模擬信號轉換為數字信號的裝置,簡稱ADC,是模擬系統與計算機之間的接口部件。
1. A/D轉換器的工作原理
- 逐位反饋型A/D轉換器
類似天平稱重量的嘗試法,逐步用砝碼的累積重量去逼近物體。
2. 主要技術指標
- 轉換精度
- 轉化時間
- 實現一次轉換需要的時間。精度越高(字長越長),轉換速度越慢。
- 動態范圍
- 允許轉換的電壓范圍。
3. 典型的A/D轉換器芯片–ADC0809
ADC0809:
- 8通道(8路)輸入
- 8位字長
- 逐位逼近型
- 轉換時間100us
- 內置三態輸出緩沖器
主要引腳功能
內部結構
工作流程
與系統的連接
采集方式
- 采集單路模擬量
此時通道可由硬件確定,系統無須輸出通道地址,則也無需地址鎖存。
- 循環采集多路模擬量
系統通過軟件方式循環輸出不同的通道地址,即相應的地址鎖存信號。
中斷
中斷的概念
中斷,是指在程序執行過程中,出現某種緊急事件,CPU暫停執行現行程序,轉去執行處理該事件的程序——中斷服務程序,執行完后再返回到被執行的程序繼續執行,這一過程稱為中斷。
中斷源
中斷源
- 中斷源可以籠統地分為兩類:CPU內產生的,稱為內部中斷,其他的稱為外部中斷。
- 內部中斷包括:由CPU本身產生的中斷、由控制器產生的中斷、由程序員安排的中斷指令引起的中斷。
- 外部中斷又根據中斷時間的緊迫程度將中斷源劃分為可屏蔽中斷和不可屏蔽中斷。
常見中斷源
(1)一般的I/O設備發出的中斷請求,如鍵盤、打印機等。
(2)數據通道發出的中斷請求,如鍵盤、打印機等。
(3)實時時鐘發出的中斷請求,如定時芯片8253的定時輸出。
(4)硬件故障發出的中斷請求,如電源掉電、RAM奇偶校驗錯等。
(5)軟件故障發出的中斷請求,如執行出書為0的除法運算、地址越界、使用非法指令等。
(6)軟件設置的中斷源,如在程序中用中斷指令而產生的中斷。
中斷處理的基本過程
中斷處理的基本過程包括:中斷請求、中斷判優、中斷響應、中斷服務和中斷返回等5個階段。
1. 中斷請求
(1)發生在CPU內部的中斷,不需要中斷請求,CPU內部的中斷控制邏輯直接接收處理。
(2)外部中斷請求由中斷源提出。外部中斷源利用CPU的中斷輸入引腳輸入中斷請求信號。一般CPU設有兩個中斷請求輸入引腳:可屏蔽中斷請求輸入引腳和不可屏蔽中斷請求輸入引腳。
(3)中斷請求觸發器:
每個中斷源發出中斷請求信號的時間是不確定的,而CPU在何時響應中斷也是不確定的。所以,每個中斷源都有一個中斷請求觸發器,鎖存自己的中斷請求信號,并保持到CPU響應這個中斷請求之后才將其清除。
(4)中斷允許觸發器
在CPU內部有一個中斷允許觸發器,當其為“1”時,允許CPU響應中斷,稱為開中斷。若其為“0”,不允許CPU響應中斷,中斷被屏蔽,稱為關中斷。
- 通常,當CPU復位時,中斷允許觸發器也復位為“0”,即關中斷。當CPU中斷響應時,CPU自動關閉中斷,禁止接收另一個新的中斷。
2. 中斷判優
(1)軟件判優
CPU檢測到中斷請求后,首先讀取中斷請求寄存器的內容,逐位檢測它們的狀態,檢測到某一位為1,就確定對應的中斷源有中斷請求,專區執行它的中斷服務程序。
先檢測哪一個,哪一個的優先級就高,后檢測哪一個,哪一個優先級就低,檢測的順序就是各中斷源的優先級順序。
輸入端口地址為67FFH。查詢程序:
MOV DX, 87FFH IN AL, DX ;讀中斷請求寄存器內容 SHR AL, 1 ;右移一位,移到CF位置上 JC IR0 ;IRQ0有請求,轉IR0 SHR AL, 1 JC IR1 ;IRQ1有請求,轉IR1 SHR AL, 1 JC IR2 ;IRQ2有請求,轉IR2軟件判優耗時較長。如果中斷源很多,中斷的實時性就很差,但是軟件判優優先權安排靈活。
(2)硬件判優
利用專門的硬件電路確定中斷源的優先級,有2種常見的方式,菊花鏈判優電路和中斷控制器判優。
中斷控制器,如Intel8259A,可以以多種方式設置中斷源的中斷優先級。中斷控制器中有一個中斷優先級判別器,它自動判別出目前提出中斷請求的優先級最高的中斷源,并將它的中斷向量碼送到數據總線,CPU接收中斷向量碼并據此找到它的中斷服務程序。
3. 中斷響應
經過中斷判優,中斷處理就進入中斷響應階段。中斷響應時,CPU向中斷源發出中斷響應信號,同時:
① 保護硬件現場;
② 關中斷;
③ 保護斷電;
④ 獲得中斷服務程序的入口地址。
4. 中斷服務
中斷服務程序的一般結構為:
5. 中斷返回
返回到原程序的斷點處,恢復硬件現場,繼續執行原程序。中斷返回操作是中斷響應操作的逆過程。
中斷向量和中斷向量表
- 8086/8088CPU的終端系統可以處理256種中斷。每種中斷都有對應的中斷服務程序。中斷服務程序的入口地址稱為中斷向量。256種中斷向量存儲在內存中構成一張表,稱為中斷向量表。
- 每個中斷向量都包括兩部分:段基址和偏移地址。因此,存放一個中斷向量需要4個內存單元,256種中斷向量共需要1K個內存單元。
中斷向量表位于內存起始地址00000~003FFH的存儲區內。從地址00000H開始,每4個單元存放一個中斷向量,其中低地址的兩個單元存放中斷向量的偏移地址,高地址的兩個單元存放中斷向量的段基址。256種中斷向量按中斷向量碼從0 ~255的順序依次存入中斷向量表中。
中斷向量在中斷向量表中的存放首地址稱為向量地址,其值為:中斷類型碼 x 4。
- 如DOS系統調用的中斷類型號為21H,向量地址為:nx4=84H。
當CPU調用中斷類型碼為n的中斷服務程序時首先把n乘以4,得到他的向量地址4n,然后把4n+1:4n兩個單元的內容去除并裝入IP寄存器;再把4n+3:4n+2兩個單元的內容去除并裝入CS寄存器,CPU就獲得了n的中斷服務程序入口地址,進而轉去執行中斷服務程序。
8086/8088CPU專用中斷類型有5個
硬件中斷
8086/8088CPU芯片有兩個硬件中斷請求信號輸入引腳:NMI和INTR, 用來接收外部中斷源產生的中斷請求。NMI引腳接收非屏蔽中斷請求,INTR引腳接收可屏蔽中斷請求。
(1)非屏蔽中斷
(2)可屏蔽中斷
中斷處理流程
CPU在每條指令的最后一個時鐘周期按照下列順序檢測有無中斷請求:
- 如果有一個或者多個中斷條件出現,CPU響應中斷。
- 如果檢測到內部終端或非屏蔽中斷,CPU從內部獲得中斷類型碼;
- 如果檢測到可屏蔽中斷請求,CPU進一步測試IF標志位,如果IF=1,CPU就進入中斷響應總線周期,從中斷控制器獲取中斷類型碼。
獲得中斷類型碼后,各種中斷的處理過程相同。CPU將中斷類型碼放入暫存器保存,以下動作順序發生:
堆棧的變化
CPU響應中斷時將狀態表制寄存器的內容壓入堆棧以保護現場,堆棧指針SP減2,接著CPU將主程序斷點CS和IP的內容壓入堆棧以保護斷點,堆棧指針SP再減4。在中斷服務程序的末尾執行IRET指令,從堆棧中彈出IP\CS\FLAGS,堆棧指針SP+6,堆棧恢復原狀。
中斷響應時,CPU發中斷響應信號,同時:
① 保護硬件現場;
② 關中斷;
③ 保護斷點;
④ 獲得中斷服務程序的入口地址。
可編程中斷控制器8259A
Intel 8259A可編程中斷控制器 可以管理8個外部中斷源,多偏8259A級聯最多可以管理64個外部中斷源(1個主片,8個從片),而無需外加電路。
它有多種工作方式。
CPU響應中斷時,它提供中斷源的中斷向量碼。
內部結構
8259A的內部邏輯由以下部分構成:
(1)數據總線緩沖器,它是CPU與8259A之間的數據總線接口,傳輸的信息包括控制信息、狀態信息及中斷信息。
(2)讀/寫控制邏輯。
8259只有一根地址線,說明內部只有2個端口。
A0 = 0時,偶地址。A0 = 1時,奇地址。
(3)級聯控制,用以實現8259A芯片之間的級聯,使得中斷源可以由8級擴展至64級。
(4)中斷請求寄存器IRR,用于寄存IR0~IR7的中斷請求信號。如果由中斷請求,IRR寄存器中的對應位置1。
(5)中斷服務寄存器ISR,保存當前正在處理的中斷請求。當CPU正為某個中斷源服務時,8259A使ISR中的相應位置1。當ISR全為“0”時,表示無任何中斷服務。
(6)優先級分辨其PR,也稱優先級判決器,用來管理和試別各個中斷源的優先級別。
(7)操作命令字寄存器,OCW1~OCW3,用于對中斷處理過程的動態控制,由應用程序設定,在一個系統運行過程中,操作命令字可以被多次設置。
中斷屏蔽寄存器IMR用于存放CPU送來的中斷屏蔽信號OCW1,它的每位對應IRR寄存器中的位。當它的某位為“1”時,對應的中斷請求就被屏蔽,即對該中斷源的中斷請求置之不理。
(8)初始化命令字寄存器
ICW1~ICW4,由初始化程序設置。初始化命令字送入8259A時,必須嚴格按著規定的順序。
引腳功能
A0:地址輸入引腳,選擇8259A內部不同的寄存器。
A0 = 0 ICW1 \ OCW2 \ OCW3
A0 = 1 ICW~ICW4\ OCW1
CAS2~CAS0:級聯信號引腳,用來選擇從片。當8259A為主片時,為輸出;否則為輸入。與#SP/#EN信號配合,實現芯片的級聯。
#SP/#EN:從片編程/允許緩沖器,雙功能引腳。在非緩沖方式下,#SP/#EN引腳作為輸入,用來決定本片8259A是主片還是從片。#SP/#EN為1,則8259A為主片。#SP/#EN為0,則8259A為從片。在緩沖方式下,#SP/#EN引腳作為輸出,用作8259A外部數據總線緩沖器的信號。
8259A編程
1. 初始化命令字
(1)ICW1
(2)ICW2
(4)ICW4
2. 操作命令字
在8259A的工作期間,操作命令字用于控制8259A的操作。例如,可以通過操作命令字重新設置工作方式,或者實施讀取8259A中某些寄存器的內容。
(1)OCW1
中斷屏蔽字。用于設置或讀取中斷屏蔽器IMR,它對IR7~IR0的中斷請求輸入進行管理。
(2)OCW2
總結
以上是生活随笔為你收集整理的《微机原理与接口技术》知识点总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于CImg载入jpg,png等格式图片
- 下一篇: 代理模式(JDK、CGLIB)