首页资源分类嵌入式开发单片机 > 用按键中断控制LED,可按照此案例自行更改

用按键中断控制LED,可按照此案例自行更改

已有 460221个资源

下载专区


TI最新应用解决方案

工业电子 汽车电子 个人消费电子

上传者其他资源

文档信息举报收藏

标    签: keyled中断

分    享:

文档简介

用按键中断控制LED,可按照此案例自行更改

文档预览

#include void Clkinit(); void io_init(); void delay(); void main() { WDTCTL = WDTPW + WDTHOLD; //关闭看门狗 Clkinit(); io_init(); while(1) { } } void io_init() { P1DIR=0x00; P1OUT |= BIT0+BIT1+BIT2+BIT3; //将电阻设置为上拉 P1IES |= BIT0+BIT1+BIT2+BIT3; // P1.2....设为下降沿中断 P1IE |= BIT0+BIT1+BIT2+BIT3; // 允许P1.2..中断 P1IFG=0x00; //中断标志位清零 P2SEL=0x00; P2DIR=0xFF; P2OUT=0xFF; } void Clkinit() { char i; BCSCTL1 &= ~XT2OFF; //打开XT2振荡器 IFG1&=~OFIFG; //清除振荡错误标志 while((IFG1&OFIFG)!=0) { for(i=0;i<0xff;i++); IFG1&=~OFIFG; //清除振荡错误标志 } BCSCTL2 |= SELM_2+SELS+DIVS_3; //MCLK为8MHz,SMCLK为1MHz _EINT(); } void delay(int a) { while(a--); } #pragma vector=PORT1_VECTOR __interrupt void Port1() { if((P1IFG&BIT0) == BIT0) { //处理P1IN.0中断 P1IFG &= ~BIT0; //清除中断标志 P2OUT&=~BIT6+BIT7; delay(3000); P2OUT=0xFF;} else if((P1IFG&BIT1) ==BIT1) { //处理P1IN.1中断 P1IFG &= ~BIT1; //清除中断标志 P2OUT&=~BIT4+BIT5; delay(3000); P2OUT=0xFF; } else if((P1IFG&BIT2) ==BIT2) { //处理P1IN.3中断 P1IFG &= ~BIT2; //清除中断标志 P2OUT&=~BIT2+BIT3; delay(3000); P2OUT=0xFF;} else if((P1IFG&BIT3) ==BIT3) { //处理P1IN.4中断 P1IFG &= ~BIT3; //清除中断标志 P2OUT&=~BIT0+BIT1; delay(3000); P2OUT=0xFF;} }

Top_arrow
回到顶部
EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。