完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
请教最初级问题,有时间的朋友请指点一下
//实验目的:学习P1口的中断 //实验硬件:P2口接8个LED,P2OUT低电平LED亮,P1.0-P1.4上面通过上拉电阻接VCC,下面通过按键开关接地 //实验现象:开机,P2口的8个LED一起闪烁3次,之后常亮 // 按一下P1.0-P1.4中任意键引起中断,中断内容为:LED四亮四灭 //实验问题:欲按键P1.0-P1.4中任意键引起中断,使得P2口的LED由全亮变为四亮四灭 // 但是实际情况是按P1.0-P1.4中任意键都会重新启动,或者和按复位键现象一样,并不会进入中断,使得P2口的LED四亮四灭 #include void Clock_Init(); void delay(); void main(void) { WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 P2DIR = 0xFF; //设置P2口为输出状态; P2OUT = 0x00; //P2口为0,所有LED亮; Clock_Init(); //P1IES |= 0x0F; // 下降沿中断 P1IE |= 0x0F; // 打开中断 _EINT(); //打开全局中断 P2OUT = 0xFF; delay(2500); P2OUT = 0x00; delay(2500); P2OUT = 0xFF; delay(2500); P2OUT = 0x00; delay(2500); P2OUT = 0xFF; delay(2500); P2OUT = 0x00; delay(2500); while(1) { P1IE |= 0x0F; // 打开中断 } } //------------------------------------------------------------------ // 系统时钟初始化 // 设置MCLK为8MHZ,SMCLK为8MHZ,三个时钟都不分频 void Clock_Init() { unsigned char i; BCSCTL1&=~XT2OFF; BCSCTL2|=SELM1+SELS; do{ IFG1&=~OFIFG; for(i=0;i<100;i++) _NOP(); } while((IFG1&OFIFG)!=0); } //------------------------------------------------------------------ //中断函数 #pragma vector=PORT1_VECTOR __interrupt void PORT1_ISR(void) { P1IE = 0; // 关闭中断 P1IFG = 0; P2OUT = 0xf0; } //------------------------------------------------------------------ //延时函数 void delay(unsigned int xms) // xms代表需要延时的毫秒数 { unsigned int x,y; for(x=xms;x>0;x--) for(y=110;y>0;y--); } |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
3008个成员聚集在这个小组
加入小组2834 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3390 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2319 浏览 1 评论
4775 浏览 1 评论
2552 浏览 1 评论
1289浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3395浏览 2评论
2842浏览 1评论
1439浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-5 18:27 , Processed in 1.246521 second(s), Total 49, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号