3个回答
展开全部
;这是呼吸灯的程序,PWM从P0.0输出
ORG 00H
SJMP MAIN
ORG 000BH
LJMP TIME0
ORG 001BH
JMP TI个ME1
ORG 0030H
MAIN:
MOV SP,#70H
MOV TMOD,#21H
MOV 30H,#50
MOV R7,30H
MOV R6,#100
MOV TL0 ,#LOW(65536-15000)
MOV TH0,#HIGH(65536-15000)
MOV TL1,#(256-200)
MOV TH1,#(256-200)
MOV TCON,#00H
SETB PT1
SETB EA
SETB ET0
SETB ET1
SETB TR0
SETB TR1
SJMP $
TIME1:
DJNZ R7,T1_1
; MOV R7,30H
CLR P0.0
T1_1:
DJNZ R6,T1_END
MOV R7,30H
MOV R6,#100
SETB P0.0
T1_END:
RETI
TIME0:
MOV TL0 ,#LOW(65536-15000)
MOV TH0,#HIGH(65536-15000)
JB F0,T0_1
INC 30H
MOV A,#99
CJNE A,30H,T0_END
SETB F0
SJMP T0_END
T0_1:
DEC 30H
MOV A,#01
CJNE A,30H,T0_END
CLR F0
T0_END:
RETI
ORG 00H
SJMP MAIN
ORG 000BH
LJMP TIME0
ORG 001BH
JMP TI个ME1
ORG 0030H
MAIN:
MOV SP,#70H
MOV TMOD,#21H
MOV 30H,#50
MOV R7,30H
MOV R6,#100
MOV TL0 ,#LOW(65536-15000)
MOV TH0,#HIGH(65536-15000)
MOV TL1,#(256-200)
MOV TH1,#(256-200)
MOV TCON,#00H
SETB PT1
SETB EA
SETB ET0
SETB ET1
SETB TR0
SETB TR1
SJMP $
TIME1:
DJNZ R7,T1_1
; MOV R7,30H
CLR P0.0
T1_1:
DJNZ R6,T1_END
MOV R7,30H
MOV R6,#100
SETB P0.0
T1_END:
RETI
TIME0:
MOV TL0 ,#LOW(65536-15000)
MOV TH0,#HIGH(65536-15000)
JB F0,T0_1
INC 30H
MOV A,#99
CJNE A,30H,T0_END
SETB F0
SJMP T0_END
T0_1:
DEC 30H
MOV A,#01
CJNE A,30H,T0_END
CLR F0
T0_END:
RETI
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
艾普斯
2024-07-18 广告
2024-07-18 广告
稳频稳压电源哪家好?艾普斯电源(苏州)有限公司开始专业研发、制造及营销交流稳压电源,满足全球电子及信息业对电源设备日益蓬勃的市场需求。迄今为止,业已发展成为交流不间断电源、稳压电源、变频电源、中频航空- 军事专用电源、直流电源、逆变电源等产...
点击进入详情页
本回答由艾普斯提供
展开全部
想用51做dac吧,额..这个只能改时间了,把发一个脉冲的动作做成一个函数,其中两个变量做操作数,用来控制脉宽,假设啊,a,b。ab之和为定值就能保证周期不变了,其他就随你咯
追问
给个程序呗。。。。。我的毕业设计呀
追答
我也要写毕业设计啊,步进电机细分+无极调速+3000RPM 谁帮我写啊
还是帮你写吧
#include
#include // 包含_nop_();
sbit P10=P1^0;
sbit KEY=P3^2;
unsigned char r=50;
unsigned char j=0;
void PWM_signal (int t)
{
P10=1;
for(j=t;j>0;j--)
_nop_();
P10=0;
for(j=100-t;j>0;j--)
_nop_();
}
void key() interrupt 0
{
EA=0;
if(KEY==0)
{
for(j=100;j>0;j--) //
{ //
for(j=100;j>0;j--)_nop_(); //
} //约10ms延时袪抖
if(KEY==0)
{
while(!KEY);
for(j=5;j>0;j--)j++;//比如占空比一次加5%,这里自己写
EA=1;
}
}
}
void main()
{
KEY=1; //
EA=1; //
EX1=1; //
EX0=1; //初始化
while(1)
{
PWM_signal(r);
}
}
手里没有51的编译环境,有可能报错的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
STC内部直接有PCA模块,可以直接设置为PWM模式。
普通软件模拟的PWM,效果一般。
普通软件模拟的PWM,效果一般。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询