关于MSP430F149的触摸按键的程序,求高手帮忙看看
[复制链接]
#include<msp430x14x.h> #define Pad1_OUT_L P1DIR|=BIT3;P1OUT&=~BIT3 //将Pad1置为低电平的宏定义 #define Pad1_DIR_IN P1DIR&=~BIT3 //将Pad1设置为输入状态的宏定义 #define Pad1_in (P1IN&BIT3) //读回Pad1电平的宏定义 #define Pad2_OUT_L P1DIR|=BIT1;P1OUT&=~BIT1 //将Pad2置为低电平的宏定义 #define Pad2_DIR_IN P1DIR&=~BIT1 //将Pad2设置为输入状态的宏定义 #define Pad2_in (P1IN&BIT1) //读回Pad2电平的宏定义 unsigned char Pad1_BUFF[5]; int Pad_1= 0 ; void TouchPad_Scan_Pad1() { int i,j,Count; _BIC_SR(SCG0); Pad1_OUT_L; _NOP(); Count = 0; Pad1_DIR_IN; while (Pad1_in == 0) Count ++; Pad1_BUFF[0] = Pad1_BUFF[1]; Pad1_BUFF[1] = Pad1_BUFF[2]; Pad1_BUFF[2] = Pad1_BUFF[3]; Pad1_BUFF[3] = Pad1_BUFF[4]; Pad1_BUFF[4] = Count; for (i=0;i<5;i++) { if (Pad1_BUFF<30) break; } for (j=0;j<5;j++) { if (Pad1_BUFF[j]>=30) break; } if (j == 4) Pad_1 = 0; else if (i == 4) Pad_1 = 1; } int Get_Pad1() { return Pad_1; }
__interrupt void BT_ISR(void) { int i; for (i=0;i<800;i++); TouchPad_Scan_Pad1(); __low_power_mode_off_on_exit(); } 这个是Touch.c的程序。 下面是主程序的主循环部分: while(1) { delay_0(50); if (Get_Pad1()) { m++ ; if (m == 0) Disp1Char(12,0,'0'); if (m == 1) Disp1Char(12,0,'1'); if (m == 2) Disp1Char(12,0,'2'); if (m == 3) Disp1Char(12,0,'3'); if (m == 4) Disp1Char(12,0,'4'); if (m == 5) Disp1Char(12,0,'5'); if (m == 6) Disp1Char(12,0,'6'); Delay5ms(); } else Disp1Char(12,0,'8'); } 运行该代码是就是直接显示6,触摸一次就显示8,怎么回事啊,求助啊~~~~~
|