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

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

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


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


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


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


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

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

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


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


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



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


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


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


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


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


匯編語(yǔ)言:

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

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??????????????;稍延時(shí),以保證寬度

????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?語(yǔ)言:

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

#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;?//寫


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


因?yàn)闆]有使用“三總線”方式,所以,也就沒有接口地址的問題。


那么,一般的教材中所說(shuō)的片外地址,就沒有用了。


下面這些?C?語(yǔ)言中的頭文件、宏定義,也用不上了:


#include

#define?PA?XBYTE[0xE000]??/*PA口地址*/?

#define?PB?XBYTE[0xE001]??/*PB口地址*/?

#define?PC?XBYTE[0xE002]??/*PC口地址*/?

#define?CON?XBYTE[0xE003]?/*控制字地址*/?


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


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


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


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


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