PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) (http://www.picvietnam.com/forum/forumdisplay.php?f=12)
-   -   HT PIC ,Xem giúp em chương trình quét phím!!! (http://www.picvietnam.com/forum/showthread.php?t=7656)

delta21 02-01-2011 11:07 AM

HT PIC ,Xem giúp em chương trình quét phím!!!
 
1 Attachment(s)
em mắc 4 nút nhấn vào port B,4 led vào port d.Khi chạy thì led ở vị trí RD3 cứ nhấp nháy,mà sao em thấy có 3 nút là dùng dc,nút còn lại thì ko có tác dụng!!!!
không biết chương trình em sai ở đâu nhỉ
Trích:

#include<htc.h>
__CONFIG(EXTIO & WDTDIS & PWRTEN &
MCLREN & UNPROTECT & DUNPROTECT & BORDIS &
IESODIS & FCMDIS & LVPDIS & HS);
void init()
{
ANSEL=ANSELH=0;
WPUB=1;
RBPU=0;
TRISB=1;
TRISD=0;
}
void main()
{
init();
while(1)
{
if (RB0==0)
{
_delay(10000);
RD0^=1;
}
if (RB1==0)
{
_delay(10000);
RD1^=1;
}
if (RB2==0)
{
_delay(10000);
RD2^=1;
}
if (RB3==0)
{
_delay(10000);
RD3^=1;
}
}

}



delta21 03-01-2011 09:32 AM

hic!!!em biết mình sai chỗ nào rồi,doạn này đây ạ!!!phải ghi rõ từng bit cụ thế,các bác xem có đúng không!!!
Trích:

WPUB0=1;
WPUB1=1;
WPUB2=1;
WPUB3=1;
RBPU=0;
TRISB0=1;
TRISB1=1;
TRISB2=1;
TRISB3=1;
TRISD=0;

Hieu98DT 06-01-2011 02:26 PM

Trích:

Nguyên văn bởi delta21 (Post 41249)
hic!!!em biết mình sai chỗ nào rồi,doạn này đây ạ!!!phải ghi rõ từng bit cụ thế,các bác xem có đúng không!!!

Bạn có tài liệu HT Pic tiếng việt ko cho minh xin để tham khảo được ko bạn

delta21 06-01-2011 07:38 PM

Trích:

Nguyên văn bởi hieu98dt (Post 41321)
bạn có tài liệu ht pic tiếng việt ko cho minh xin để tham khảo được ko bạn

mình không có bạn ạ,đọc help của ht pic thôi

dinhminh09 07-01-2011 04:22 PM

mà sao ht pic mình cài nó không có phần help bạn à. có bản setup có phần help không cho mình với.............

delta21 07-01-2011 09:45 PM

Trích:

Nguyên văn bởi dinhminh09 (Post 41356)
mà sao ht pic mình cài nó không có phần help bạn à. có bản setup có phần help không cho mình với.............

mình dùng MPlab bạn ạ!!có file PDF user manual đấy,bạn tìm xem.vào MPlab nhấn F11 là nó ra

nhuhuan86 07-01-2011 11:47 PM

Trích:

Nguyên văn bởi delta21 (Post 41227)
em mắc 4 nút nhấn vào port B,4 led vào port d.Khi chạy thì led ở vị trí RD3 cứ nhấp nháy,mà sao em thấy có 3 nút là dùng dc,nút còn lại thì ko có tác dụng!!!!
không biết chương trình em sai ở đâu nhỉ

Cậu cần nói rõ nút ở chân nào ko dc?
- cậu xem lại phần config giùm: mình chưa hiểu cấu hình EXTIO là cấu hình gì cả??
- Hình như trong phần ADC,cậu cấu hình thiếu 1 thanh ghi ADON
Mình chỉ góp ý dc như vậy.Có gì chưa đúng xin dc chỉ giáo

Thân

delta21 08-01-2011 01:17 AM

Trích:

Nguyên văn bởi nhuhuan86 (Post 41368)
Cậu cần nói rõ nút ở chân nào ko dc?
- cậu xem lại phần config giùm: mình chưa hiểu cấu hình EXTIO là cấu hình gì cả??
- Hình như trong phần ADC,cậu cấu hình thiếu 1 thanh ghi ADON
Mình chỉ góp ý dc như vậy.Có gì chưa đúng xin dc chỉ giáo

Thân

chân cẳng mình nối như trên hình!!!

EXTIO :External RC No Clock ,chọn thạch anh ngoài.....
bạn có thể tham khảo thêm trong file pic6f887.h trong thư mục của HTC
phần ADC mình cấu hình cho ANSEL =ANSELH=0 rồi,như vậy mình ko chọn ngõ vào là analog nữa nên ko cần cấu hình ADON

mình chỉ thắc mắc là tại sao khi cấu hình Port B thì phải ghi rõ từng bit cụ thể thôi.....
//HT pic ít người dùng quá!!!

duyphuoc 08-01-2011 08:57 AM

Theo mình thì để dùng thạch anh ngoài tầng số cao mình chỉ cần khai báo HS là đủ, tại các này mình đã từng test trên Kit rồi.
Bạn không cần phải ghi ra từng bit khi cấu hình Port B. Bạn có thể làm thế này:
TRISB = 0x0F;
PORTD = 0;
TRISD = 0xF0;
RBPU = 0;
WPUB = 0x0F;

Với lại bạn cần phải chống dội cho các phím nhấn. Thân!

delta21 08-01-2011 11:43 PM

Trích:

Nguyên văn bởi duyphuoc (Post 41371)
Theo mình thì để dùng thạch anh ngoài tầng số cao mình chỉ cần khai báo HS là đủ, tại các này mình đã từng test trên Kit rồi.
Bạn không cần phải ghi ra từng bit khi cấu hình Port B. Bạn có thể làm thế này:
TRISB = 0x0F;
PORTD = 0;
TRISD = 0xF0;
RBPU = 0;
WPUB = 0x0F;

Với lại bạn cần phải chống dội cho các phím nhấn. Thân!

ủa,mình tưởng chống dội bằng hàm _delay(10000) là đủ,bạn nói rõ hơn chút dc không??

dinhminh09 09-01-2011 03:37 PM

cái code mình chưa xem như thây cách mắc mấy cái nút nhấn nó không nhảy từa lưa mới lạ.
bạn cần mắc cho rõ ràng. lúc nào là mức không lúc nào là mức 1. chứ để như vậy nó không hiểu là mức 0 hay mức 1 rõ ràng. nên nó muống hiểu thế nào thì hiểu. ví dụ khi bạn nhấn nút nó hiểu là mức 0. nhưng khi bạn thả nút nhấn ra thì nó không hiểu là đang ở mức nào.
thân

duyphuoc 09-01-2011 07:07 PM

Cậu này không xem code nên không biết rồi, bạn ý đã set R pullup rồi mà, nên khi thả nút thì nó hiểu là mức 1 thôi, hiển nhiên.
Tiện thể về vấn đề chống dội phím của delta để hôm nào rảnh mình sẽ giải thích rõ rang với bạn nhé. Hiện giờ mình đang bận thi nên không thể trả lời lúc này được, bạn thông cảm.
Ah, việc dùng delay để chống dội như bạn cũng là một cách nhưng nó khồng tối ưu và sẽ gặp vấn đề nếu bạn sử dụng trong các trường hợp khác. Bạn có thể tìm thêm thông tin trên forum. Thân!

delta21 09-01-2011 08:15 PM

Trích:

Nguyên văn bởi duyphuoc (Post 41408)
Cậu này không xem code nên không biết rồi, bạn ý đã set R pullup rồi mà, nên khi thả nút thì nó hiểu là mức 1 thôi, hiển nhiên.
Tiện thể về vấn đề chống dội phím của delta để hôm nào rảnh mình sẽ giải thích rõ rang với bạn nhé. Hiện giờ mình đang bận thi nên không thể trả lời lúc này được, bạn thông cảm.
Ah, việc dùng delay để chống dội như bạn cũng là một cách nhưng nó khồng tối ưu và sẽ gặp vấn đề nếu bạn sử dụng trong các trường hợp khác. Bạn có thể tìm thêm thông tin trên forum. Thân!

bạn giúp mình nhé!!!!,hiện tại mình đang làm về phần nút bấm này,số nút lên tới 16,mà chưa biết chống dội sao cho hiệu quả

tungbachnam 09-01-2011 08:49 PM

Bạn có thể dùng phần cứng dùng tụ 104 nối tiếp trở 10k để chông dội phím nhấn.

delta21 10-01-2011 12:00 AM

Trích:

Nguyên văn bởi tungbachnam (Post 41411)
Bạn có thể dùng phần cứng dùng tụ 104 nối tiếp trở 10k để chông dội phím nhấn.

cảm ơn bạn,mình làm dc rồi....trước dùng 8051 toàn làm delay như trên.phần chống dội của mình thế này nè
Code:

scan:
                if(RB0==0)
                {
                        _delay(10000);
                                if(RB0==0)
                                        RC0^=1;
                                else goto scan;
                while(RB0==0) //cho nha phim
                {}
                _delay(10000);



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