- #include
- long int j=0;
- void main(void)
- {
- WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
- P1DIR |= 0x01;
- P1REN|=0x01; //可上可下拉P1.0
- P1OUT|=BIT0; //上拉P1.0
- P1IE|=BIT0; //设置可中断P1.0
- P1IES=0x00; //设置下降沿中断P1.0
- _EINT();
- for (;;)
- {
- volatile unsigned int i;
- P1OUT |= 0x01; // Toggle P1.0 using exclusive-OR
- // i = 500000; // Delay
- // do (i--);
- // while (i != 0);
- }
- }
- #pragma vector=PORT1_VECTOR //中断服务程序
- __interrupt void p1int(void)
- {
- j=j+1;
- P1IFG &= ~0x01;
- }
复制代码以上是我程序,我给P1.0一直输出高电平,P1.0连接到编码器的A脚,手动转动编码器使P1.0与GND时断时开,P1.0OUT产生下降沿
进中断,每进一次中断j++。 问题:程序执行过程中我转动编码器,程序不进中断,j一直不增加?请问进中断的判断条件是什么?是以实际电路中P1.0的电平高低为条件,还是以P1.0OUT寄存器中是0是1为条件?
此帖出自
小平头技术问答
一周热门 更多>