4) 循環(huán)n次的程序
如果要使某段程序循環(huán)執(zhí)行n次,可以用一個寄存器作計數(shù)器。下例以F10做計數(shù)器,使程序循環(huán)8次。
COUNT EQU 10 ;定義F10名稱為COUNT(計數(shù)器)
┋
MOVLW 8
MOVWF COUNT LOOP ;循環(huán)體
LOOP
┋
DECFSZ COUNT,1 ;COUNT減1,結(jié)果為零則跳
GOTO LOOP ;結(jié)果不為零,繼續(xù)循環(huán)
┋ ;結(jié)果為零,跳出循環(huán)
5)“IF……THEN……”格式的程序
下面以“IF X=Y THEN GOTO NEXT”格式為例。
MOVF X,0 ;X→W
SUBWF Y,0 ;Y—W(X)→W
BTFSC STATUS,Z ;X=Y 否
GOTO NEXT ;X=Y,跳到NEXT去執(zhí)行。
┋ ;X≠Y
6)“FOR……NEXT”格式的程序
“FOR……NEXT”程序使循環(huán)在某個范圍內(nèi)進(jìn)行。下例是“FOR X=0 TO 5”格式的程序。F10放X的初值,F11放X的終值。
START EQU 10
DAEND EQU 11
┋
MOVLW 0
MOVWF START ; 0→START(F10)
MOVLW 5
MOVWF DAEND ;5→DAEND(F11)
LOOP
┋
INCF START,1 ;START值加1
MOVF START,0
SUBWF DAEND,0 ;START=DAEND ?(X=5否)
BTFSS STATUS,Z
GOTO LOOP ;X<5,繼續(xù)循環(huán)
┋ ;X=5,結(jié)束循環(huán)
7)“DO WHILE……END”格式的程序
“DO WHILE……END”程序是在符合條件下執(zhí)行循環(huán)。下例是“DO WHILE X=1”格式的程序。F10放X的值。
X EQU 10
┋
MOVLW 1
MOVWF X ;1→X(F10),作為初值
LOOP
┋
MOVLW 1
SUBWF X,0
BTFSS STATUS,Z ;X=1否?
GOTO LOOP ;X=1繼續(xù)循環(huán)
┋ ;X≠1跳出循環(huán)
8) 查表程序
查表是程序中經(jīng)常用到的一種操作。下例是將十進(jìn)制0~9轉(zhuǎn)換成7段LED數(shù)字顯示值。
設(shè)LED為共陽,則0~9數(shù)字對應(yīng)的線段值如下表:
| 十進(jìn)數(shù) | 線段值 | 十進(jìn)數(shù) | 線段值 |





