mey 发表于 2013-2-8 10:00:39

89c52能产生25khz频率方波吗

本帖最后由 mey 于 2013-2-8 16:18 编辑

#include"reg52.h"
#define uchar unsigned char
#define uint unsigned int
sbit out=P3^0;
void main()
{
        TMOD=0x20;
        TH1=236;
        TL1=236;
        EA=1;
        ET1=1;
        TR1=1;
        while(1);
}
void timer()interrupt 3
{
        out=~out;
}用这段代码产生了25KHZ的方波 请教一下怎么调节占空比 20%~99%

devcang 发表于 2013-2-8 10:03:08

这个频率,可以的
最简单用时钟。

mey 发表于 2013-2-8 10:11:35

devcang 发表于 2013-2-8 10:03 static/image/common/back.gif
这个频率,可以的
最简单用时钟。

请问怎么用软件产生呢..

NJ8888 发表于 2013-2-8 10:43:51

25K=40us周期,你用定时器20us翻一次,12M晶体,定时器8位重装模式

BXAK 发表于 2013-2-8 10:44:10

直接用T2的可编程时钟输出

NJ8888 发表于 2013-2-8 10:47:45

BXAK 发表于 2013-2-8 10:44 static/image/common/back.gif
直接用T2的可编程时钟输出

这个好,好久不用51了没想到

mon51 发表于 2013-2-8 11:14:56

NJ8888 发表于 2013-2-8 10:43 static/image/common/back.gif
25K=40us周期,你用定时器20us翻一次,12M晶体,定时器8位重装模式

必须考虑中断响应的时间。要把它们补偿进去。20us的延时是大了,要减少!

木兮木有枝 发表于 2013-2-8 11:19:09

czzhouyun 发表于 2013-2-8 11:42:01

很多方法,实在感觉困难,可以选用增强型的51,有6分频的,有四分频的

mey 发表于 2013-2-8 16:18:46

木兮木有枝 发表于 2013-2-8 11:19 static/image/common/back.gif
可以的。。用计数器的模式2,自动重装初值,不用考虑那个重载时间

求教一下怎么调节占空比

minier 发表于 2013-2-14 21:53:10

能,直接用T2就自动产生了

wingerchen 发表于 2013-2-14 23:09:05

要调占空比,你得能生成更高频率的方波才行,比如你分辨率是10%,那你得到250KHZ的方波才能做到以分辨率10%来调节占空比。
放一个数组甚至更绝点,用个移位计数器来记录一下。
比如你能生成250K的方波,利用定时中断来的话,就是大概4US中断一次开更新端口的0/1状态,那么,你要占空比20%的方波,你需要控制输出端在一个周期内的状态是 (2进制)1100000000 如此反复,当然,还有些具体的涉及到延迟补偿之类的还得推导一下。
如果你的程序只跑这个功能,不会有其他中断或者功能要跑,直接用汇编写,计算好一个NOP以及跳转需要的时间,通过控制NOP的循环数量来精确延时,从而利用延时来控制占空比,这样在旧的51来说,会比定时器方式要容易以及精确以及分辨率更高。
这是大概原理有错误请包涵,51 有10多年没碰过了,早忘光光怎么控制具体的定时了。
这个东西好像资料不少,书上写的也不少,GOOGLE也能查到不少。

quzhanguang1 发表于 2013-2-14 23:17:06

我弄过定时中断20k的,结果不行。

cu_ice 发表于 2013-2-15 00:14:11

标记一下,用电脑再看

eduhf_123 发表于 2013-2-15 01:10:04

本帖的关键在于占空比调节的步进要求:
25kHz的频率,也就是说周期为40μs,从LZ位“20%~99%”的这个要求来看,占空比调节步进应该至少是1%。
40μs的1%是400ns,也就是2.5MHz;LZ提到是用89C52来做,因为89C52是12分频的,所以需要2.5MHz*12=30MHz的时钟,而Atmel公司的AT89C52最大只支持24MHz的时钟,所以无法实现1%的步进调整,理论上最多只能支持25kHz/(24MHz/12)=1/80=1.25%的步进调整细粒度。
再考虑到89C52没有硬件PWM功能,必须通过定时器+中断服务程序的方式来实现,因为中断服务程序中保存及恢复现场需要花费一定时间,所以对PWM波形中高、低电平的最小时间还有限制。
页: [1]
查看完整版本: 89c52能产生25khz频率方波吗