fan.pic
29-03-2011, 10:46 AM
Các bạn xem kĩ hai chương trình này rồi giải thích giúp mình:
( thạch anh 4mhz)
REG_DELAY_1 EQU 0x20
REG_DELAY_2 EQU 0x21
; Chuong trinh delay 100ms cho PIC 16F877A - CHUONG TRINH 1
DELAY_100MS
MOVLW 0x83
MOVWF REG_DELAY_1
MOVLW 0xFF
MOVWF REG_DELAY_2
LOOP1 DECFSZ REG_DELAY_1
GOTO LOOP2
GOTO EXIT
LOOP2 DECFSZ REG_DELAY_2
GOTO LOOP2
GOTO LOOP1
EXIT
; Chuong trinh delay 100ms cho PIC 16F877A - CHUONG TRINH 2
DELAY_100MS
MOVLW 0x83
MOVWF REG_DELAY_1
LOOP1 DECFSZ REG_DELAY_1
GOTO LOOP2
GOTO EXIT
LOOP2 MOVLW 0xFF
MOVWF REG_DELAY_2
DECFSZ REG_DELAY_2
GOTO LOOP2
GOTO LOOP1
EXIT
theo mình thì CHUONG TRINH 1 là sai vì sau một vòng lặp loop 2, giá trị thanh ghi REG_DELAY_2 bị giảm về 0 ( thanh ghi này được gán cho ô nhớ 21h trong GPR). nen ko thể delay được giá trị 100ms. nên mình đã sửa lại giống như ở CHUONG TRINH 2. Như thế có đúng ko ?
Các bạn xem rồi giúp mình với nha !
( thạch anh 4mhz)
REG_DELAY_1 EQU 0x20
REG_DELAY_2 EQU 0x21
; Chuong trinh delay 100ms cho PIC 16F877A - CHUONG TRINH 1
DELAY_100MS
MOVLW 0x83
MOVWF REG_DELAY_1
MOVLW 0xFF
MOVWF REG_DELAY_2
LOOP1 DECFSZ REG_DELAY_1
GOTO LOOP2
GOTO EXIT
LOOP2 DECFSZ REG_DELAY_2
GOTO LOOP2
GOTO LOOP1
EXIT
; Chuong trinh delay 100ms cho PIC 16F877A - CHUONG TRINH 2
DELAY_100MS
MOVLW 0x83
MOVWF REG_DELAY_1
LOOP1 DECFSZ REG_DELAY_1
GOTO LOOP2
GOTO EXIT
LOOP2 MOVLW 0xFF
MOVWF REG_DELAY_2
DECFSZ REG_DELAY_2
GOTO LOOP2
GOTO LOOP1
EXIT
theo mình thì CHUONG TRINH 1 là sai vì sau một vòng lặp loop 2, giá trị thanh ghi REG_DELAY_2 bị giảm về 0 ( thanh ghi này được gán cho ô nhớ 21h trong GPR). nen ko thể delay được giá trị 100ms. nên mình đã sửa lại giống như ở CHUONG TRINH 2. Như thế có đúng ko ?
Các bạn xem rồi giúp mình với nha !