找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2184|回复: 9
收起左侧

请问单片机程序怎么改变成高电平为2ms,低电平为1ms的方波?

[复制链接]
ID:1047343 发表于 2022-10-29 19:39 | 显示全部楼层 |阅读模式
#include <reg52.h>
sbit P1_0= P1^0;
void Init_ET_0()
{
        TMOD = 0x01;
        EA = 1
        ET0 = 1
        TR0 = 1
        TH0 = 0xfc
        TL0 = 0x18
}
void Servoce_ET_0() interrupt 1
{
        TH0 = (65536 - 500)/256
        TL0 = (65536 - 500)%256
        P1_0=!P1_0;
}
void main()
{
        Init_ET_0();
        while(1)
        {
        }
}

回复

使用道具 举报

ID:213173 发表于 2022-10-30 06:27 | 显示全部楼层
#include <reg52.h>

sbit P1_0= P1^0;

char i;

void Init_ET_0()
{
        EA = 1;
        ET0 = 1;
        TR0 = 1;
        TMOD = 0x01;
        TH0 = 0xfc;
        TL0 = 0x18;
}

void Servoce_ET_0() interrupt 1
{
        TH0 = 0xfc;
        TL0 = 0x18;
        if(!i)P1_0=0;
        else P1_0=1;
        i=++i%3;
}

void main()
{
        Init_ET_0();
        while(1);
}
回复

使用道具 举报

ID:121859 发表于 2022-10-30 10:28 | 显示全部楼层
void Servoce_ET_0() interrupt 1
{
        static,num;
        TH0 = (65536 - 500)/256
        TL0 = (65536 - 500)%256
        P1_0=!P1_0;
        if(num)P1_0=1;
        else P1_0=0;
        num++;
        num%=3;
}
回复

使用道具 举报

ID:195496 发表于 2022-10-30 15:01 | 显示全部楼层
void Servoce_ET_0() interrupt 1
{
        static cnt;
        TH0 = (65536 - 500)/256
        TL0 = (65536 - 500)%256
        cnt++;
        if(cnt<2)
        {
         P1_0=1;//
        }
       else
       {P1_0=0;}
       if(cnt==3){cnt=0;}
        
}
回复

使用道具 举报

ID:1047343 发表于 2022-10-30 17:13 | 显示全部楼层
wulin 发表于 2022-10-30 06:27
#include

sbit P1_0= P1^0;

请问如果要 i=++i%3;直接改成定时2ms的应该要怎么改呢
回复

使用道具 举报

ID:213173 发表于 2022-10-30 20:09 | 显示全部楼层
zephry 发表于 2022-10-30 17:13
请问如果要 i=++i%3;直接改成定时2ms的应该要怎么改呢

产生固定周期但非50%占空比的PWM波形的方法有很多,就产生高电平为2ms,低电平为1ms的方波而言,这个方法最简单。
回复

使用道具 举报

ID:1047343 发表于 2022-10-30 20:35 | 显示全部楼层
wulin 发表于 2022-10-30 20:09
产生固定周期但非50%占空比的PWM波形的方法有很多,就产生高电平为2ms,低电平为1ms的方波而言,这个方法 ...

明白了,谢谢
回复

使用道具 举报

ID:123289 发表于 2022-10-31 08:57 | 显示全部楼层
必须有两个计时的东东,能够分离出1mS和2mS,
再据之进行0,1切换就OK了。
回复

使用道具 举报

ID:1047343 发表于 2022-10-31 09:31 来自触屏版 | 显示全部楼层
yzwzfyz 发表于 2022-10-31 08:57
必须有两个计时的东东,能够分离出1mS和2mS,
再据之进行0,1切换就OK了。

我理想中的就应该是这样,但不知道怎么做出来,能指导一下吗
回复

使用道具 举报

ID:332444 发表于 2022-10-31 15:06 | 显示全部楼层
就是占空比
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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