#pragma vector = PORT2_VECTOR __interrupt void P2_ISR(void) { uint16_t a; if(P2IFG & BIT1) //判断是否是P2.1产生的中断 { P2IFG &= ~BIT1; if((P2IN&BIT1)==0) { for(a=0;a<=1000;a++); //按键消抖 if((P2IN&BIT1) == 0) { m=125; } } } P2IFG &= ~BIT1; } #pragma vector = PORT1_VECTOR __interrupt void P1_ISR(void) { uint16_t a; if(P1IFG & BIT1) //判断是否是P1.1产生的中断 { P1IFG &= ~BIT1; if((P1IN&BIT1) == 0) { for(a=0;a<=1000;a++); //按键消抖 if((P1IN&BIT1) == 0) { m=500; } } } P1IFG &= ~BIT1; } void main (void) { Key_Init(); int i; int DUTY_CYCLE = 0; //Stop WDT WDT_A_hold(WDT_A_BASE); //P2.0 as PWM output GPIO_setAsPeripheralModuleFunctionOutputPin( GPIO_PORT_P2, GPIO_PIN0 );
时间: 2024-02-14 15:05:53 浏览: 67
C++ 中pragma once 与 #ifndef _XXX_H_ #define _XXX_H_的区别
5星 · 资源好评率100%
这段代码是在处理P2.1和P1.1按键的中断函数。具体地,当P2.1或P1.1按键被按下时,会触发对应的中断,并在中断服务函数中进行按键消抖操作,然后将一个全局变量m的值分别设置为125和500。在main函数中,会先调用Key_Init函数进行按键的初始化,然后停止看门狗定时器,并将P2.0口设置为PWM输出模式。
阅读全文