第十周 可編程數(shù)字接口電路
大家好,又是我,沉迷學(xué)習(xí)無(wú)法自拔的小笨蛋康sir。
這個(gè)文集(點(diǎn)我)將會(huì)同步更新我觀看吳寧老師的《微機(jī)原理與接口技術(shù)》教學(xué)視頻寫的筆記,學(xué)習(xí)筆記,大概每周一章。
有問題大家可以在評(píng)論下面留言討論,歡迎糾錯(cuò)!
歡迎收藏閱讀,動(dòng)動(dòng)小手給個(gè)硬幣點(diǎn)個(gè)贊。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ——@正能量的康sir
也可移步我的博客(https://blog.csdn.net/qq_33956508)會(huì)更新一些其它技術(shù)類文章。

第十周 可編程數(shù)字接口電路
內(nèi)容提要:
兩種可編程并行接口芯片的應(yīng)用
? 可編程芯片:可以通過軟件命令,控制芯片的工作方式
數(shù)據(jù)傳輸方向
輸入/輸出方式
可編程定時(shí)計(jì)數(shù)器8253
可編程并行接口8255
第51講 可編程定時(shí)計(jì)數(shù)器8253
計(jì)數(shù)與定時(shí)
定時(shí)/計(jì)算器的工作基準(zhǔn)是時(shí)鐘脈沖
? ? ? ?

? ? ? ?
計(jì)數(shù)脈沖周期恒定——定時(shí)
定時(shí)的時(shí)間長(zhǎng)度取決于時(shí)鐘脈沖的周期及脈沖數(shù)
要求定時(shí)100秒——計(jì)數(shù)脈沖數(shù):100
計(jì)數(shù)初值
由需求和條件決定
8253芯片特點(diǎn)
? 可編程的邏輯器件;
? 非通道型的接口,具有特定功能;
? 可實(shí)現(xiàn)計(jì)數(shù)和定時(shí);
? 工作方式:
? 減法計(jì)數(shù)
? 計(jì)數(shù)值減為0時(shí)輸出相應(yīng)控制信號(hào)
? 輸出控制信號(hào)的形式可通過軟件設(shè)置
① 外部主要引腳信號(hào)功能及內(nèi)部結(jié)構(gòu)
② 計(jì)數(shù)啟動(dòng)方式
③ 工作方式
④ 控制命令字格式
⑤ 應(yīng)用
1. 外部引線及內(nèi)部結(jié)構(gòu)
連接系統(tǒng)端的主要引線:
D0----D7
#CS
#RD
#WR
A0,A1
連接外設(shè)端的主要引線
CLK ----------- 時(shí)鐘脈沖輸入
GATE ---------- 門控信號(hào)輸入
OUT ------------ 定時(shí)輸出
? ? ? ?

? ? ? ?
內(nèi)部結(jié)構(gòu)特點(diǎn)
? 具有三個(gè)完全相同的、獨(dú)立的計(jì)數(shù)/定時(shí)器
? ? ? ?

? ? ? ?
控制寄存器存放控制命令字
每個(gè)計(jì)數(shù)器占用1個(gè)端口地址
(3個(gè)計(jì)數(shù)器、一個(gè)控制寄存器所以占四個(gè)端口 A1A0是片內(nèi)地址)
結(jié)構(gòu)特點(diǎn)
? 內(nèi)部3個(gè)計(jì)數(shù)器均為減法計(jì)數(shù)器
? 根據(jù)計(jì)數(shù)脈沖的頻率及需要定時(shí)的時(shí)間長(zhǎng)度確定計(jì)數(shù)初值
每個(gè)計(jì)數(shù)器含16位初值寄存器、16位計(jì)數(shù)寄存器。(相同端口地址。存放計(jì)數(shù)初值)
控制寄存器 存放控制命令字
外部引線及內(nèi)部結(jié)構(gòu)
? 三個(gè)可獨(dú)立工作的16位定時(shí)/計(jì)數(shù)器,一個(gè)控制寄存器。共占用4個(gè)端口地址。
? 4個(gè)端口的地址編碼:
A1 A0
0 0 CNT0
0 1 CNT1
1 0 CNT2
1 1 控制寄存器
2. 計(jì)數(shù)啟動(dòng)方式
啟動(dòng)方式由GATE端信號(hào)的形式?jīng)Q定
軟件啟動(dòng)——GATE端為高電平
硬件啟動(dòng)——GATE端有一個(gè)上升沿
3. 工作方式
? 方式0
? 軟件啟動(dòng),不自動(dòng)重復(fù)計(jì)數(shù);
? 計(jì)數(shù)結(jié)束輸出高電平。
? ? ? ?

