打印
[51单片机]

大家来看看这个方博信号

[复制链接]
1404|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
void Timer0_isr(void) interrupt 1 using 1
{
static unsigned char i;
TH0=(65536-10000)/256;    //重新赋值 12M晶振计算,指令周期1uS,
                              //200mS方波半个周期100mS,由于定时器
                              //最大值65536 即65.536ms 所以
TL0=(65536-10000)%256;       //直接定时器不够用,需要用循环处理,
                              //定时10ms,然后循环10次后输出 10x10=100ms
i++;
if(i==11)
{
   i=0;
   OUT=~OUT;        //用示波器可看到方波输出
  }
}

是200ms方波吗?我怎么觉得是220ms方波呢??或者应该是if(i==10)

捕获.JPG (51.72 KB )

捕获.JPG

相关帖子

沙发
ayb_ice| | 2013-8-27 11:06 | 只看该作者
i == 10

使用特权

评论回复
板凳
samsunghellome|  楼主 | 2013-8-27 11:14 | 只看该作者
ayb_ice 发表于 2013-8-27 11:06
i == 10

嗯,我看了大一会,还跟我同学讨论了,都觉得不对,怎么算都是220ms

使用特权

评论回复
地板
受不了了| | 2013-8-27 11:54 | 只看该作者
没示波器就点个灯用秒表也能看出来呀,你发贴的这个时间都足够去验证了

使用特权

评论回复
5
林志财| | 2013-8-27 13:54 | 只看该作者
没示波器就点个灯用秒表也能看出来呀,你发贴的这个时间都足够去验证了
:handshake

使用特权

评论回复
6
创隆电子| | 2013-8-27 19:52 | 只看该作者
注意定时器的赋值方式也影响时间的执行,四则运算方式不如直接赋值,如;TH0=255;TL0=10;,这样就比四则运算要快。原因单片机运算时直接赋值所用的时间比另一种方式要断

使用特权

评论回复
7
大漠孤烟| | 2013-8-27 22:15 | 只看该作者
定时器的溢出时间是10ms,所以i的计数应该是0到4,i==5时波形相位就该翻转了,这样低电平、高电平的时长加起来才才是你周期100ms的方波。
6#提的观点体现丰富的经验,是要考虑中断服务程序中所产生的延迟。但有的编译器还是会将这种常量在编译的时候计算出来以常量保存的,比如KEIL

使用特权

评论回复
8
samsunghellome|  楼主 | 2013-8-28 08:36 | 只看该作者
创隆电子 发表于 2013-8-27 19:52
注意定时器的赋值方式也影响时间的执行,四则运算方式不如直接赋值,如;TH0=255;TL0=10;,这样就比四则运算 ...

谢谢指导

使用特权

评论回复
9
samsunghellome|  楼主 | 2013-8-28 08:37 | 只看该作者
大漠孤烟 发表于 2013-8-27 22:15
定时器的溢出时间是10ms,所以i的计数应该是0到4,i==5时波形相位就该翻转了,这样低电平、高电平的时长加 ...

:)

使用特权

评论回复
10
opal11| | 2013-8-28 23:39 | 只看该作者
直接用单片机精灵赋值就好了。

使用特权

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

本版积分规则

43

主题

198

帖子

0

粉丝