完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
用定时器控制LED的闪烁间隔,慢流水时亮灭间隔0.5s,快流水时亮灭间隔0.2s,两个按键一个控制流水速度,一个控制流水方向,流水速度分快慢,流水方向分正负
自己写了个程序 #include unsigned char flag =0; unsigned char boom =0; unsigned char n =2; void main(void) { WDTCTL = WDTPW+WDTHOLD; P1DIR|=(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5);//P1.0-P1.5为输出方向 P8DIR|=(BIT1+BIT2); //P8.1-P8.2为输出方向 P1OUT &=~ (BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5); P8OUT &=~ (BIT1 + BIT2); P1DIR &=~ BIT7; P1REN |=BIT7; //使用上拉下拉电阻 P1OUT |=BIT7; //输出置1,使用上拉电阻,高电位 P1IE |=BIT7; //p1,7产生变化的时候允许中断 P1IES |=BIT7; //上升沿中断 P1IFG &=~ BIT7; //没有中断请求 __enable_interrupt(); P2DIR &=~ BIT2; P2REN |=BIT2; P2OUT |=BIT2; P2IE |=BIT2; P2IES |=BIT2; P2IFG &=~ BIT2; __enable_interrupt(); while(1){ TA0CCTL0=CCIE; //捕获比较器1开启CCIFG位中断 switch(flag) { case 0:TA0CCR0=16384;break; case 1:TA0CCR0=6654;break; default:break; } TA0CTL|=TASSEL_1+MC_1+TACLR; //选择SCLK32.768KHZ作为时钟,选用增模式,并开启中断 __enable_interrupt(); //开启总中断 __bis_SR_register(LPM0_bits + GIE); }; } #pragma vector=tiMER0_A0_VECTOR __interrupt void TimerA(void) { if(boom==0) { switch(n) { case 2:P1OUT=BIT0;break; case 3:P1OUT=0x00; P8OUT=BIT1;break; case 4:P1OUT=0x00; P8OUT=BIT2;break; case 5:P8OUT=0x00; P1OUT=BIT1;break; case 6:P1OUT=BIT2;break; case 7:P1OUT=BIT3;break; case 8:P1OUT=BIT4;break; case 9:P1OUT=BIT5;break; default:break; } } else { switch(n) { case 2:P8OUT=0x00; P1OUT=BIT5;break; case 3:P1OUT=BIT4;break; case 4:P1OUT=BIT3;break; case 5:P1OUT=BIT2;break; case 6:P8OUT=0x00; P1OUT=BIT1;break; case 7:P1OUT=0x00; P8OUT=BIT2;break; case 8:P1OUT=0x00; P8OUT=BIT1;break; case 9:P8OUT=0x00; P1OUT=BIT0;break; default:break; } } n++; if(n>9) { n=2; } } #pragma vector = PORT1_VECTOR __interrupt void PORT_1(void) { while((P1IE & 0x80)==0); if(flag == 1) flag =0; else flag =1; P1IFG &=~BIT7; } #pragma vector = PORT2_VECTOR __interrupt void PORT_2(void) { while((P2IE & 0x04)==0); if(boom==1) boom=0; else boom=1; P2IFG &=~BIT2; } 之后那个改变速度的s1键按键后无变化,改变方向的s2可以。 请问各位大神,哪里出错了,要怎么改啊..... |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
3031个成员聚集在这个小组
加入小组2923 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3594 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2341 浏览 1 评论
4800 浏览 1 评论
2573 浏览 1 评论
1327浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3600浏览 2评论
2928浏览 1评论
1510浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 13:03 , Processed in 1.216370 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号