完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
以下是我的程序 程序想要实现功能是, 1。在没有按下按键(没有进入外部中断前)没有灯亮。 2.当按键按下的时候,P2.0口控制的灯先亮一段时间后,P2.1口控制的灯开始闪烁。 3.当再次按下的时候P2.0口控制的灯熄灭,P2.1口控制的灯还是在闪烁(这种状态一直不变,变得只是每次按下按键后P2.0口控制的灯进行亮灭的操作)。 现在出现的问题是,1和2都能执行,但是到3时,按下按键程序就不运行了(一直保持按下按键的那个瞬间状态) #include #define uint unsigned int uint AA,flag=1,flag1=1; void delay(uint z) { uint x,y; for(x=100;x>0;x--) for(y=z;y>0;y--); } void main() { WDTCTL = WDTPW + WDTHOLD;//关狗 P1DIR = 0XFF;P1OUT = 0XFF;//初始化 P2DIR = 0XFF;P2OUT = 0XFF; P3DIR = 0XFF;P3OUT = 0XFF; P4DIR = 0XFF;P4OUT = 0XFF; P5DIR = 0XFF;P5OUT = 0XFF; P6DIR = 0XFF;P6OUT = 0XFF; P2DIR|=BIT0;//设置I/O为输出 P2DIR|=BIT1; P1IFG&=~BIT7;//清楚中断标志位 P1DIR&=~BIT7;//INPUT P1IES|=BIT7;//设置下降沿进入中断 P1IE|=BIT7;//打开p1.7外部中断使能 _EINT(); //开总中断 AA=0; while(1) { if(AA) { P1IE|=BIT7; P2OUT&=~BIT1;//主程序中p2.1控制小灯闪烁 delay(1000); P2OUT|=BIT1; delay(1000); } } } #pragma vector=PORT1_VECTOR __interrupt void PORT1_ISR(void) { if(P1IFG&BIT7) { if((flag==1)&(flag1==1)) { P1IFG&=~BIT7; P1IE&=~BIT7; P2OUT&=~BIT0;//p2.0控制小灯亮 delay(2000); AA=1; flag=0; } if((flag==0)&&(flag1==0)) { P1IFG&=~BIT7; P1IE&=~BIT7; P2OUT|=BIT0;//p2.0控制小灯灭 delay(2000); AA=1; flag=1; } flag1=~flag1; } } |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
2939个成员聚集在这个小组
加入小组2688 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3010 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2274 浏览 1 评论
4705 浏览 1 评论
2486 浏览 1 评论
956浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3011浏览 2评论
2688浏览 1评论
1085浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-4 10:20 , Processed in 1.209164 second(s), Total 58, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191