;*****************************************;;實(shí)驗(yàn)名稱:廣告燈左右移動實(shí)驗(yàn) ;
;作者: 龍誼 ;
;版本: VER 1.0 ;
;說明: 初學(xué)者學(xué)習(xí)單片機(jī)編程入門實(shí)驗(yàn) ;
;修改: 無 ;
;編程語言: 匯編語言 ;
;*****************************************;
本文引用地址:http://cafeforensic.com/article/201611/320664.htm方法一:
ORG00H
START:MOVA,#0FFH ;設(shè)置左移初值
CLRC ;進(jìn)位清零
MOVR1,#08H ;設(shè)定左移次數(shù)8
ZUOYI:RLCA ;開始左移
MOVP0,A ;由P0口顯示左移值
CALLDELAY ;調(diào)延時子程序
DJNZR1,ZUOYI ;判斷左移次數(shù)=8?不等就繼續(xù)左移
MOVR1,#07H ;等于就設(shè)定右移次數(shù)7
YOUYI:RRCA ;開始右移
MOVP0,A ;由P0口顯示右移值
CALL DELAY ;調(diào)延時子程序
DJNZR1,YOUYI ;判斷右移次數(shù)=7?不等就繼續(xù)右移
JMPSTART ;等于就返回開始形成程序的循環(huán)功能
DELAY:MOVR5,#20 ;采用晶振12MHZ,延時時間為0.2秒
D1: MOVR6,#20
D2: MOVR7,#248
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
RET
END
方法二:
ORG00H
START: MOVDPTR,#TABLE;TABLE表的地址存入數(shù)據(jù)指針
YIDONG:CLRA ;清除ACC
MOVCA,@A+DPTR ;到數(shù)據(jù)指針?biāo)傅牡刂啡〈a
CJNEA,#01,QIDONG;取出的碼=01H?不是則跳到QIDONG
JMPSTART;是01H返回重新開始
QIDONG:MOVP0,A ;取到的碼由P0顯示
CALLDELAY ;調(diào)延時子程序
INCDPTR ;數(shù)據(jù)指針加1,取下一個碼
JMPYIDONG
DELAY: MOVR5,#20 ;采用晶振12MHZ,延時時間為0.2秒
D1: MOVR6,#20
D2: MOVR7,#248
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
RET
TABLE: DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH;左移碼
DB0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH ;右移碼
DB01H ;結(jié)束碼
END
評論