Trích:
Nguyên văn bởi olalamama
đang học con pic16f877a tới phần dùng lệnh timer 1
thầy viết cái chương trình như thế này( bỏ qua phần khai báo) với fosc=1mhz.
DELAY
MOVLW d'10'
MOVWF DEM
MOVLW b'00100000'
loop MOVLW 3CH
MOVWF TMR1 H
MOVLW AFH
MOVWF TMR1L
BSF T1CON,O
loop1 BTFSS PIR 1,0
go to loop1
BCF PIR1,0
goto loop
NOR
RETURN
ông thầy nói chương này này delay với t=0,5 giây
nhưng em nghĩ đây là chương trình timer1 đếm từ 5535 đến 65535(giới hạn của thanh ghí 16bit) nghĩa là timer1 đếm tới 60000 lần x vơi 10 lần của biến đếm là 600000 lần với tm=1micro s, thì Td phải bằng 0,6 s chứ. em hỏi thì ổng bảo hỏi vớ vẫn, về nhà đọc sách. anh em nào giải thích giùm xem tại sao Tdelay của chương trình này lại là 0,5s
|
TMR1H:TMR1L = 0x3CAF = 15535, chương trình sẽ tạo 10 lần thời gian trễ do Timer 1 đếm từ 15535 đến 65535. Với tần số thực thi lệnh (chứ không phải tần số dao động) là 1 MHz thì thời gian trễ là 10x(65535 - 135535) us = 500000 us = 0,5 s. Thầy của bạn nói đúng.
Cú pháp mô tả số hex và cú pháp lệnh BSF trong chương trình là không đúng.
Thân,