? ? ? ?
方式1
? 硬件啟動(dòng),不自動(dòng)重復(fù)計(jì)數(shù);
? 計(jì)數(shù)開始輸出低電平,結(jié)束后又變高。
? ? ? ?

? ? ? ?
① 計(jì)數(shù)一旦啟動(dòng),GATE端既使變低也不會(huì)影響計(jì)數(shù)。
② 可重復(fù)觸發(fā)。當(dāng)計(jì)數(shù)到0后,不用再次寫入計(jì)數(shù)初值,只要再次出現(xiàn)GATE上升沿,即可產(chǎn)生一個(gè)同樣寬度的負(fù)脈沖
方式2
? 軟、硬件啟動(dòng),自動(dòng)重復(fù)計(jì)數(shù)。
? 計(jì)數(shù)到最后一個(gè)脈沖時(shí)輸出低電平
? ? ? ?

? ? ? ?
① 可輸出頻率為(1/N)CLK脈沖頻率的連續(xù)方波信號(hào)。
② 每1個(gè)OUT端脈沖包含(N-1)*CLK的正脈沖,1CLK的負(fù)脈沖。
方式3
? 軟、硬件啟動(dòng),自動(dòng)重復(fù)計(jì)數(shù)。
? 輸出對(duì)稱方波
? ? ? ?

? ? ? ?
① 若N為偶數(shù),輸出頻率為(1/N)CLK頻率的連續(xù)對(duì)稱方波信號(hào)。
② 若N為奇數(shù),輸出波形為 (N+l)/2CLK 周 期 正脈 沖 , (N-1)/2CLK 負(fù)脈沖。
方式4
? 軟件啟動(dòng),不自動(dòng)重復(fù)計(jì)數(shù)。
? 計(jì)數(shù)結(jié)束輸出一個(gè)CLK寬度的低電平
? ? ? ?

? ? ? ?
方式5
? 硬件啟動(dòng),不自動(dòng)重復(fù)計(jì)數(shù)
? 波形與方式4相同
? ? ? ?

? ? ? ?
工作方式小結(jié)
? 需要兩個(gè)寫脈沖——兩次寫操作
? 第1個(gè)寫脈沖寫入控制字
? 第2個(gè)寫脈沖寫入計(jì)數(shù)初值
? 不同的工作方式,有不同的計(jì)數(shù)啟動(dòng)方法。
? 可根據(jù)對(duì)輸出波形的要求,選擇不同的工作方式。
? 能輸出連續(xù)波形的只有方式2和方式3。
4. 控制字
用于設(shè)定各計(jì)數(shù)器的工作方式
? ? ? ? ? ? ? ?

? ? ? ?
最大16位BCD數(shù):9999
最大16位二進(jìn)制數(shù):FFFF
8253為減法計(jì)數(shù)器
最大計(jì)數(shù)初值:0(1000000000000000)
5. 8253的應(yīng)用
硬件設(shè)計(jì):與系統(tǒng)的連接
軟件設(shè)計(jì)
初始化程序設(shè)計(jì)
寫入控制字
置計(jì)數(shù)初值
與系統(tǒng)的連接示意
? ? ? ?

? ? ? ?
應(yīng)用中的注意點(diǎn)
? 每一次啟動(dòng)計(jì)數(shù),需有兩次寫操作:
? 寫控制字
? 寫計(jì)數(shù)器初值:如果初值為8位字長(zhǎng),則一次寫入;若初值為16位字長(zhǎng),則需兩次寫入
每個(gè)計(jì)數(shù)器的控制命令字均送入控制寄存器
各計(jì)數(shù)器的計(jì)數(shù)初值送到該計(jì)數(shù)器的計(jì)數(shù)寄存器及初值寄存器
初始化程序流程
? ? ? ?

? ? ? ?
當(dāng)有兩個(gè)以上計(jì)數(shù)器被應(yīng)用時(shí)的初始化程序設(shè)計(jì)流程:
? ? ? ?

? ? ? ?
? ? ? ?

