PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   MPASM (http://www.picvietnam.com/forum/forumdisplay.php?f=34)
-   -   Mong giúp đỡ (http://www.picvietnam.com/forum/showthread.php?t=1074)

atclub 21-04-2007 04:06 AM

Mong giúp đỡ
 
Em mới học pic và bắt đầu với con 16f877a, có làm bài test port B với code như sau:
processor 16f877a ; khai báo vi điều khiển
include <p16f877a.inc> ; header file dính kèm
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_ON & _CPD_OFF ; khai báo “configuration bit”

;---------------- Chuong trình chính ---------------------------

ORG 0x00
GOTO start
start
BCF STATUS,RP1
BSF STATUS,RP0 ; chọn BANK 1
CLRF TRISB ; khởii tạo PORTB - PORTB là cổng xuất dữ liệu
CLRF STATUS ; chọn BANK 0
MOVLW 0X00 ;
MOVWF PORTB ; PORTB = 0
loop
GOTO loop
END


Phần mềm dùng MPLab IDE 7.40, ấn CLTR F10 thì được file hex nhưng khi nạp vào Pic thì PortB vẫn ở mức 5v trong khi đó em làm bằng C để test port (dùng CCSC_3.249 ) thì lại được. Mạch test của em làm giống như bác ntc đã chỉ dẫn! Mong mọi người giúp đỡ.

atclub 21-04-2007 05:40 PM

Sau khi hỏi Bác Falleaf đã nhận đc câu trả lời:

" Sửa lại CLRF STATUS = BCF STATUS, RB0; chọn bank 0

Sửa 2 cái MOVLW..., MOVWF...
thành CLRF PORTB

Thử lại.

Bạn chuyển cái này lên diễn đàn nhé. Mình không trả lời riêng. "

Mong bác Falleaf thông cảm vì chờ mãi không thấy ai trả lời nên mạn phép hỏi riêng. Cám ơn bác nhiều!
__________________

atclub 21-04-2007 05:48 PM

Bác Falleaf ơi, em làm đúng như bác bảo nhưng vẫn không được, PortB xuất ra toàn 5V thôi, tại sao thế nhỉ? Hay tại phần mềm không đúng?

atclub 21-04-2007 06:00 PM

Lập trình theo đúng như Linhnc hướng dẫn ở trong CCS thì Test portB ngon lành thế nhưng khi làm ở MPLab IDE 7.40 như bài trên đã viết và sửa lại theo đúng như bác Falleaf bảo lại không được, mong mọi người giúp đỡ với!!

Code:

#include <16f877a.h>
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,
NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
void main()
{
// Thiet lap che do cho PORTB
TRISB = 0x00; // Tat ca PORTB deu la cong xuat du lieu
PORTB = 0xFF; // Tat het cac LED
While(1)
{
PORTB = 0; // Cho các LED sáng
delay_ms(250); // Tạo thời gian trễ 250ms
PORTB = 0xFF;
delay_ms(250);
}
}


namqn 21-04-2007 07:01 PM

Code trong MPLAB của bạn bật LVP, còn code trong CCS C thì tắt LVP. Bạn sửa lại code trong MPLAB cho giống code bên CCS C rồi thử lại xem. Ngoài ra, nếu bạn dùng thạch anh tốc độ tương đối cao (>= 8 MHz) thì nên chỉnh _XT_OSC thành _HS_OSC bên phần code trong MPLAB.

Thân,

atclub 21-04-2007 07:13 PM

Đã thử lại như bác Namqn chỉ dẫn và đã thành công; cám ơn bác nhiều nha!

namqn: sau này bạn có thể dùng nút 'Cảm ơn'.


Múi giờ GMT. Hiện tại là 02:59 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