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

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

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


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


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


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


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


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

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


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


????ORG???0000H

START:

????MOV???30H,?#254???;片內(nèi)?RAM

????MOV???31H,?#255???;30H?31H?中僅有一個(gè)低電平

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

????MOV???R2,?#16?????;循環(huán)?16?遍

LOOP:

????MOV???P0,?30H?????;輸出到?LED?

????MOV???P2,?31H

????CALL??DLY200MS????;延時(shí)

????CALL??SHIFT_L?????;移位

????DJNZ??R2,?LOOP????;循環(huán)?16?遍


????SJMP??START???????;再?gòu)念^開(kāi)始

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

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

????MOV???A,?30H

????RLC???A???????????;高位移入Cy

????MOV???30H,?A

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

????MOV???A,?31H

????RLC???A???????????;Cy移入低位,且高位移入Cy

????MOV???31H,?A

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

????MOV???A,?30H

????MOV???ACC.0,?C????;把Cy(高位)寫(xiě)入低位

????MOV???30H,?A

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

RET

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

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

????MOV???R6,?#197????;

DL0:

????MOV???R7,?#250????;1

????DJNZ??R7,?$???????;2?*?250?=?500

????DJNZ??R7,?$???????;2?*?256?=?512

????DJNZ??R6,?DL0?????;(1?+?500?+?512?+?2)?*?197?=?199955

????MOV???R7,?#19?????;1

????DJNZ??R7,?$???????;2?*?19?=?38

????NOP???????????????;1

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

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


END?

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


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


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



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


;I/O?地址:

COMMAND??EQU??7F00H

??PORTA??EQU??7F01H???????

??PORTB??EQU??7F02H???????

??PORTC??EQU??7F03H

TIMER_L??EQU??7F04H

TIMER_H??EQU??7F05H


;MEM?地址:


;7E00H?~?7EFFH


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


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

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

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

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


????ORG???0000H

START:

????MOV???DPTR,?#COMMAND

????MOV???A,?#00000011B;PA方式0輸出,PB方式0輸出

????MOVX??@DPTR,?A


????INC???DPTR????????;轉(zhuǎn)到PA

????MOV???A,?#00110011B;測(cè)試共陽(yáng)極7段數(shù)碼管

????MOVX??@DPTR,?A

????INC???DPTR????????;轉(zhuǎn)到PB

????MOV???A,?#00001111B

????MOVX??@DPTR,?A


;????MOV???30H,?#254???;--改為?7E30H

;????MOV???31H,?#255???;--改為?7E31H


????MOV???DPTR,?#7E30H

????MOV???A,?#254

????MOVX??@DPTR,?A


????MOV???DPTR,?#7E31H?;片外?RAM?7E30H?7E31H

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

????MOVX??@DPTR,?A

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

????MOV???R2,?#16?????;循環(huán)?16?遍

LOOP:


;????MOV???P0,?30H?????;輸出到?LED?

;????MOV???P2,?31H


????MOV???DPTR,?#7E30H

????MOVX??A,?@DPTR

????MOV???DPTR,?#PORTA

????MOVX??@DPTR,?A


????MOV???DPTR,?#7E31H

????MOVX??A,?@DPTR

????MOV???DPTR,?#PORTB

????MOVX??@DPTR,?A


????CALL??DLY200MS????;延時(shí)

????CALL??SHIFT_L?????;移位

????DJNZ??R2,?LOOP????;循環(huán)?16?遍


????SJMP??START???????;再?gòu)念^開(kāi)始

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

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

;????MOV???A,?30H

????MOV???DPTR,?#7E30H

????MOVX??A,?@DPTR


????RLC???A???????????;高位移入Cy


;????MOV???30H,?A

????MOVX??@DPTR,?A

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

;????MOV???A,?31H

????MOV???DPTR,?#7E31H

????MOVX??A,?@DPTR


????RLC???A???????????;Cy移入低位,且高位移入Cy


;????MOV???31H,?A

????MOVX??@DPTR,?A

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

;????MOV???A,?30H

????MOV???DPTR,?#7E30H

????MOVX??A,?@DPTR


????MOV???ACC.0,?C????;把Cy(高位)寫(xiě)入低位


;????MOV???30H,?A

????MOVX??@DPTR,?A

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

RET

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

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

????MOV???R6,?#197????;

DL0:

????MOV???R7,?#250????;1

????DJNZ??R7,?$???????;2?*?250?=?500

????DJNZ??R7,?$???????;2?*?256?=?512

????DJNZ??R6,?DL0?????;(1?+?500?+?512?+?2)?*?197?=?199955

????MOV???R7,?#19?????;1

????DJNZ??R7,?$???????;2?*?19?=?38

????NOP???????????????;1

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

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


END?


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


原來(lái)程序中,凡是對(duì)?30H、31H?讀寫(xiě)的指令,都改成對(duì)片外?RAM?讀寫(xiě)。


凡是對(duì)?P0、P2?輸出的指令,都改成對(duì)片外?PA、PB?輸出。


這樣寫(xiě),程序的長(zhǎng)度,將近增加了一倍。呵呵,沒(méi)有辦法,只能這樣。


經(jīng)過(guò)修改,即可利用?8155?的資源,進(jìn)行流水燈的實(shí)驗(yàn)了。


顯示的效果,是只有一個(gè)?LED?流動(dòng)發(fā)光,比較簡(jiǎn)單,就不在這里插圖了。



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