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