本帖最后由 牛牛特工 于 2009-8-8 20:46 编辑
这里使用TMR1门控中断 做触摸按键
如果代码写的有问题请指正 ch变量做为数组下标来访问数组
定义了数组 touchv[8]用于存储通道8-15的数值 然而在中断中 对touchv[ch]赋值无效果
并且数组数值发生异常变化 其内容未发现什么规律
用常数作为下标访问数组元素 如touchv[0] 可以看到修改数组元素 但仍会出现数组其他元素异常变化的情况
当使用8个独立变量来存储时 则数值读取均正常 unsigned int touch_value;
unsigned int ch;
static unsigned int touchv[8]; static unsigned int touchv1[8];
static unsigned int touch1,touch2,touch3,touch4,touch5,touch6,touch7,touch8;
void interrupt Touch_isr(void)
if(PIR1bits.TMR1GIF)
{
PIR1bits.TMR1GIF=0;
T1CONbits.TMR1ON=OFF;
touch_value=TMR1;
//独立变量访问
switch(ch)
{
case 0:touch1=touch_value;break;
case 1:touch2=touch_value;break;
case 2:touch3=touch_value;break;
case 3:touch4=touch_value;break;
case 4:touch5=touch_value;break;
case 5:touch6=touch_value;break;
case 6:touch7=touch_value;break;
case 7:touch8=touch_value;break;
default:break;
} //数组访问
touchv[ch]=touch_value; touchv1[ch]=touch_value;
ch++;
ch&=0x07;
CPSCON1bits.CPSCH=8+ch;//使用电容传感8-15通道
TMR1=0;
T1CONbits.TMR1ON=ON;
} } |