8253译码电路设计以及初始化编程讲解
先驗知識回顧:知識點不清晰的時候可以查詢相關知識點。
https://blog.csdn.net/qq_42604176/article/details/105810973
需掌握的主要知識點
1、譯碼電路設計
2、初始化編程
例題1
在以 8086構成的最大方式系統中,有一片8254的端口地址分別為301H、303H、305H和307H,給定的外部時鐘為512kHz。 要求:、
(1)利用計數器0產生周期為1ms的周期信號,請編寫初始化程序;利用這一計數器能產生的最低信號頻率為_______, 這時的時常數CR。=________;
思路:
1、分析采用哪種方式
根據要求產生周期信號,采用方式2/3:分頻器/周期性方波輸出;
2、計算時常數CR0
CR0=輸出信號周期/外部時鐘周期=1ms/(1/512k)=512
3、了解該計數器的最大分頻次數,計算最大分頻次數
最大分頻次數是62256次,這樣可以獲取最低頻率:512k/62256=8.22Hz
(2)利用計數器1和2產生如圖9. 17所示的周期信號,并編寫初始化程序;
產生這種非方波的周期信號,使用方式2,但是在方式2下,低電平時間僅為一個時鐘周期。因此,利用一個計數通道無法實現。現在采用計數器1和計數器2聯合,先利用計數器1產生周期為1.5ms的周期信號,然后將輸出OUT1信號作為計數器2的時鐘輸入CLK2。
對于計數器1,工作方式可以選擇方式2/3,一般選擇方式3,這樣可以使產生的信號近似對稱,其時常數CR1=1.5ms/(1/512k)=768,采用16位的時常數表示。
對于計數器2,工作方式只能選擇方式2,其時間常數CR2=(3s+1.5ms)/1.5ms=2001,所以也需要16位時常數表示。
(3)畫出8253的端口譯碼電路(地址線只使用Ao~Ag)及其連接圖。
譯碼電路地址要求:
| 00 | 11,0000,0001 | 301H |
| 01 | 11,0000,0011 | 303H |
| 10 | 11,0000,0101 | 305H |
| 11 | 11,0000,0111 | 307H |
注意由于是奇地址,數據線和A0所做出的的更改:
例題2
設8253的端口地址為260H ~ 263H,外部時鐘信號為1MHz,要求產生如圖所示的周期波形,畫出8253的連接圖,并編寫初始化程序段。
分析:
產生的信號低電平時間比高電平寬的多,所以不能直接采用方式2實現。如果可以增加外部器件,則可以在上一題的基礎上,將OUT端信號非門取反。
1、由于要采用方式3,產生周期:1s+12ms=1012ms的方波信號,題目給定的外部時鐘周期為1MHz,這時候需要的分頻系數(時常數)為:1012ms/1us=1012000,顯然這個超過了65536(2^16),所以通過一個計數通道無法實現,所以采用計數器0和計數器1聯合產生。CR0=1000,CR1=1012,這樣OUT0周期為1ms。
2、利用計數器2的方式1(可編程單穩脈沖)實現單脈沖形成一次作為要求產生信號的低電平,時常數CR2=1s/1ms-1=1000-1=999,計數器0 的OUT0信號作為計數器2的時鐘輸入信號,OUT1作為計數器2的硬件觸發信號,確保周期為1012ms。這里注意,計數器的方式1的時常數確定的是輸出低電平的時長,也就是所謂的單脈沖寬度.
OUT0:輸出的是周期為1ms的方波
OUT1:輸出的是周期為1012ms的方波,也就是說每1012ms產生一個上升沿,這確定了計數器2的方式1一個周期寬度
OUT2:輸出的是周期為1012ms,低電平時長為1000ms的脈沖。
我覺得最需要關注的兩個連接點就是:OUT0->CLK1,OUT1->GATE2
例題3
在8088最小系統中,8253 的端口地址為284H~287H.系統提供的時鐘為IMHz,要求在OUT0輸出周期為20微秒的方波,在OUTI輸出周期為200微秒,其中每周期為負的時間是180微秒的信號。請編寫8253的初始化程序。
分析:這一題和上一題的思路很相似,主要的就是不需要聯合。
通道0產生方波,可以使用方式3產生。
時常數CR0=輸出信號周期/外部時鐘周期=20us/(1/1M)=20;
通道2產生方波,可以使用方式3產生。
時常數CR2=輸出信號周期/外部時鐘周期=200us/(1/1M)=200;
通道1,采用方式1,時常數,CR1=180/20-1=8;
總結
以上是生活随笔為你收集整理的8253译码电路设计以及初始化编程讲解的全部內容,希望文章能夠幫你解決所遇到的問題。