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

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 單片機(jī)自身的RAM存儲(chǔ)空間和引腳數(shù)目往往有些不足,當(dāng)需要在外部拓展不太多的時(shí)候,8155芯片就是首選了。一片8155,可以提供256字節(jié)的RAM,3個(gè)并行IO接口和一個(gè)14位的定時(shí)器。8155的內(nèi)部還集成了地址鎖存

單片機(jī)自身的RAM存儲(chǔ)空間和引腳數(shù)目往往有些不足,當(dāng)需要在外部拓展不太多的時(shí)候,8155芯片就是首選了。


一片8155,可以提供256字節(jié)的RAM,3個(gè)并行IO接口和一個(gè)14位的定時(shí)器。


8155的內(nèi)部還集成了地址鎖存器,如果只是需要擴(kuò)展8155,就可以省去常用的地址鎖存器74LS373。


下面,先寫一個(gè)使用單片機(jī)自身資源來驅(qū)動(dòng)16個(gè)LED進(jìn)行流水的程序。


然后,再把它改造為利用8155來驅(qū)動(dòng)。


利用51單片機(jī)驅(qū)動(dòng)16個(gè)LED流水燈的匯編語言程序如下。

;=========================================================


;16個(gè)LED接到P0,P2。


ORG0000H

START:

MOV30H,#254;片內(nèi)RAM

MOV31H,#255;30H31H中僅有一個(gè)低電平

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

MOVR2,#16;循環(huán)16遍

LOOP:

MOVP0,30H;輸出到LED

MOVP2,31H

CALLDLY200MS;延時(shí)

CALLSHIFT_L;移位

DJNZR2,LOOP;循環(huán)16遍


SJMPSTART;再從頭開始

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

SHIFT_L:;16位數(shù)左移一位

MOVA,30H

RLCA;高位移入Cy

MOV30H,A

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

MOVA,31H

RLCA;Cy移入低位,且高位移入Cy

MOV31H,A

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

MOVA,30H

MOVACC.0,C;把Cy(高位)寫入低位

MOV30H,A

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

RET

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

DLY200MS:;延時(shí)200ms,誤差0us

MOVR6,#197;

DL0:

MOVR7,#250;1

DJNZR7,$;2*250=500

DJNZR7,$;2*256=512

DJNZR6,DL0;(1+500+512+2)*197=199955

MOVR7,#19;1

DJNZR7,$;2*19=38

NOP;1

RET;1+199955+1+38+1+2=199998

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


END

;=========================================================


上述程序所對(duì)應(yīng)的電路,太簡(jiǎn)單了,就不在這里顯示插圖了,讀者可自行畫圖。


當(dāng)在電路中加入了一片8155,電路可以如下連接:



圖片鏈接:http://xiangce.baidu.com/picture/detail/077253d8ef5443cc7ce6c5e5461a899e2034497a


圖中,由于使用了P2.7和P2.0連接到CS和IO/M,所以,8155的接口地址、存儲(chǔ)器地址分別為:


;I/O地址:

COMMANDEQU7F00H

PORTAEQU7F01H

PORTBEQU7F02H

PORTCEQU7F03H

TIMER_LEQU7F04H

TIMER_HEQU7F05H


;MEM地址:


;7E00H~7EFFH


因此,前面的流水燈程序,就要如下修改:


;=========================================================

;51單片機(jī)流水燈(16個(gè)燈)

;P0,P2外接16個(gè)LED--改為PA,PB

;30H,31H片內(nèi)RAM----改為片外


ORG0000H

START:

MOVDPTR,#COMMAND

MOVA,#00000011B;PA方式0輸出,PB方式0輸出

MOVX@DPTR,A


INCDPTR;轉(zhuǎn)到PA

MOVA,#00110011B;測(cè)試共陽極7段數(shù)碼管

MOVX@DPTR,A

INCDPTR;轉(zhuǎn)到PB

MOVA,#00001111B

MOVX@DPTR,A


;MOV30H,#254;--改為7E30H

;MOV31H,#255;--改為7E31H


MOVDPTR,#7E30H

MOVA,#254

MOVX@DPTR,A


MOVDPTR,#7E31H;片外RAM7E30H7E31H

MOVA,#255;中僅有一個(gè)低電平

MOVX@DPTR,A

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

MOVR2,#16;循環(huán)16遍

LOOP:


;MOVP0,30H;輸出到LED

;MOVP2,31H


MOVDPTR,#7E30H

MOVXA,@DPTR

MOVDPTR,#PORTA

MOVX@DPTR,A


MOVDPTR,#7E31H

MOVXA,@DPTR

MOVDPTR,#PORTB

MOVX@DPTR,A


CALLDLY200MS;延時(shí)

CALLSHIFT_L;移位

DJNZR2,LOOP;循環(huán)16遍


SJMPSTART;再從頭開始

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

SHIFT_L:;16位數(shù)左移一位

;MOVA,30H

MOVDPTR,#7E30H

MOVXA,@DPTR


RLCA;高位移入Cy


;MOV30H,A

MOVX@DPTR,A

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

;MOVA,31H

MOVDPTR,#7E31H

MOVXA,@DPTR


RLCA;Cy移入低位,且高位移入Cy


;MOV31H,A

MOVX@DPTR,A

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

;MOVA,30H

MOVDPTR,#7E30H

MOVXA,@DPTR


MOVACC.0,C;把Cy(高位)寫入低位


;MOV30H,A

MOVX@DPTR,A

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

RET

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

DLY200MS:;延時(shí)200ms,誤差0us

MOVR6,#197;

DL0:

MOVR7,#250;1

DJNZR7,$;2*250=500

DJNZR7,$;2*256=512

DJNZR6,DL0;(1+500+512+2)*197=199955

MOV R7, #19 ;1

本站聲明: 本文章由作者或相關(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)閉