8255 的直接連線方法

2021-07-09 15:00:53 字數 2549 閱讀 6666

8255 是用來擴充介面的晶元。

用上一片 8255,就可以為系統增加 3 個 8 位的 io 介面。

在微控制器的教材上,總是使用「三匯流排」的方式來連線 8255。

在這樣的條件下,輸入/輸出資料的速度確實是比較快,一般用 2 個機器週期,就可以讀/寫一次。

但是,採用這種形式,電路則是相當麻煩的,必須加上乙個鎖存器晶元(74ls373);

並且,對於微控制器的引腳,占用的也太多了,如 p0、p2,還要占用 p3.6、p3.7。

呵呵,占用了微控制器自身 2 個半的介面,僅僅換來 3 個介面,有點得不償失。

如果搞清楚了 8255 的讀寫時序,使用微控制器的介面引線「直接控制」 8255,效果則要好的多。

下圖就是乙個「直接控制」 8255 的電路。

在圖中可以看出,僅僅使用了 p0 和 p2 的四個引腳,就近,和 8255 進行連線。

不但節省了引腳數目,而且非常靈活。

在設計實際應用的電路板時,可以隨意的就近使用引腳,而不必拘泥於 p0、p3.6、p3.7 等引腳。

當把 8255 pa 輸入的開關量,輸出到 pc 口,使用如下的程式即可。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

組合語言:

sbit rd_8255 = p2^0  ;設定相關引腳

sbit wr_8255 = p2^1  ;

sbit a0_8255 = p2^2  ;

sbit a1_8255 = p2^3  ;

org   0000h

mov   p0, #92h   ;pa輸入, pb pc輸出

clr   wr_8255    ;寫入控制暫存器

setb  wr_8255

loop:

mov   p0, #255   ;輸出1

clr   a1_8255    ;選定pa

clr   a0_8255

clr   rd_8255    ;讀

nop              ;稍延時,以保證寬度

mov   a, p0      ;讀出

setb  rd_8255

setb  a1_8255    ;選定pc

clr   a0_8255

mov   p0, a      ;寫

clr   wr_8255    ;寫入

setb  wr_8255

sjmp  loop

endc 語言:

#include

sbit rd_8255 = p2^0;

sbit wr_8255 = p2^1;

sbit a0_8255 = p2^2;

sbit a1_8255 = p2^3;

main()

char  aa;

p0 = 0x92;   //控制字: pa輸入, pb pc輸出

a1_8255 = 1;  a0_8255 = 1; //選中控制暫存器

wr_8255 = 0;  wr_8255 = 1; //寫

while(1)  {

p0 = 0xff;   //先輸出1

a1_8255 = 0;  a0_8255 = 0; //選中pa

rd_8255 = 0;  aa = p0;  rd_8255 = 1; //讀

p0 = aa;     //這是剛才讀入的

a1_8255 = 1;  a0_8255 = 0; //選中pc

wr_8255 = 0;  wr_8255 = 1; //寫

如果需要用 pb 輸出資料,如下即可:

p0 = 0xb0;   //輸出資料

a1_8255 = 0;  a0_8255 = 1; //選中pb

wr_8255 = 0;  wr_8255 = 1; //寫

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

因為沒有使用「三匯流排」方式,所以,也就沒有介面位址的問題。

那麼,一般的教材中所說的片外位址,就沒有用了。

下面這些 c 語言中的標頭檔案、巨集定義,也用不上了:

#include

#define pa xbyte[0xe000]  /*pa口位址*/ 

#define pb xbyte[0xe001]  /*pb口位址*/ 

#define pc xbyte[0xe002]  /*pc口位址*/ 

#define con xbyte[0xe003] /*控制字位址*/ 

呵呵,好多知識,統統都沒有用了,罪過罪過...

按照這種方式,讀寫 io 口的速度,確實是降低了一些,但是,對於速度要求不太敏感的場合,還是非常適用的。

因為節省了乙個鎖存器晶元,pcb 板的面積,也可以縮小,這就直接使硬體成本得到降低。

有時,乙個產品,是否能夠占領市場,成本才是關鍵,讀寫速度慢上幾個微秒,對效能的影響極其微小。

前些天,做而論道還寫過乙個關於 8155 的博文,可見:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Pycharm直接連線Github

pycharm可以說是使用python語言開發者的必備利器。高校學生有學生郵箱就可以免費使用,著實省了我不少銀兩。附個license圖 git是乙個開源的分布式版本控制系統,用以有效 高速的處理從很小到非常大的專案版本管理。託管 版本控制神馬的,還是github和git最搭哦。現在pycharm已經...

PDA上直接連線上資料庫!

sqlconnection con new sqlconnection server 192.168.0.6 uid sa pwd sa database pubs sqldataadapter da new sqldataadapter select from employee con datas...

c mysql 埠號 C 直接連線MySql

1 引入mysql.data.dll 首先在建立工程後要引入mysql.data.dll檔案。在建立的專案上右鍵找到nuget程式包。qq截圖20200318223656.png qq截圖20200318223723.png sdk引入之後下面我們就可以進行對mysql的操作啦。2 與資料庫建立連線...