View Full Version : giải thích giùm tại sao với?
olalamama
10-04-2009, 06:44 PM
đ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
namqn
10-04-2009, 07:50 PM
đ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,
olalamama
10-04-2009, 08:38 PM
cảm ơn anh, em hiểu rồi. còn cái lệnh BSF sai chổ nào vậy anh( thầy em viết cũng sai luôn hả). cho em hỏi thêm. ở phần khai báo:
bcf status,6
bcf status,5
nghĩa là chọn bank o. nhưng trong chương trình delay thì lại có lệnh liên quan đến thanh OPTION_REG( thanh này ở bank 1 và 3), vậy có đúng không anh khi mà không cùng bank.
namqn
10-04-2009, 09:08 PM
cảm ơn anh, em hiểu rồi. còn cái lệnh BSF sai chổ nào vậy anh( thầy em viết cũng sai luôn hả). cho em hỏi thêm. ở phần khai báo:
bcf status,6
bcf status,5
nghĩa là chọn bank o. nhưng trong chương trình delay thì lại có lệnh liên quan đến thanh OPTION_REG( thanh này ở bank 1 và 3), vậy có đúng không anh khi mà không cùng bank.
Lệnh BSF T1CON, O của bạn (trong post #1) dùng chữ O chứ không phải số 0! Có lẽ thầy của bạn không viết sai, nhưng bạn chép lại thì sai.
Nếu truy xuất các thanh ghi khác bank thì tất nhiên bạn phải chuyển bank. Bạn đã không đưa ra code cụ thể, cho nên tôi chỉ khẳng định như vậy thôi.
Thân,
olalamama
12-04-2009, 09:19 AM
thanks anh, em cũng chưa biết chuyễn bank là gì, máy ông thầy trường cao thắng dạy như chơi ấy, vậy mà kêu 2 tháng nữa nộp cái đồ án trong khi mình chưa biết gì, nói cả lớp luôn thì đúng hơn. ai biết trang web nào có nhiều đề tai liên quan đến pic thì cho em để tham khảo nhé
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.