|
請幫我檢查一下問題
|
|
新會員
|
這程式是使用PIC16F877 PORTD是8顆LED做跑馬燈, PORTB是4顆選擇按鈕, 按下B1.左移B2.右移B3.延遲變大B4.延遲變小,
左右移沒問題,但是延遲卻無法變化, 撿查許久都不知道問題所在 程式碼如下:
LIST P=16F877, R=DEC INCLUDE <P16F877.INC> CBLOCK H'20' A,X,X1,X2,X3,X4 ENDC ORG 0 NOP BANKSEL TRISD MOVLW 0 MOVWF TRISD BANKSEL PORTD MOVLW B'11111110' MOVWF A MOVWF PORTD CALL DLY MOVLW 100 MOVWF X MOVLW 10 MOVWF X4
S1: RLF A,W RLF A,F MOVF A MOVWF PORTD CALL DLY BTFSC PORTB,2 GOTO S1 GOTO S2
S2: RRF A,W RRF A,F MOVF A MOVWF PORTD CALL DLY BTFSC PORTB,1 GOTO S2 GOTO S1
DLY: MOVF X MOVWF X1 BTFSS PORTB,4 GOTO A1 BTFSS PORTB,3 GOTO A2 GOTO AA
A1: MOVF X1 ADDWF X4 MOVWF X1 GOTO AA
A2: MOVF X1 SUBWF X4 MOVWF X1 GOTO AA
AA: MOVF X1 MOVWF X
LL: MOVF 10 MOVWF X2
L1: MOVLW 50 MOVWF X3
L2: DECFSZ X3 GOTO L2 DECFSZ X2 GOTO L1 DECFSZ X1 GOTO LL RETURN
END
發表於: 2005/1/3 1:15
|
|