Xin chào mọi người tình hình mình đang làm cái bàn phím quét ma trận 4x4 dùng MSP430 mà viêt chương trình của mình biên dịch không lỗi nhưng nạp xuông thì không chạy.Mình tìm mãi không thấy lỗi mong mọi người giúp đỡ . Bàn phím được kết nối với port1 nếu phím số 7 được nhấn thì xuất port2 mức 1 còn phím số 8 được nhấn thì xuất port2 mức 0.
#include <msp430g2553.h>
int key_code,col,row,key_cur_state;
void check_key();
#define KEY4X4_PORT P1OUT
#define KEY4X4_PIN P1IN
#define KEY4X4_P1DIR P1DIR
unsigned char KeyPad[4][4] = {
'7', '8', '9', '/',
'4', '5', '6', 'x',
'1', '2', '3', '-',
'C', '0', '=', '+'};
unsigned char key_old_state[4][4];
//
main(void)
{
WDTCTL = WDTPW + WDTHOLD;
// ----------------- Input/Output Ports initialization ---------------
KEY4X4_PORT = 0xFF; // Pull-up R
KEY4X4_P1DIR = 0x0F; // 4 row -> output, 4 col -> input
while (1)
{
check_key();
if (key_code==7)
{
P2OUT=0xff;
}
if (key_code==8)
{
P2OUT=0x00;
}
}
}
//------------------------------------------------------------------------------//
void check_key()
{
for ( row=0; row<4; row++)
{
KEY4X4_PORT = (1<<row); //select row
for (col=0; col<4; col++)
{
key_cur_state = (KEY4X4_PIN>>col+4) & 1;
if (key_cur_state && (!key_old_state[row][col]))
{
key_code = KeyPad[row][col];
}
key_old_state[row][col] = key_cur_state;
}
}
}
//------------------------------------------------------------------------------
#include <msp430g2553.h>
int key_code,col,row,key_cur_state;
void check_key();
#define KEY4X4_PORT P1OUT
#define KEY4X4_PIN P1IN
#define KEY4X4_P1DIR P1DIR
unsigned char KeyPad[4][4] = {
'7', '8', '9', '/',
'4', '5', '6', 'x',
'1', '2', '3', '-',
'C', '0', '=', '+'};
unsigned char key_old_state[4][4];
//
main(void)
{
WDTCTL = WDTPW + WDTHOLD;
// ----------------- Input/Output Ports initialization ---------------
KEY4X4_PORT = 0xFF; // Pull-up R
KEY4X4_P1DIR = 0x0F; // 4 row -> output, 4 col -> input
while (1)
{
check_key();
if (key_code==7)
{
P2OUT=0xff;
}
if (key_code==8)
{
P2OUT=0x00;
}
}
}
//------------------------------------------------------------------------------//
void check_key()
{
for ( row=0; row<4; row++)
{
KEY4X4_PORT = (1<<row); //select row
for (col=0; col<4; col++)
{
key_cur_state = (KEY4X4_PIN>>col+4) & 1;
if (key_cur_state && (!key_old_state[row][col]))
{
key_code = KeyPad[row][col];
}
key_old_state[row][col] = key_cur_state;
}
}
}
//------------------------------------------------------------------------------
Comment