? ? ? ?
原則:先寫入控制字,后寫入計(jì)數(shù)初值
8253應(yīng)用例:
? 采用8253作定時(shí)/計(jì)數(shù)器,其接口地址為0120H~0123H。
? 輸入8253的時(shí)鐘頻率為2MH。要求:
? CNT0每10ms輸出一個(gè)CLK周期寬的負(fù)脈沖
? CNT1輸出10KHz的連續(xù)方波信號(hào)
? CNT2在定時(shí)5ms后產(chǎn)生輸出高電平
? 畫線路連接圖,并編寫初始化程序.
工作的計(jì)數(shù)器
工作方式
計(jì)數(shù)初值
啟動(dòng)方式
計(jì)數(shù)脈沖頻率
? 計(jì)算計(jì)數(shù)初值:
CNT0:10ms/0.5us=20000 ? (可有2MH推出周期0.5us)
CNT1:2 MHz/10KHz=200
CNT2: 5ms/0.5us=10000
? 確定控制字:
CNT0:方式2,16位計(jì)數(shù)值 控制字00110100
CNT1:方式3,低8位計(jì)數(shù)值 控制字01010110
CNT2:方式0,16位計(jì)數(shù)值 控制字10110000
? ? ? ?

? ? ? ?
初始化程序
CNT0:
MOV DX,0123H;控制器的地址
MOV AL,34H;計(jì)數(shù)器0的控制字
OUT DX,AL
MOV DX,0120H;計(jì)數(shù)器0的位置
MOV AX,20000
OUT DX,AL;寫低8位
MOV AL,AH
OUT DX,AL;寫高8位(OUT的操作數(shù)不能直接是AH)
CNT1:
……
CNT2:
……
8253接口
? 可編程8bit并行接口(但是內(nèi)部計(jì)數(shù)器是16位的)。通過軟件初始化控制其工作方式和計(jì)數(shù)/ 定時(shí)時(shí)長(zhǎng)
? 實(shí)現(xiàn)對(duì)外部設(shè)備的定時(shí)/計(jì)數(shù)控制。
減法計(jì)數(shù)器。
第52講 可編程并行接口8255
補(bǔ)充知識(shí):并行通信和串行通信
在通信過程中,如果能夠同時(shí)傳送數(shù)據(jù)的所有位(位數(shù)山機(jī)器的字長(zhǎng)決定)就稱為并行通信;如果數(shù)據(jù)是逐位順序傳送,則稱為串行通信
1. 并行接口8255的特點(diǎn):
通道型接口
? 主要用于數(shù)據(jù)的輸入或輸出
含3個(gè)獨(dú)立的8位并行輸入/輸出端口
? 2個(gè)為8位端口(PA,PB);
? 1個(gè)可拆分為兩個(gè)4位端口(PC口)
各端口均具有數(shù)據(jù)的控制和鎖存能力
? 既可作為輸入端口,也可以作輸出端口。
可通過編程,設(shè)置各端口工作在某一確定狀態(tài)下。
? ? ? ?

? ? ? ?
2. 結(jié)構(gòu)
A組控制:A端口,C口高4位
B組控制: B端口,C口低4位
針對(duì)A、B組的控制字存放在控制寄存器中
? ? ? ?

? ? ? ?
3. 引線
連接系統(tǒng)端的主要引線:
? D0----D7
? #CS
? #RD
? #WR
? A0,A1
? REAST
? ? ? ?

? ? ? ?
連接外設(shè)端的引腳:
? PA0 —— PA7
? PB0 —— PB7
? PC0 —— PC7
分別對(duì)應(yīng)ABC三個(gè)端口
8255與系統(tǒng)的連接示意圖
? ? ? ?

? ? ? ?
4. 工作方式
基本輸入/輸出方式(方式0)
選通工作方式(方式1)
雙向傳送方式(方式2)
方式0:
? 相當(dāng)于三個(gè)獨(dú)立的8位簡(jiǎn)單接口
? 各端口既可設(shè)置為輸入口,也可設(shè)置為輸出口,但不能同時(shí)實(shí)現(xiàn)輸入及輸出
? C端口可以是一個(gè)8位的簡(jiǎn)單接口,也可以分為兩個(gè)獨(dú)立的4位端口
? 常用于連接簡(jiǎn)單外設(shè),適于無(wú)條件或查詢方式
方式0的應(yīng)用:
? 習(xí)慣上:
? A端口和B端口作為8位數(shù)據(jù)的輸入或輸出口
? C口的某些位作為狀態(tài)輸入
? 注:
? ?若使C端口低4位中某一位作為輸入口,則低4位中其他位都應(yīng)作為輸入口。同時(shí)可設(shè)高4位作為輸出。
? ? ? ?

? ? ? ?
方式1:
?利用一組選通控制信號(hào)控制A端口和B端口的數(shù)據(jù)輸入輸出
? A口、B口作輸入或輸出口,C口的部分位用作選通控制信號(hào)
? A口、B口在作為輸入和輸出時(shí)的選通信號(hào)不同
方式1下A、B端口作為輸出的選通控制信號(hào)和輸出波形
? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ?
方式1下A、B端口作為輸入的選通控制信號(hào)和輸出波形
? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ?
方式1的應(yīng)用:
? 方式1主要用于中斷控制方式下的輸入輸出
? C口的8位除用作選通信號(hào)外,其余位可工作于方式0下,作為輸入或輸出口。
方式2:
? 雙向輸入輸出方式??梢约茸鳛檩斎肟?,又作為輸出口。
? 只有A端口可工作在方式2下
方式2下A端口的選通控制信號(hào)和輸出波形
? ? ? ?

? ? ? ?
方式2的應(yīng)用:
? 可使A端口作為雙向端口所有
? 用于中斷控制方式
? 當(dāng)A口工作于方式2時(shí):
? B口可工作于方式1,此時(shí)C口的所有位都用作選通控制信號(hào)的輸入輸出
? B口也可工作于方式0,此時(shí)C口的剩余位也可工作于方式0
4. 方式控制字及位控制字
? 方式控制字:
用于確定3個(gè)端口的工作方式及數(shù)據(jù)傳送方向;
? 位控制字
? 僅用于C端口
? 可設(shè)置C口某位的初始狀態(tài)(為高電平或低電平)
? 當(dāng)其工作于方式0下且作為輸出口時(shí),一般需要對(duì)作為輸出的位設(shè)置初始狀態(tài)(即初始化)
8255控制字
? ? ? ?

? ? ? ?
5. 8255芯片的應(yīng)用
? 芯片與系統(tǒng)的連接
? 芯片的初始化
? 相應(yīng)的控制程序
8255應(yīng)用例:
? 8086CPU通過8255實(shí)施監(jiān)控。8255端口地址為1020H-1023H,啟動(dòng)操作由端口B的PB7控制(高電平有效),端口A輸入8個(gè)監(jiān)控點(diǎn)的狀態(tài)(每個(gè)引腳接一個(gè)監(jiān)控點(diǎn)),只要其中任一路出現(xiàn)異常情況(高電平),系統(tǒng)就通過與PC0相連的信號(hào)燈報(bào)警(高電平燈亮),要求信號(hào)燈亮滅3次。要求:
? 設(shè)計(jì)系統(tǒng)線路圖,要求用138譯碼器設(shè)計(jì)譯碼電路;
? 編寫8255初始化程序及啟動(dòng)、測(cè)試和報(bào)警控制程序
地址范圍0001 0000 0010 00XX
? ? ? ?

? ? ? ?
控制流程
? ? ? ?

? ? ? ?
控制程序
MOV DX,1023H;控制寄存器地址
MOV AL,10010000B;方式控制字
OUT DX,AL
MOV AL,0;位控制字
OUT DX,AL
MOV DX,1021H
MOV AL,80H;PB7輸出高電平,啟動(dòng)布防
OUT DX,AL
A:MOV DX,1020H;這里的四句是監(jiān)控程序
IN AL,DX
CMP AL,0
JZ A
MOV CX,3
MOV DX,1022H;C端口
MOV AL,1;PC0位輸出1(高電平)
B: OUT DX,AL
CALL DELAY
NOT AL;按位取反 C0位變換亮滅(高低電平)
CALL DELAY
LOOP B
JMP A
8255應(yīng)用要求
? 主要引線功能及結(jié)構(gòu)
? 3種工作方式及其特點(diǎn)
? 應(yīng)用:
? 芯片與系統(tǒng)的連接
? 芯片的初始化編程
? 數(shù)據(jù)輸入/輸出控制程序設(shè)計(jì)
可編程數(shù)字接口小結(jié)
學(xué)習(xí)要求
了解什么是可編程
可編程定時(shí)/計(jì)數(shù)器8253
啟動(dòng)方式
不同工作方式下的輸出波形
初始化編程
與系統(tǒng)的連接
還要注意根據(jù)需要選擇相應(yīng)的工作方式
可編程并行數(shù)字接口8255
不同工作方式適應(yīng)場(chǎng)合
與系統(tǒng)的連接
初始化編程
相關(guān)控制程序
利用8255和8253構(gòu)造報(bào)警系統(tǒng)
(略)