1. 程式人生 > >組合語言程式設計例項---序列控制七段數碼管

組合語言程式設計例項---序列控制七段數碼管

序列控制七段數碼管  
ORG	00H                           
START:
MOV	30H,#1	; 低位七段數碼管DS0顯示資料
MOV	31H,#5	; 高位七段數碼管DS1顯示資料
MOV     	R0,#30H	; R0=30H
MOV     	R1,#40H	; R1=40H
MOV     	R2,#2	; R2=2
DP10:   
MOV      DPTR,#TABLE   	; 裝表
MOV     	A,@R0	; 將R0所指的資料載入A
MOVC    	A,@A+DPTR      	; 取表
MOV     	@R1,A	; 把資料暫時儲存在R1所指的地址中
INC	R1	; R1自增1
INC	R0	; R0自增1
DJNZ	R2,DP10	; 如果R2不等於0,說明沒有取完兩個段碼,跳回DP10迴圈
MOV     	R0,#40H       	; R0=40H,指向剛才儲存段碼的空間
MOV     	R1,#2          	; R1=2,段碼共有2個位元組數
DP11:   
MOV     	R2,#8          	; R2=8,每位顯示資料共有8個段碼,R2作計數器 
MOV     	A,@R0         	; 把R0指向的段碼資料載入A
DP12:   
RLC	A              	; 段碼資料向左移動一位
MOV	P2.0,C          	; 序列輸出一位段碼資料
CLR	P2.1            	; 傳送位移脈衝
SETB	P2.1	; 形成上升沿
DJNZ	R2,DP12	; 判斷是否輸出8位段碼
INC	R0	; R0自增1
DJNZ	R1,DP11	; 判斷是否輸出兩個顯示資料
JMP	$
 
TABLE:	;七段數碼管顯示資料表(段碼)
DB	40H,79H,24H,30H,19H ;0,1,2,3,4
DB	12H,02H,78H,00H,10H ;5,6,7,8,9
END