完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我要写一个程序,主要思路如下:
首先定时器设定一个初值1000,然后定时器自加,加到1000后,跳入中断,执行一次判断 if(P1IN&BIT0==0),若满足条件则 k++;我要的数据就是k的值。但是,我现在有个问题,在中断程序里,我必须给K赋初值,k=0。这样的话,不管我跳入几次中断,满足几次条件,K最多等于1。我该怎么改? 程序如下: void main(void) { //int k=0,i; WDTCTL = WDTPW+WDTHOLD; //关闭看门狗 P1DIR &=0X00;//~BIT0; CCTL0=CCIE+CM1; CCR0=1000; TACTL=TASSEL_1+MC_1; //用外部特定的引脚信号,增计数模式 _BIS_SR(LPM3_bits+GIE); //开中断允许 //LPM0; } #pragma vector=tiMERA0_VECTOR __interrupt void Timer_A (void) { int k=0; void Delay4000ms(); if(P1IN&BIT0==0) k++; LcdReset(); //显示程序的初始化 Disp1Char(11,0,shuzi[k]); 在1602中显示k的值 } |
|
相关推荐
4个回答
|
|
把int k=0;放到主函数中试试
|
|
|
|
看了你的程序的目的是在LCD中显示进入中断的次数是吗?
程序有几个问题: 比如,中断程序中的void Delay4000ms(); void可以去掉; 显示程序的初始化完全可以放到主函数中,不需要进入中断就初始化一次; 你可以把k定义成全局变量,在主函数中不断执行显示k值程序,Disp1Char(11,0,shuzi[k]); 在中断程序中改变k值即可 |
|
|
|
谢谢你,我把k定义了全局变量,这个问题就解决了。但是,为什么MSP430的P1.0口检测不出低电平呢?if(P1IN&BIT0==0),检测不出来。k一直是0。
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
788 浏览 0 评论
1151 浏览 1 评论
2527 浏览 5 评论
2860 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2709 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1068浏览 3评论
193浏览 2评论
455浏览 2评论
368浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
453浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 10:36 , Processed in 1.175269 second(s), Total 84, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号