Em viết chương trình delay 1s dùng timer0 của PÍC6F877A và chọn bộ chia tần prescaler là 1:64. Em tính thời gian delay 1s ( dùng thạch anh 4Mhz) fosc = 1Mhz = 1us. chọn giá trị đếm của timer0 là đếm từ .125 ( nạp vào TMR0 giá trị .132 ) và giá trị thanh ghi NS là .125) Nhưng em không biết em đã làm sai bước nào, em dò nhiều lần thử nhiều cách nhưng khi mô phỏng thì thời gian lớn hơn 1s rất nhiều. Đây là code delay 1s của em ( không sử dụng ngắt toàn cục và ngắt TMR0IE )
L1
CLRF TMR0
MOVLW .132
MOVWF TMR0
BTFSS INTCON,TMR0IF
GOTO $-1
BCF INTCON,TMR0IF
RETURN
DELAY1S
MOVLW .125
MOVWF NS
L2
CALL L1
DECFSZ NS, 1
GOTO L2
RETURN
Và khi cần em sử dụng lệnh CALL DELAY1S.
Mong các bác hỉ dùm em, em rất cần gấp.
L1
CLRF TMR0
MOVLW .132
MOVWF TMR0
BTFSS INTCON,TMR0IF
GOTO $-1
BCF INTCON,TMR0IF
RETURN
DELAY1S
MOVLW .125
MOVWF NS
L2
CALL L1
DECFSZ NS, 1
GOTO L2
RETURN
Và khi cần em sử dụng lệnh CALL DELAY1S.
Mong các bác hỉ dùm em, em rất cần gấp.
Comment