熟悉這些記憶體的結構,對撰寫單晶片程式會有很大的幫助。讀者想自行撰寫或修改單板微電腦的系統監督程式,最好能下點工夫,將這些記憶體的功能與結構做充分的了解。
中斷向量地址:
由於這些內部程式記憶體的地址都與中斷有關,所以我們也稱這些地址為中斷向量,在撰寫程式時,若程式本身沒有利用到中斷的功能,則以下七個特別的地址可視為一般程式記憶體地址來處理,但是若程式中使用到某箇中斷時,則該中斷對應的地址,就必須保留,因為,只要該中斷髮生時,接下來被執行的就是位於該地址的指令,下列這些地址是各種中斷服務程式的進入點。
功能
地址
中斷
串列埠中斷向量
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