/ **************************************************适用于MSP430的**********************************键盘由CUGer设计-先生。卫程序可用,当系统时钟改变时,注意修改按键的防抖延时*********************************** ** *********************************************** / #include #define KEY_DIR P1DIR#定义KEY_OUT P1OUT#定义KEY_IN P1IN#定义KEY_IE P1IE#定义KEY_IES P1IES#定义KEY_IFG P1IFG / ***************全局变量********** ** *** / unsigned char Key_Val; //存储关键值void CtrlKey(unsigned char sw); //控制键盘开关// sw = 0关闭sw = 1开/ *********** ** **********************************函数名称:Init_Keypad功能:初始化扫描键盘IO端口参数:无返回值:无* ******************************************* / void Init_Keypad(void) {KEY_DIR = 0x0f; // P1。

0〜P1.3设置为输出状态,P1.4〜P1.7输入状态(上拉H)KEY_OUT&= 0xf0; // P1。 0〜P1.3输出为低电平(监护人)KEY_IES = 0xf0; // P1。 4〜P1 7下降沿触发中断KEY_IE = 0xf0; // P1。 4〜P1允许7个中断KEY_IFG = 0; //将中断标志清除为0 Key_Val = 16; //初始化键值可以将其设置为0〜15以外的值} / ********** ******************************** *****功能名称:Check_Key功能:扫描键盘的IO端口以获取键值参数:无返回值:无************************** ***************** **** / // p14 \ 5 \ 6 \ 7连接上拉电阻/ ************** **************** ********* key_Val对应的键值列:[p14] [p15] [p16] [p17]↓↓↓↓行:[p13]→0123 [p12]→4567 [p11]→891011 [p10 ]→12131415 ******************************* ******** / void Check_Key(void){unsigned char hang,lie,tmp1,tmp2; unsigned char keymap [] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); //设置键盘逻辑键之间的映射值和程序计算出的键值tmp1 = 0x08; for(hang = 0; hang

0〜P1。 3全部输出1 KEY_OUT-= tmp1; // P1。 0〜p1。 3四个输出位之一是0tmp1 >> = 1; if((KEY_IN&0xf0)0; tmp--);} / ****************** **************************函数名称:Key_Event功能:检测击键并获取键值参数:无返回值:无***** ********************************** ************ / void Key_Event(void){unsigned char tmp; KEY_OUT = 0; //将P1OUT设置为全0,等待按键输入tmp = KEY_IN; //获取p1INif((tmp&0xf0)

本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-345555-1.html
不满老天做安排
反正中国门口天天被侦查