標題: 通過查表法的流水燈匯編程序 [打印本頁] 作者: 電子黑 時間: 2016-6-27 21:49 標題: 通過查表法的流水燈匯編程序 ORG 0 ;程序從0地址開始
START: MOV DPTR,#TAB ;將DPTR指向編碼表位置
LOOP: CLR A ;清空ACC
MOVC A,@A+DPTR ;根據(jù)ACC的內容取出編碼表里的編碼
CJNE A,#0FFH,SHOW ;若ACC的內容不等于0FFH,則跳至SHOW處執(zhí)行
AJMP START ;跳到START處執(zhí)行
SHOW: MOV P2,A ;讓P1口輸出ACC的內容
ACALL DELAY ;調用延時子程序
INC DPTR ;將DPTR寄存器的內容加1
AJMP LOOP ;跳到LOOP處執(zhí)行
;0.25秒延時子程序(12MHz晶振)===========================
DELAY: MOV R5,#2 ;R5寄存器加載8次
D0: MOV R7,#250 ;R7寄存器加載250次數(shù)
D1: MOV R6,#250 ;R6寄存器加載250次數(shù)
D2: DJNZ R6,D2 ;D2循環(huán)執(zhí)行R6次
DJNZ R7,D1 ;D1循環(huán)執(zhí)行R7次
DJNZ R5,D0 ;D0循環(huán)執(zhí)行R5次
RET ;返回主程序
TAB: ;流水燈花樣可以任意編寫(最后一組為11111111)
DB 10010101B
DB 01101010B
DB 10100101B
DB 01010101B
DB 10001010B
DB 01101000B
DB 10110101B
DB 01000010B
DB 10000000B
DB 01000000B
DB 00100000B
DB 00010000B
DB 00001000B
DB 00000100B
DB 00000010B
DB 00000001B
DB 00000000B
DB 11010111B
DB 11001001B
DB 11001101B
DB 11001001B
DB 00110111B
DB 00000001B
DB 00000010B
DB 00000100B
DB 00001000B
DB 00010000B
DB 00100000B
DB 01000000B
DB 10000000B
DB 11011101B
DB 11101011B
DB 11101101B
DB 11101011B
DB 11011011B
DB 10111111B
DB 01111011B
DB 10111011B
DB 11011111B
DB 11101011B
DB 10110101B
DB 11011011B
DB 01101101B
DB 0FFH ;11111111
END ;主程序結束