PDA

View Full Version : Help


thanh_nam1977
28-12-2009, 01:05 AM
Chương trình sau, viết nhằm xuất led ở port A ,theo dự kiến thì 4 led RA0,RA1, RA2,RA31 sáng, các led còn lại sẽ tắt.Nhưng thực tế chỉ có led RA6 sáng, còn lại đểu tắt hết.Nhờ mọi người giúp đỡ kiểm tra xem sai chỗ nào nhé:(Phần Coniguration bit đã cẩn thận bỏ mục Coniguration bit set in code và đặt off các tùy chọn trong setting rồi, đã dùng project tạo new project wizard và chọn đúng pic 16f877a, đã add file vào phần lkr, phần header file rồi, dùng mạch tét pickit2 của tuong minh)



processor 16f877a
include <p16f877a.inc>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _HS_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF
; khai báo “configuration bit”
ERRORLEVEL -302

ORG 0 ;
GOTO MAIN
ORG 5

MAIN BCF STATUS,RP0
BCF STATUS,RP1
CLRF PORTA
BSF STATUS,RP0
MOVLW 0xFF
MOVWF TRISA
BANKSEL PORTA
MOVLW 0X0F
MOVWF PORTA
END ;

bien_van_khat
28-12-2009, 08:29 AM
Chương trình sau, viết nhằm xuất led ở port A ,theo dự kiến thì 4 led RA0,RA1, RA2,RA31 sáng, các led còn lại sẽ tắt.Nhưng thực tế chỉ có led RA6 sang

Chắc có gì lẫn lộn, PORTA của 877A chỉ có 6 chân, từ A0-A5



processor 16f877a
include <p16f877a.inc>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _HS_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF
; khai báo “configuration bit”
ERRORLEVEL -302

ORG 0 ;
GOTO MAIN
ORG 5

MAIN BCF STATUS,RP0
BCF STATUS,RP1
CLRF PORTA
BSF STATUS,RP0
MOVLW 0xFF
MOVWF TRISA
BANKSEL PORTA
MOVLW 0X0F
MOVWF PORTA
END ;
Đoạn code của bạn gán TRISA = 0xff, tức là tất cả các chân trên PORTA là input, thì làm sao LED sáng được!

PORTA của PIC đồng thời là các chân analog input của ADC, mặc định khi khởi động các chân này là analog, bạn muốn xuất tín hiệu digital phải tắt chức năng analog này đi trong thanh ghi ADCON1

Ngoài ra chân RA4 khi output là OpenDrain khác với các chân IO còn lại!

nghia_tdh21
29-12-2009, 09:00 AM
Mình thấy khi thao tác với PORTA các bạn đều vướng mắc do không config cho PORTA ở thanh ghi ADCON1. Nếu chịu khó xem lại datasheet thì biết ngay. Riêng chân RA4 mình thử mô phỏng thấy dùng một điện trở kéo lên là được