问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么样用51单片机产生三路占空比PWM波啊?要汇编语言的,有思路也行

发布网友 发布时间:2023-07-29 21:20

我来回答

5个回答

热心网友 时间:2023-11-11 11:30

PWM EQU 7FH ;PWM赋初始值 OUT EQU P0 ;8个LED灯的接口
INCKEY EQU P3.2 ;K1,PWM值增加键。 DECKEY EQU P3.4 ;K2,PWM值减小键。
BEEP EQU P2.2
;----------------------------
ORG 0000H
SJMP START
ORG 000BH
SJMP INTT0
ORG 001BH
SJMP INTT1
ORG 0030H
;----------------------------
;主程序
;定时器0工作在模式1,定时器1工作在模式2。
;----------------------------
START:
MOV SP,#30H
MOV TMOD,#21H
MOV TH1,PWM ;脉宽调节
MOV TL1,#00H
MOV TH0,#0FCH ;1ms延时常数
MOV TL0,#066H ;频率调节
clr p1.4
SETB EA
SETB ET0
SETB ET1
SETB TR0

LOOP: MOV A,PWM ;
JB INCKEY,LOOP1 ;增加键是否按下?
CALL DELAY ;延时去抖动
JB INCKEY,LOOP1
CJNE A,#0FFH,PWMINC ;是否到最大值?
CALL BEEP_BL ;是,蜂鸣器报警。
SJMP LOOP
PWMINC:
INC PWM ;调节脉宽(脉宽减小)
SJMP LOOP

LOOP1: JB DECKEY,LOOP2 ;减小键是否按下?
CALL DELAY ;延时去抖动
JB DECKEY,LOOP2
CJNE A,#02H,PWMDEC ;是否到最小值?
CALL BEEP_BL ;是,蜂鸣器报警。
SJMP LOOP
PWMDEC:
DEC PWM ;调节脉宽(脉宽增加)
LOOP2: SJMP LOOP

;------------------------------
;T0中断服务子程序 (频率)
;控制定时器1中断
;------------------------------
INTT0:
CLR TR1
MOV TH0,#0FCH ;1ms延时常数
MOV TL0,#066H ;频率调节
MOV TH1,PWM
SETB TR1
MOV OUT,#07fH ;启动输出
RETI
;------------------------------
;T1中断服务子程序 (脉宽)
;控制PWM脉冲宽度
;------------------------------
INTT1:
CLR TR1 ;脉宽调节结束
MOV OUT,#0FFH ;结束输出
RETI
;------------------------------
;10ms延时子程序
;------------------------------
DELAY:
MOV R6,#50
DELAY1:
MOV R7,#100
DJNZ R7,$
DJNZ R6,DELAY1
RET
;-----------------------------------------------
;蜂鸣器响一声子程序
;-----------------------------------------------
BEEP_BL:
MOV R6,#100
BL1: CALL BL2
CPL BEEP
DJNZ R6,BL1
MOV R5,#25
CALL DELAY2
RET

BL2: MOV R7,#180
BL3: NOP
DJNZ R7,BL3
RET
DELAY2: ;延时R5×10MS
MOV R6,#50
BL4: MOV R7,#100
BL5: DJNZ R7,BL5
DJNZ R6,BL4
DJNZ R5,DELAY2
RET
;---------------------------------------------------
END

你可以参考这个程序自己写写

热心网友 时间:2023-11-11 11:31

; 这是产生 PWM 波的方法 中断部分 T0 自动重装载 方式2
INTT0: ; 几个参数需要 定义 三路 PWM 占空比 可以不同
PUSH PSW ; 现场保护
PUSH ACC
INC COUNTER ; 计数值加1
MOV A,COUNTER
CJNE A,PWMH1,INTT01 ; 如果等于高电平脉冲数
CLR P1.0 ; P1.0变为低电平 PWM1
INTT01:
CJNE A,PWMH2,INTT02 ; 如果等于高电平脉冲数
CLR P1.1 ; P1.1变为低电平 PWM2
INTT02:
CJNE A,PWMH3,INTT03 ; 如果等于高电平脉冲数
CLR P1.2 ; P1.2变为低电平 PWM3
INTT03:
CJNE A,PWM,INTT05 ;如果等于周期数
MOV COUNTER,#01H ;计数器复位
SETB P1.0 ;P1.0为高电平
SETB P1.1 ;P1.1为高电平
SETB P1.2 ;P1.2为高电平
INTT05:
POP ACC ;出栈
POP PSW
RETI

热心网友 时间:2023-11-11 11:31

如果是固定的PWM那好办,做个定时中断,中断里面判断时间,假如做1ms 的定时中断,5ms次让一个端口输出一个脉冲,然后10ms让另个端口输出Pwm脉冲,最后15ms 在另个端口输出Pwm脉冲,

热心网友 时间:2023-11-11 11:32

设定好相应时间,用三路定时器中断来不停的取反三个IO就行,这样三路可以各自调整互不干扰。89C52就有三个定时器T0 T1 T2

热心网友 时间:2023-11-11 11:33

三路就是三个子循环。
把全部的合成一个大循环,然后再分别*就好了追问我也是这么编的~不过就是不知道为啥按任何的键都是三路一同时起变化

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 怎么更新网站上的图片 ...们有谁知道百度搜索关键词时,百度搜索网站左下角的图如何更新? 我不知道如何在网站更新网站图片,很烦恼! 微信收款后怎么查到对方? 阴毛上长小虫子是怎么回事 梦见被狮子扑倒 如何慎用五行属性来为孩子起名 人类免疫缺陷病毒抗体诊断试剂盒 胶体金法可靠吗 日立硬盘插电后不转,有吱吱的声音,但就是不感觉到转,请教什么原因,如何... SHE在香约奶茶广告里的歌的歌名是什么? ...耳朵贴上去感觉能听到旋转的咔咔声 是日立的硬盘 这... 今天新买的X450VC日立硬盘有吱吱的声音 如何防止汽车蓄电池充电爆炸 怎样预防蓄电池爆炸? 乱星海传送阵谁造的凡人 请问Specify other是什么意思? 关闭wordpress对外请求 鸭血豆腐海米汤是怎么做的? 哪些学校招收专转本学生 vivo手机反向充电怎么充 51单片机输出两路独立的可调占空比pwm,如何变成 51单片机两个io口同时输出两个占空比不同的方波?以下程序希望给点灵感... oracle提供的认证方式有哪些 oracle的认证有哪些 Oracle认证是什么意思 怎么考oracle的认证 塑料镀铝袋、铝箔袋的结构、材质、加工工艺? 加拿大高中学习辛苦吗? 求大神情侣头像另一张帮找到 csgo完美s一颗星多少分 完美平台魔王s多少分 2022年山东济宁公务员学历要求 2022年山东济宁本土公务员报名条件 在vue-router里query动态传参步骤有哪些 我想保存某网页,却提示“该网页可能无法正确保存,是否保存? 为什么 太厉害!81岁奶奶能连续跳绳1000个,奶奶的身体素质为啥这么好? 年龄只是符号!81岁奶奶能连续跳绳1千个,奶奶的身体为何能如此健壮? 苹果手机信息有个红色感叹号怎么去掉 做梦梦到去世的爷爷奶奶还活着和我说话是什么征兆 lookatthispicture.doyouagreewithit?why怎么回答