Ðăng Nhập

View Full Version : Nạp cho 16f877a bằng GTP-USP, chạy không đúng như lập trình


now_nev
24-04-2008, 11:12 PM
Em mới học pic nên chưa có nh kinh nghiệm, mong các anh giúp em.
Em viết chương trình xuất led đơn giản như thế này
processor 16f877a
include <p16f877a.inc>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF
org 00h
goto main
main
count1 equ 20h
count2 equ 21h
count3 equ 22h
bsf STATUS, RP0
bcf STATUS, RP1
clrf TRISB
bcf STATUS, RP0
clrf PORTB
bsf PORTB, 7
call delay
loop
rrf PORTB, 1
call delay
goto loop
delay
movlw 0
movwf count1
movwf count2
movlw 5
movwf count3
loop_count1
decfsz count1, 1
goto loop_count1
loop_count2
decfsz count2, 1
goto loop_count1
loop_count3
decfsz count3, 1
goto loop_count1
Return
END

em đã thử chạy bằng MPLAB thì thấy chạy đúng, nhg khi nạp vô Pic thì nó chạy tùm lum hết. Hiện tượng là: khi đag sáng led 7, qua led 6 thì jống như là nó reset bắt đầu lại từ cái dòng " bsf PORTB, 7" vậy. Em MCLR thì lâu lâu hên hên nó qua đc led 5 :( rồi lại trở lại led 7
Cái này là tại con pic hay tại chương trình nạp vậy? Em đã verify sau khi nạp rồi, ok. Còn mạch thì đơn giản, nên chắc là sẽ không phải tại mạch rồi (em không dùng mạch in mà dùng breadboard)
Mong các anh giúp em.

namqn
24-04-2008, 11:36 PM
Cái điều bạn khẳng định chắc chắn có khi lại không chắc chắn đó ("Còn mạch thì đơn giản, nên chắc là sẽ không phải tại mạch rồi"). Bạn dùng thạch anh ngoài tần số bao nhiêu (vì bạn cấu hình dùng XT, nên tôi cho là bạn dùng thạch anh ngoài)?

Breadboard (đặc biệt là breadboard ở VN) được biết là dễ gây rắc rối cho các mạch dao động thạch anh ở dải tần số MHz. Dù mạch thử nghiệm có đơn giản đến đâu thì bạn cũng nên cho biết là bạn đã nối nó như thế nào. Người mới học thường mắc những lỗi cơ bản, mặc dù cái mạch nó chẳng có gì để mắc lỗi.

Bạn đã mô phỏng code thành công, cho thấy chương trình ít nhất phải chạy như thiết kế. Bạn đã chạy thử được một phần chương trình, cho thấy chương trình đã được nạp vào chip thành công. Như vậy, vấn đề còn lại là phần cứng thử nghiệm của bạn thôi.

Thân,

now_nev
24-04-2008, 11:58 PM
Em dùng thạch anh 4mhz, 2 tụ 33pf, nối như trong tài liệu của anh Nam đã hd. Cái breadboard nối với các led thì em đã làm từ trc để học mấy cái ic cơ bản. Chân MCRL thì em nối cũng như anh hướng dẫn nhưg em dùng 2 cái điện trở 1k (vì em chỉ có sẵn loại 1k thôi :D). Ah em có viết 1 chương trình khác đơn jản hơn là:

main
count1 equ 20h
count2 equ 21h
count3 equ 22h
bsf STATUS, RP0
bcf STATUS, RP1
clrf TRISB
bcf STATUS, RP0
clrf PORTB
bsf PORTB, 7
call delay
bsf PORTB, 6
call delay
bsf PORTB, 5
call delay
bsf PORTB, 4
call delay
bsf PORTB, 3
call delay
bsf PORTB, 2
call delay
bsf PORTB, 1
call delay
bsf PORTB, 0
call delay

thì nó chạy đúng. Nhưg cũng có lúc nó chạy sai, seset lại từ đầu khi chưa sáng hết các đèn. Em reset chip 10 lần thì khoảng 3 lần nó chạy sai như vậy, bó tay lun

now_nev
25-04-2008, 08:08 PM
sao ko ai trả lời giúp em hết vậy?

namqn
25-04-2008, 08:14 PM
sao ko ai trả lời giúp em hết vậy?
Mỗi người đều có công việc của mình mà bạn, có phải ai cũng rảnh rỗi suốt ngày ngồi chờ người khác hỏi để trả lời đâu.

Thạch anh có nhiều loại, không phải thạch anh 4 MHz nào cũng giống nhau. Giá trị tụ 33 pF là giá trị khuyến cáo để thử nghiệm, bạn có thể phải tăng hay giảm nó đôi chút. Bạn cũng có thể thử cấu hình HS thay vì XT, vì có một số thạch anh có mức công suất lái cao hơn số khác.

Thân,

now_nev
25-04-2008, 08:37 PM
cám ơn anh, em sẽ thử