// 用PIC16F630 内部晶振4MHz // 程式如下,检测键盘总是两个都检到,请高人指点 // MPLAB IDE V7.5 模拟仿真(没仿真器)
#include <pic.h> #include <pic16630.h>
#define _NOP() asm("nop") //------------------------------------------------------------------------------------------------- __CONFIG (INTOSCIO & WDTEN & PWRTEN & MCLREN & BOREN & CPROTECT & CPD & BGLOW); // 配置位定义
//------------------------------------------------------------------------------------------------- // 引脚定义 #define P_KeyRead1 RA1 #define P_KeyRead2 RA2
/*-----------------------------------------------------------------------------------------------*/ void ScanKey(void) { unsigned char i; unsigned char t_Key = 0x00;
//----------------------------------------------- // A1A2为输入
P_KeyRead1 = 1; P_KeyRead2 = 1;
for(i=0; i<40; i++) _NOP();
if(P_KeyRead1==0) // 程式运行此口为低 { t_Key = 0x01; } if(P_KeyRead2==0) // 程式运行此口为低 { t_Key = 0x02; } } /*-----------------------------------------------------------------------------------------------*/
void main(void) { GIE = 0; // 清总中断
RAPU = 0; // 上拉电阻使能 WPUA1 = 1; // 上拉弱电阻 WPUA2 = 1; // 上拉弱电阻
TRISA = 0x06; // A1A2为输入 TRISC = 0x00; PORTA = 0xFF; PORTC = 0xFF;
GIE = 1; // 开总中断
while(1) { ScanKey(); }
} 请问 在运行时P_KeyRead1,P_KeyRead2为什么一直为低。
烧写芯片后,在目标板上运行也是一样!
谢谢!
|