單晶片套用實習報告

熟悉這些記憶體的結構,對撰寫單晶片程式會有很大的幫助。讀者想自行撰寫或修改單板微電腦的系統監督程式,最好能下點工夫,將這些記憶體的功能與結構做充分的了解。

中斷向量地址:

由於這些內部程式記憶體的地址都與中斷有關,所以我們也稱這些地址為中斷向量,在撰寫程式時,若程式本身沒有利用到中斷的功能,則以下七個特別的地址可視為一般程式記憶體地址來處理,但是若程式中使用到某箇中斷時,則該中斷對應的地址,就必須保留,因為,只要該中斷髮生時,接下來被執行的就是位於該地址的指令,下列這些地址是各種中斷服務程式的進入點。

功能

地址

中斷

串列埠中斷向量

0023H

UART

計時計數中斷TIMER2向量

002BH

TIMER2

計時計數中斷TIMER1向量

001BH

TIMER1

計時計數中斷TIMER0向量

000BH

TIMER0

外部中斷INT1向量

0013H

INT1

外部中斷INT0向量

0003H

INT0

系統重置啟始地址

0000H

RESET

單晶片指令集:

數據定址指令:累加器,快取器,直接, 間接記憶體定址與I/O連線埠間的數據轉移。

算術運算指令:數據做加(ADD)、減(SUB)、乘(MUL)、除(DIV)運算,或加一(INC),減一(DEC)等運算。

邏輯運算指令:數據做AND(ANL)、OR(ORL)、XOR (XRL)運算,與RR、RL、RRC、RLC位鏇轉功能。

布爾代數運算指令:位數據的清除與設定,如SETB,CLR。或位數據的運算ANL C, bit...等。

程式流程控制:循環,呼叫子程式(CALL),中斷,條件判斷的跳躍。如JMP,JZ,CJNZ,DJNZ,RET...等指令。 

範例套用:

名稱:

單開關控制燈號變化,以指撥開關以控制程式流向,造成燈號的變化

動作要求:

接於阜腳P2.7上之指撥開關撥至ON位置時,P2.7阜腳為低電壓,接於P0之8個LED燈不停的作霹靂燈之動作,直制止撥開關撥至OFF位置時,P2.7為高電位,LED燈號變成奇偶位置不停地互動亮滅。

電路圖: 

程式:

ORG00H

START:JBP2.7,LOOP2 ;檢查P2.7,若為1則跳至LOOP2,否則往下執行

LOOP1:MOV DPTR#TABLE;設定表格之起始為止於DPTR

MOV R3,#07H ;設定表格數據之地址組數於R3 

MOV A,#00H ;設定偏移量起始地址值0於A快取器

L1:JBP2.7,LOOP2 ;在LOOP1循環中,依據DPTR及A

MOV R0,A;依序由表格取出七個位元組數據送

MOVCA,@A+DPTR 傳至P0作霹靂燈動作且檢查P2.7之變

MOV P0,A ;化,以決定是否跳出LOOP1循環

MOV R5,#5

ACALL DELAY

MOV A,R0

INCA

DJNZ R3,L1

AJMP LOOP1;無條件跳出LOOP1

LOOP2:MOV A,#55H;在L2循環中,不停的作奇偶燈互動換互亮滅的動作並檢查P2.7之變化,已決定是否跳出L2循環

L2:JNBP2.7,LOOP2

MOV P0,A

MOV R5,#5

ACALL DELAY

XRLA,#FFH

AJMP L2

DELAY: MOV R3,#38H;子程式,延遲時間=R5*20ms

D1: MOV R6,#F9H

DJNZ R6,$

DJNZ R7,D1

DJNV R5,DELAY

RET

TABLE:DB 7EH,0BDH,0DBH,07EH ;霹靂燈之表格數據

DB 0DBH,0BDH,7EH

END