/ **************************************************适用于MSP430的**********************************键盘由CUGer设计-先生。 Wei程序可用,当系统时钟改变时,请注意修改按钮的防抖延时****************************** *** *********************************************** /#include#定义KEY_DIR P1DIR#定义KEY_OUT P1OUT#定义KEY_IN P1IN#定义KEY_IE P1IE#定义KEY_IES P1IES#定义KEY_IFG P1IFG / ***************全局变量********* *** *** / unsigned char Key_Val; //存储键值的空值CtrlKey(unsigned char sw); //控制键盘开关// sw = 0 off sw = 1 on / ********** *** **********************************函数名称:Init_Keypad功能:初始化扫描键盘的IO端口参数:无返回值:无* *********************************************** / void Init_Keypad (无效){KEY_DIR = 0x0f; // P1。
0〜P1.3设置为输出状态,P1.4〜P1.7输入状态(上拉H)KEY_OUT&= 0xf0; // P1。 0〜P1.3输出为低电平(Guardian)KEY_IES = 0xf0; // P1。 4〜P1 7下降沿触发中断KEY_IE = 0xf0; // P1。 4〜P1 7允许中断KEY_IFG = 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-345545-1.html
小王子
人家是公民
这砖家算是在宣传反动