日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 芯聞號 > 充電吧
[導(dǎo)讀]8255?是用來擴(kuò)充接口的芯片。用上一片?8255,就可以為系統(tǒng)增加?3?個?8?位的?IO?接口。在單片機(jī)的教材上,總是使用“三總線”的方式來連接?8255。在這樣的條件下,輸入/輸出數(shù)據(jù)的速度確實

8255?是用來擴(kuò)充接口的芯片。


用上一片?8255,就可以為系統(tǒng)增加?3?個?8?位的?IO?接口。


在單片機(jī)的教材上,總是使用“三總線”的方式來連接?8255。


在這樣的條件下,輸入/輸出數(shù)據(jù)的速度確實是比較快,一般用?2?個機(jī)器周期,就可以讀/寫一次。


但是,采用這種形式,電路則是相當(dāng)麻煩的,必須加上一個鎖存器芯片(74LS373);

并且,對于單片機(jī)的引腳,占用的也太多了,如?P0、P2,還要占用?P3.6、P3.7。

呵呵,占用了單片機(jī)自身?2?個半的接口,僅僅換來?3?個接口,有點得不償失。


如果搞清楚了?8255?的讀寫時序,使用單片機(jī)的接口引線“直接控制”?8255,效果則要好的多。


下圖就是一個“直接控制”?8255?的電路。



在圖中可以看出,僅僅使用了?P0?和?P2?的四個引腳,就近,和?8255?進(jìn)行連接。


不但節(jié)省了引腳數(shù)目,而且非常靈活。


在設(shè)計實際應(yīng)用的電路板時,可以隨意的就近使用引腳,而不必拘泥于?P0、P3.6、P3.7?等引腳。


當(dāng)把?8255?PA?輸入的開關(guān)量,輸出到?PC?口,使用如下的程序即可。


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


匯編語言:

;-----------------------------------

sbit?RD_8255?=?P2^0??;設(shè)定相關(guān)引腳

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

END

;-----------------------------------


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


C?語言:

//----------------------------------

#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?輸出數(shù)據(jù),如下即可:


????P0?=?0xB0;???//輸出數(shù)據(jù)

????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]?/*控制字地址*/?


呵呵,好多知識,統(tǒng)統(tǒng)都沒有用了,罪過罪過...


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


因為節(jié)省了一個鎖存器芯片,PCB?板的面積,也可以縮小,這就直接使硬件成本得到降低。


有時,一個產(chǎn)品,是否能夠占領(lǐng)市場,成本才是關(guān)鍵,讀寫速度慢上幾個微秒,對性能的影響極其微小。





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


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