PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Những câu hỏi thường gặp (http://www.picvietnam.com/forum/forumdisplay.php?f=54)
-   -   Lỗi cài đặt bộ dao động (http://www.picvietnam.com/forum/showthread.php?t=646)

anhquangngai 01-10-2006 06:17 PM

Lỗi cài đặt bộ dao động
 
1 Attachment(s)
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
Code:

                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:
Trích:

__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

Trích:

Nguyên văn bởi anhquangngai (Post 5407)
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

Trích:

Nguyên văn bởi namqn (Post 5191)
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

Trích:

Nguyên văn bởi anhquangngai (Post 5641)
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

Trích:

Nguyên văn bởi namqn (Post 5648)
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

Trích:

Nguyên văn bởi anhquangngai (Post 5680)
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


Múi giờ GMT. Hiện tại là 10:48 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam