打印

菜鸟问题求助大神,定时器T0中断服务程序 中断次数初值求教!

[复制链接]
858|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
joyce8848|  楼主 | 2016-10-5 23:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面这段程序中,x++配合if语句可以实现定时时间几倍延长,但如果提前给x腹初值,加上x=0;想要的结果就出不来,请问下这是为何?多谢了!
void blink() interrupt 1
{

        TH0=15536/256;
        TL0=15536%256;
        x++;
        if(x==10)
        {
                led1=~led1;
                x=0;
        }
       
}

相关帖子

沙发
joyce8848|  楼主 | 2016-10-6 23:29 | 只看该作者
求帮忙啊 在主程序中给x赋0貌似可以 但例程中没有赋值 怎么能知道x初值是多少啊?

使用特权

评论回复
板凳
avkmonkey| | 2016-10-7 11:39 | 只看该作者
你是想在这个中断函数里给x赋初值吗?
把x变成静态局部变量即可
在这个函数第一行加上
static unsigned char x=0;
就可以了

使用特权

评论回复
地板
joyce8848|  楼主 | 2016-10-7 14:22 | 只看该作者
avkmonkey 发表于 2016-10-7 11:39
你是想在这个中断函数里给x赋初值吗?
把x变成静态局部变量即可
在这个函数第一行加上


后来我想了想 是不是在中断函数中赋值是不对的呢?因为每次中断都在运行中断程序,每次运行都给x赋初值0,这样x永远也加不到10,对么?

使用特权

评论回复
5
JY-DX-JY| | 2016-10-7 15:32 | 只看该作者
joyce8848 发表于 2016-10-7 14:22
后来我想了想 是不是在中断函数中赋值是不对的呢?因为每次中断都在运行中断程序,每次运行都给x赋初值0 ...

感觉楼主要看看C语言书了

使用特权

评论回复
6
avkmonkey| | 2016-10-7 21:40 | 只看该作者
joyce8848 发表于 2016-10-7 14:22
后来我想了想 是不是在中断函数中赋值是不对的呢?因为每次中断都在运行中断程序,每次运行都给x赋初值0 ...

是的,所以要设置成静态变量,每次函数结束的时候,静态变量不释放,然后再下次进函数时,静态变量还是上次退出函数时候的值。

使用特权

评论回复
7
lihui567| | 2016-10-8 13:53 | 只看该作者
不赋值也可以,但是最好先赋初值为零

使用特权

评论回复
8
joyce8848|  楼主 | 2016-10-8 21:01 | 只看该作者
JY-DX-JY 发表于 2016-10-7 15:32
感觉楼主要看看C语言书了

是滴,现在在跟着郭天祥的视频学习,之前c语言学的比较浅,还请大神们多多指教~

使用特权

评论回复
9
joyce8848|  楼主 | 2016-10-8 21:04 | 只看该作者
avkmonkey 发表于 2016-10-7 21:40
是的,所以要设置成静态变量,每次函数结束的时候,静态变量不释放,然后再下次进函数时,静态变量还是上 ...

多谢了,我在看郭天祥视频学习,他说不赋值初值是0,我没找到C语言书中有相关的描述,觉得还是赋初值比较好。

使用特权

评论回复
10
joyce8848|  楼主 | 2016-10-8 21:05 | 只看该作者
lihui567 发表于 2016-10-8 13:53
不赋值也可以,但是最好先赋初值为零


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

15

帖子

0

粉丝