quang_nhon84
30-12-2008, 10:14 AM
Giúp em với,em đang lập trình cho con 16F628 để viết delay 7 tiếng tác động 1 lần nhưng viết thử thì chỉ được 2 s là lệnh Decfsz của vòng lặp không thực hiện được nữa,không hiểu tại sao Em dùng thạch anh 4M. Làm thế nào để viết được Delay dài hơn,giúp em với.Chương trình thử của em:
org 0x005
start
BSF STATUS,RP0
MOVLW 0x00
MOVWF TRISB
BCF STATUS,RP0
MOVLW 0x00
MOVWF PORTB
loop
CALL DELAY1p
CALL DELAY1p
BCF STATUS,RP0
MOVLW 0xF0
MOVWF PORTB
goto loop
DELAY1s
MOVLW d'249'
MOVWF COUNT1
D1
MOVLW d'255'
MOVWF COUNTA
MOVLW 0X01
MOVWF COUNTB
DELAY_0
DECFSZ COUNTA,1
GOTO $+2
DECFSZ COUNTB,1
GOTO DELAY_0
DECFSZ COUNT1,1
GOTO D1
RETLW 0x000
DELAY1p
MOVLW D'6'
MOVWF COUNTC
LOOP
CALL DELAY1s
DECFSZ COUNTC,1
GOTO LOOP
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;
Lệnh Call Delay1p đầu thì chạy được nhưng lệnh thứ 2 thì bó tay
org 0x005
start
BSF STATUS,RP0
MOVLW 0x00
MOVWF TRISB
BCF STATUS,RP0
MOVLW 0x00
MOVWF PORTB
loop
CALL DELAY1p
CALL DELAY1p
BCF STATUS,RP0
MOVLW 0xF0
MOVWF PORTB
goto loop
DELAY1s
MOVLW d'249'
MOVWF COUNT1
D1
MOVLW d'255'
MOVWF COUNTA
MOVLW 0X01
MOVWF COUNTB
DELAY_0
DECFSZ COUNTA,1
GOTO $+2
DECFSZ COUNTB,1
GOTO DELAY_0
DECFSZ COUNT1,1
GOTO D1
RETLW 0x000
DELAY1p
MOVLW D'6'
MOVWF COUNTC
LOOP
CALL DELAY1s
DECFSZ COUNTC,1
GOTO LOOP
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;
Lệnh Call Delay1p đầu thì chạy được nhưng lệnh thứ 2 thì bó tay