找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6561|回复: 4
收起左侧

P00口输出方波程序

[复制链接]
ID:16822 发表于 2009-9-3 18:55 | 显示全部楼层 |阅读模式

大家好,我现在想在89S51的P00口输出25K的方波,但不知道怎么回事,总是跟我想象的结果不一样。16M的晶振,请高手给与指点下,谢谢了
#include <reg52.h>
sbit P00=P0^0;
void main(void)
{
long float Freq=25000.00;
long float temp;
float tt;
int t;
temp=(2000000/3)/Freq;
tt=65536-temp;
t=(int)tt;
P00=1;
TMOD=0x01;
TH0=t/256;
TL0=t%256;
TR0=1;
 while(1)
 {
   if(TF0==1)
   {
     TF0=0;
   P00=~P00;
   TH0=t/256;
   TL0=t%256;
   }
 }

}

回复

使用道具 举报

ID:17290 发表于 2009-9-17 17:13 | 显示全部楼层
肯定不行了,16M的晶体的话计一个脉冲就是16/12=1.3us,而你计了65509个数,也就是定时器溢出一次是1.3*65509=0.085us,
85个毫秒,周期就是170毫秒,频率也才6HZ左右
回复

使用道具 举报

ID:17313 发表于 2009-9-17 22:28 | 显示全部楼层

计一个脉冲是12/16吧的时间吧

回复

使用道具 举报

ID:17313 发表于 2009-9-17 22:34 | 显示全部楼层
应该是不是  TH0=(49151-20)/256
                TL0=(49151-20)%256
回复

使用道具 举报

ID:17290 发表于 2009-9-18 08:27 | 显示全部楼层

哦,对,算错了,计一个脉冲是12/16=0.75us

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表