View Single Post
Old 04-08-2010, 10:15 PM   #1
headman8x
Nhập môn đệ tử
 
Tham gia ngày: May 2010
Bài gửi: 6
:
Post <<Quét Ma Trận Bàn Phím >>

Chào các Bạn mình đang làm bài tập quét phím ma trận nhưng có 1 vấn đề mình chưa rõ nên đăng bài xin hỏi ý kiến các bạn. Mình xin chân thành cảm ơn!
Các bạn cho mình hỏi :

+ khi mình đặt ngõ vào và ngõ ra: ví dụ: TRISB=0X0F ;
mục đich là SET các chân: --> RB0, RB1,RB2,RB3 là các chân nhận giữ liệu ( Ngõ vào)
:--> RB4,RB5,RB6,RB7 là các chân xuất dữ liệu (ngõ ra)

khi đó thì mình có thể dùng các lệnh: output_high(pin); và output_low(pin) trên các ngõ vào không. Hay là chỉ được sử dụng input_state(pin) thôi !

Bài của minh như thế này các bạn xem hộ nhé! xem mình chưa đúng chỗ nào với??


void quet_phim() // THỰC HIỆN QUÉT MA TRẬN PHÍM THEO CỘT
{

// input_state(pin_b0);
output_high(PIN_B0); // THIET LAP COT_1 LAM NGO VAO MUC CAO
output_high(PIN_B1); //.......
//input_state(pin_b1); // THIET LAP CHAN VOI NGO VAO
output_high(PIN_B2); //.......
// input_state(pin_b2);
output_high(PIN_B3);
// input_state(pin_b3);
output_low (PIN_B4); // THIET LAP HANG_1 LAM NGO RA
output_low (PIN_B5); //.......
output_low (PIN_B6); //.......
output_low (PIN_B7);
if((!RB0)|(!RB1)|(!RB2)|(!RB3)) // KIEM TRA COT NAO DUOC NHAN
{
delay_ms(10); // CHONG RUNG PHIM
if(RB0==0) // KIEM TRA COT_1 DUOC NHAN PHIM
{
output_low (PIN_B0);
delay_ms(10);
// Bây giờ thiết lập các hàng là ngõ vào để kiểm tra
output_high(PIN_B4);
output_high(PIN_B5);
output_high(PIN_B6);
output_high(PIN_B7);

if(RB4==0) // hàng một được nhận phím bấm
{num=1;delay_ms(10);}
if(!RB5)
{num=2;delay_ms(10);}
if (!RB6)
{num=3;delay_ms(10);}
if (!RB7)
{num=4;delay_ms(10);}
}
if(RB1==0)
{

và quét lần lượt 4 cột !
headman8x vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn