完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
利用看门狗中断,实现小灯闪烁,但是小灯居然没动静,哎,苦逼了
#include #define uchar unsigned char#define uint unsigned int uchar temp = 0; void main(){ WDTCTL=WDTPW+WDTHOLD; BCSCTL1 |= XTS; do { IFG1 &= ~OFIFG; for(uchar temp=0xFF;temp>0;temp--); } while((IFG1&OFIFG)!=0); WDTCTL = WDT_ADLY_1000; IE1 |= WDtiE; P2DIR = 0xFF; P2OUT = temp; _EINT(); while(1) { LPM3; _NOP(); } } #pragma vector = WDT_VECTOR__interrupt void watchdog(){ temp = ~temp; P2OUT = temp;} |
|
相关推荐
6个回答
|
|
帮顶,呵呵。
|
|
|
|
原子啊,你这坏银,你就不能伸手帮下么
|
|
|
|
我觉得你在对P2OUT状态取反时不要用你上面写的那种形式,可以这样写:P2OUT ^= 0XFF;因为你在这用到temp变量,而在之前判断标志位时又用temp变量,所以,你可以试试上述的办法......
|
|
|
|
|
|
|
|
还有 非常喜欢你的  2OUT ^= 0XFF;风格,你所说的temp 问题 我也听懂了,其实是这样的,main中的temp是局部变量 不能在中断函数中使用
而我之后的一来就定义了一个全局的temp 那也就是在中断中使用的temp 于是我还是把程序按你说的改成这样,虽然依旧没有效果,但我决定还是把问题先放一放,以后再回过头来钻这个牛角尖儿,嘻嘻 #include #define uchar unsigned char #define uint unsigned int void main() { uchar temp = 0; WDTCTL=WDTPW+WDTHOLD; BCSCTL1 |= XTS; do { IFG1 &= ~OFIFG; for(temp=0xFF;temp>0;temp--); } while((IFG1&OFIFG)!=0); WDTCTL = WDT_ADLY_1000; IE1 |= WDTIE;  2DIR = 0xFF;  2OUT = 0x00; _EINT(); while(1) { LPM3; _NOP(); } } #pragma vector = WDT_VECTOR __interrupt void watchdog() {  2OUT ^= 0xFF; } |
|
|
|
有问题。。。
|
|
|
|
只有小组成员才能发言,加入小组>>
3055个成员聚集在这个小组
加入小组2980 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3704 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2366 浏览 1 评论
4832 浏览 1 评论
2594 浏览 1 评论
1492浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3704浏览 2评论
2980浏览 1评论
1689浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 23:52 , Processed in 1.413523 second(s), Total 89, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号