430 4*4键盘程序

#include <msp430x44x.h> #define uchar unsigned char #define uint unsigned int uchar disp[] = {0x12, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}; unsigned char keyscan(void) //此程序键盘为4 行*3 列,12 个按键 { unsigned char x=0xff; P1DIR=0X0F; P1OUT=0X01; //扫描第一行 if((P1IN&0Xf0)==0X10) //如果第一行、第一根列线上有键按下,则键值为0 x = 0; else if((P1IN&0Xf0)==0X20) //如果第一行、第二根列线上有键按下,则键值为1 x = 1; else if((P1IN&0Xf0)==0x40) // 如果第一行、第三根列线上有键按 x = 2; //下,则键值为2 else if((P1IN&0Xf0)==0x80) // 如果第一行、第三根列线上有键按 x = 3; else { P1OUT=0X02; //扫描第二行 if((P1IN&0Xf0)==0X10) //如果第二行、第一根列线上有键按下,则键值为3 x = 4; else if((P1IN&0Xf0)==0X20) //如果第二行、第二根列线上有键按 x = 5; //下,则键值为4else else if((P1IN&0Xf0)==0x40) //如果第二行、第三根列线上有键按 x = 6; //下,则键值为5 else if((P1IN&0Xf0)==0x80) //如果第二行、第三根列线上有键按 x = 7; //下,则键值为5 else { P1OUT=0X04; //扫描第三行,以下与上相同 if((P1IN&0Xf0)==0X10) x=8; else if((P1IN&0Xf0)==0X20) x=9; else if((P1IN&0Xf0)==0x40) x=10; else if((P1IN&0Xf0)==0x80) x=11; else { P1OUT=0x08; //扫描第四行 if((P1IN&0Xf0)==0X10) x=12; else if((P1IN&0Xf0)==0X20) x=13; else if((P1IN&0Xf0)==0x40) x=14; else if((P1IN&0Xf0)==0x80) x=15; } } } return(x); } void main() { WDTCTL = WDTPW + WDTHOLD; P1DIR = 0x0f; P3DIR = 0xff; while(1) { P3OUT = keyscan(); } }

主部是抄的一个4*3的键盘扫描程序,改过后成4*4的键盘扫描程序

你可能感兴趣的:(include,FP)