打印

新手请教一个在Keil3中用C实现定时器T0中断的问题

[复制链接]
1994|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
DavisD|  楼主 | 2010-3-11 10:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教个很菜的问题:
51 控制器中如果使用定时器零,实现3ms左右一次的数码管扫描中断程序,如何用C语言实现呢?
11M晶振12分频
我的例子:


main(){
TMOD=0x11;
TH0 = (65536-3000)/256;
TL0 = (65536-3000)%256;
TR0=1;
TR2 = 0;
TR1 = 0;
IP = 0x01;          //优先级设置
IE=0x82;            // 1 nil nil 0 0 0 0 1 只使用T0定时器

  while(1){
             FUNCTIONXXXXX();         //跑主程序
             }
}



void timer0() interrupt 1 {
     FUNCTIONYYY();                    // 执行一个扫描数码管的程序
     TH0 = (65536-3000)/256;
     TL0=(65536-3000)%256;
}

问题如下:

1.寄存器这样设置可以吗?

2.关于定时计数溢出后执行的子程序:
Void timer0() interupt 1 { } 这个函数是Keil3 使用的中断格式吗?还需要在使用前声明吗?

3.希望各位大侠能贴个自己的例子

多谢帮忙!

相关帖子

沙发
幻刺| | 2010-3-11 11:20 | 只看该作者
1.寄存器这样设置可以吗?
TH0 = (65536-3000)/256;
TL0 = (65536-3000)%256;
这么设置是没问题。能用。不过可能不是你想要的那个意思。
2.关于定时计数溢出后执行的子程序:
Void timer0() interupt 1 { } 这个函数是Keil3 使用的中断格式吗?还需要在使用前声明吗?
是,不过打错了个字,是INTERRUPT。不需要声明。
3.希望各位大侠能贴个自己的例子
网上有,比如
http://wenku.baidu.com/view/8de7eefdc8d376eeaeaa31d7.html

使用特权

评论回复
板凳
DavisD|  楼主 | 2010-3-11 15:03 | 只看该作者
看到有些用法还有void timer0() interrupt 1 using 1{}
这里面的interrupt 1 中的1貌似代表使用T0中断,后面的using 1是什么意思呢?

使用特权

评论回复
地板
幻刺| | 2010-3-15 09:00 | 只看该作者
using 1 是第1组寄存器

使用特权

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

本版积分规则

0

主题

39

帖子

1

粉丝