求助各位大神,关于PWM波的程序

2019-07-15 10:11发布

#include"STC12C5A60S2.h"
#include"intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit dj1=P1^0;
uint tt;
uint cs;
void timer0Init();
void Delay500ms();
void Delay500ms()                //@11.0592MHz
{
        unsigned char i, j, k;

        _nop_();
        _nop_();
        i = 22;
        j = 3;
        k = 227;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}
void main()
{
        Timer0Init();
       
        while(1);
        {
                cs=20;
                Delay500ms();                       

        }
}
void Timer0Init(void)                //50微秒@11.0592MHz
{
        AUXR |= 0x80;                //定时器时钟1T模式
        TMOD &= 0xF0;                //设置定时器模式
        TL0 = 0xD7;                //设置定时初值
        TH0 = 0xFD;                //设置定时初值
        TF0 = 0;                //清除TF0标志
        TR0 = 1;                //定时器0开始计时
}
void timer0() interrupt 1
{
        TH0=0XFD;
        TL0=0XD7;
        tt++;
        if(tt>=400)
        {
                tt=0;
        }
        if(tt<=cs)
        {
                dj1=1;
        }
        else
        {
                dj1=0;
        }
}

这样无法形成PWM波吗??


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
小S咯
1楼-- · 2019-07-15 17:58
 精彩回答 2  元偷偷看……
namesongyuan
2楼-- · 2019-07-15 19:22
小S咯 发表于 2017-7-19 16:34
你试一下把输出换成一个LED灯,然后主函数里CS从0到400然后400到0这样循环改变,每次隔5ms,看看LED灯是不是呼吸灯效果。
最好还是示波器看,最直观!

非常感谢 我这就是试试  
示波器很贵的吧。。。有软件可以模拟吗
小S咯
3楼-- · 2019-07-15 20:42
namesongyuan 发表于 2017-7-19 16:49
非常感谢 我这就是试试  
示波器很贵的吧。。。有软件可以模拟吗

没用示波器就试试LED灯那个把!!
namesongyuan
4楼-- · 2019-07-16 02:09
小S咯 发表于 2017-7-19 16:58
没用示波器就试试LED灯那个把!!

呜呜呜
试了
果然
亮不起来
void main()
{
        Timer0Init();
       
        while(1);
        {
                cs=20;
                Delay5ms();
                if(tt==0)
                {
                        tt=400;
                }
                                       

        }
}
小S咯
5楼-- · 2019-07-16 06:20
本帖最后由 小S咯 于 2017-7-19 17:30 编辑

你的有错,试试这样
void main()
{
        Timer0Init();
        uchar i=1;             cs=0;
        while(1);
        {
                cs=cs+i;                              if(cs>=400)
                    i=-1;
                if(cs<=0)
                    i=1;
                Delay5ms();
        }
}





补充内容 (2017-7-20 08:26):
while(1);多了;
小S咯
6楼-- · 2019-07-16 11:32
 精彩回答 2  元偷偷看……

一周热门 更多>