PDA

View Full Version : Lỗi cài đặt bộ dao động


anhquangngai
01-10-2006, 06:17 PM
em viết chương trình xoay trái led ở PORTB nhưng mà sao nó ko chạy!
Em ko tìm ra lỗi ở đâu, các anh giúp em với
Chương trình của em

title "leddichtutraiquaphai_Port_B.asm"
processor p16f877a
include <P16f877a.inc>
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC & _XT_OSC
;================================================= ========================
; Chuong trinh chinh
;================================================= ========================
count1 equ 0x20
counta equ 0x22
countb equ 0x23
org 0x000
;-------------------------------------------------------------
;khoi tao Port B
;------------------------------------------------------------
banksel TRISB
clrf TRISB
banksel PORTB
movlw b'00000001'
movwf PORTB
loop call delay100ms;
rlf PORTB,1
goto loop

;-----------------------------------------------------------------
;chuong trinh delay
;-----------------------------------------------------------------
delay100ms ; chuong trình con delay 100 ms
MOVLW d'100'
MOVWF count1
d1
MOVLW 0xC7
MOVWF counta
MOVLW 0x01
MOVWF countb
delay_0
DECFSZ counta,1
GOTO $+2
DECFSZ countb,1
GOTO delay_0
DECFSZ count1,1
GOTO d1
RETURN
;----------------------------------------------------------------
end

namqn
01-10-2006, 07:17 PM
Chương trình có lỗi ở dòng này:
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC & _XT_OSC
Nếu có _HS_OSC & _XT_OSC (b'10' AND với b'01') thì kết quả sẽ là _LP_OSC (b'00').
Chỉ cần có _HS_OSC hay _XT_OSC thôi.

Thân,

anhquangngai
03-10-2006, 08:29 PM
cảm ơn anh NAM để em về thử lại xem sao!

F << Bạn nhớ bấm vào nút cảm ơn, không viết thêm một bài mà chỉ có dòng cảm ơn.

anhquangngai
05-10-2006, 03:01 PM
anh Nam ơi chương trình của em sau khi sửa lại như anh hướng dẫn nhưng nó vẫn ko chạy !??
anh Nam hay bác F co thể giúp em đc ko vậy?
Em ko biết nó bị lỗi ở đâu hết!

Jerry
05-10-2006, 03:48 PM
Thế nó báo lỗi thế nào hả bác???

anhquangngai
11-10-2006, 10:22 PM
vấn đề ở đây là biên dịch nó vẫn tốt nhưng khi mô phỏng thì chỉ có con Lwed đầu tiên là RB0 chớp một cái rồi nó tắt ngúm luôn
Mong các bác giúp em với
bởi vì chương trình này là nền để em viết chương trình quét Led 7 đoạn
Xin càm ơn các bác trước!

thaithienanh
11-10-2006, 10:29 PM
chương trình mô phỏng của bạn có vấn đề rồi mình đã tét bằng proteus 6.9 và thấy chạy rất tốt chẳng có lỗi gì cả

MHz
12-10-2006, 07:43 PM
vấn đề ở đây là biên dịch nó vẫn tốt nhưng khi mô phỏng thì chỉ có con Lwed đầu tiên là RB0 chớp một cái rồi nó tắt ngúm luôn Mong các bác giúp em với
bởi vì chương trình này là nền để em viết chương trình quét Led 7 đoạn
Xin càm ơn các bác trước!

Lỗi này là do bác nối trực tiếp các LED vào port RB mà không dùng điện trở hạn dòng, bác nên dùng điện trở có giá trị khoảng 220 Ohm nối tiếp với LED (mỗi LED một điện trở) thì sẽ thấy kết quả ngay thui mà... :D

anhquangngai
19-10-2006, 08:37 PM
Chương trình có lỗi ở dòng này:

Nếu có _HS_OSC & _XT_OSC (b'10' AND với b'01') thì kết quả sẽ là _LP_OSC (b'00').
Chỉ cần có _HS_OSC hay _XT_OSC thôi.

Thân,

Nếu như em dùng bộ dao động nội và thạnh anh 4MHz nối với chân OSC1 và OSC2 thì phải config là _HS_OSC hay _XT_OSC ??

thaithienanh
19-10-2006, 10:14 PM
nếu mình gắn thạch anh bên ngoài thì là _XT_OSC
còn nếu không gắn thạch anh mà sử dụng dao động nội thì là _HS_OSC
chỉ chọn lựa 1 trong 2 cái chứ không sử dụng đồng thời được

namqn: Em đọc post bên dưới của anh.

namqn
19-10-2006, 10:29 PM
Nếu như em dùng bộ dao động nội và thạnh anh 4MHz nối với chân OSC1 và OSC2 thì phải config là _HS_OSC hay _XT_OSC ??
PIC16F877A không có bộ dao động nội (theo nghĩa là không cần gắn thêm gì vào các chân OSC1 và/hay OSC2 mà chip vẫn có xung clock). Với thạch anh 4 MHz thì nên dùng _XT_OSC (mặc dù dùng _HS_OSC cũng vẫn ok).

Thân,

anhquangngai
21-10-2006, 11:25 PM
PIC16F877A không có bộ dao động nội (theo nghĩa là không cần gắn thêm gì vào các chân OSC1 và/hay OSC2 mà chip vẫn có xung clock). Với thạch anh 4 MHz thì nên dùng _XT_OSC (mặc dù dùng _HS_OSC cũng vẫn ok).

Thân,

như vậy là gắn hai chân của thạch anh với chân OSC1 và OSC2 là dc phải ko?
nếu như vậy thì dùng _XT_OSC hay là _HS_OSC?

namqn
22-10-2006, 02:11 AM
như vậy là gắn hai chân của thạch anh với chân OSC1 và OSC2 là dc phải ko?
nếu như vậy thì dùng _XT_OSC hay là _HS_OSC?
Nối hai chân thạch anh vào các chân OSC1 và OSC2, giữa chân OSC1 và GND có một tụ khoảng 22pF đến 33pF, giữa chân OSC2 và GND cũng vậy.

_XT_OSC hay là _HS_OSC đều được, nhưng không chọn cả hai.

Thân,

anhquangngai
02-11-2006, 08:00 PM
Kinh nghiệm rút ra sau khi bị lỗi về phần dao động:
- Nếu dao động <4MHz thì là _RC_OSC
- Nếu dao động >=4MHz va < 8MHZ thì là _XT_OSC
- Nếu dao động >=8MHz va < 20MHZ thì là _HS_OSC