完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
int i=0; void init()//初始化时钟 { unsigned int i; _DINT();//__disable_interrupt() BCSCTL1 &=~XT2OFF;//Basic Clock System Control 1,Enable XT2CLK //即打开XT2 do { IFG1 &= ~OFIFG; // IFG1:Interrupt Flag 1 // 清除振荡器失效标志 for(i=0xFF;i>0;i--);// 延时,等待XT2起振 } while((IFG1 & OFIFG) != 0);// 判断XT2是否起振,OFIFG=0则起振 BCSCTL2 =SELM1+SELS; //MCLK(SELM1),SMCLK时钟为XT2,都为8MHZ //BCSCTL2:Basic Clock System Control 2 } void count_init() { P1SEL =0x00; P1DIR&=~(BIT0+BIT1); P1DIR|=BIT6; P1OUT=0X00; P1IES = 0x00; // P1.0选择上升沿中断 P1IE = 0x01; // 打开中断使能 } int main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; init(); count_init(); _EINT(); //开总中断 return 0; } #pragma vector=PORT1_VECTOR //外部中断计脉冲 __interrupt void port1(void) { if(P1IFG&BIT0==BIT0) { P1IFG=0X00; if((P1IN&BIT1)==BIT1) i++; else i--; if(i>=100)//接收的脉冲大于100则P1.6输出高电平,灯亮 P1OUT|=BIT6; else P1OUT&=~BIT6; } } 我打算用外部中断计电机脉冲个数,但是好像没有用,这是我写的一个外部中断测试,灯一直不亮,现在也不知道是什么原因,求帮助,已经困扰好久了,谢谢! |
|
相关推荐
8个回答
|
|
可能是硬件出了问题吧 建议检查下硬件
|
|
|
|
#include
int i=0; void init()//初始化时钟 { unsigned int i; BCSCTL1 &=~XT2OFF;//Basic Clock System Control 1,Enable XT2CLK //即打开XT2 do { IFG1 &= ~OFIFG; // IFG1:Interrupt Flag 1 // 清除振荡器失效标志 for(i=0xFF;i>0;i--);// 延时,等待XT2起振 } while((IFG1 & OFIFG) != 0);// 判断XT2是否起振,OFIFG=0则起振 BCSCTL2 =SELM1+SELS; //MCLK(SELM1),SMCLK时钟为XT2,都为8MHZ } void count_init() { P1DIR|=BIT6; P1IES = 0x00; // P1.0选择上升沿中断 P1IE = 0x03; // 打开中断使能 P1IFG = 0X00; } void main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; init(); count_init(); _EINT(); //开总中断 } #pragma vector=PORT1_VECTOR //外部中断计脉冲 __interrupt void port1(void) { if(P1IFG&BIT0) { P1IFG=0X00; P1OUT|=BIT6; } if(P1IFG&BIT1) { P1IFG=0X00; P1OUT&=~BIT6; } } |
|
|
|
你可以在proteus中仿真一下 ,我把这个稍微修改了一下 是可以的,因为我的proteus中只有msp430f249,所以我选的是f249,在仿真的时候注意我们选的是外部高频晶体振荡器,所以我们要选择一下8MHz的晶振,在添加源程序的那个框中添加
|
|
|
|
我是来学习的’
|
|
|
|
楼主问题解决了吗?同问啊
|
|
|
|
在主函数里是不是应该加上一个while(1);?
|
|
|
|
#include
int i=0; void init()//初始化时钟 { unsigned int i; BCSCTL1 &=~XT2OFF;//Basic Clock System Control 1,Enable XT2CLK //即打开XT2 do { IFG1 &= ~OFIFG; // IFG1:Interrupt Flag 1 // 清除振荡器失效标志 for(i=0xFF;i>0;i--);// 延时,等待XT2起振 } while((IFG1 & OFIFG) != 0);// 判断XT2是否起振,OFIFG=0则起振 BCSCTL2 =SELM1+SELS; //MCLK(SELM1),SMCLK时钟为XT2,都为8MHZ } void count_init() { P1DIR|=BIT6; P1IES = 0x00; // P1.0选择上升沿中断 P1IE = 0x03; // 打开中断使能 P1IFG = 0X00; } void main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; init(); count_init(); _EINT(); //开总中断 while(1); } #pragma vector=PORT1_VECTOR //外部中断计脉冲 __interrupt void port1(void) { if(P1IFG&BIT0) { P1IFG=0X00; P1OUT|=BIT6; } if(P1IFG&BIT1) { P1IFG=0X00; P1OUT&=~BIT6; } } |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
2631个成员聚集在这个小组
加入小组MSP430FR5994 使用库函数 定时器触发AD问题请教
1624 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2169 浏览 1 评论
4565 浏览 1 评论
2366 浏览 1 评论
1705 浏览 1 评论
706浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
1624浏览 2评论
930浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-20 11:43 , Processed in 1.065655 second(s), Total 80, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号