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

如题所述

第1个回答  2013-03-26
; 这是产生 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
第2个回答  2013-03-25
如果是固定的PWM那好办,做个定时中断,中断里面判断时间,假如做1ms 的定时中断,5ms次让一个端口输出一个脉冲,然后10ms让另个端口输出Pwm脉冲,最后15ms 在另个端口输出Pwm脉冲,本回答被网友采纳
第3个回答  2013-03-25
设定好相应时间,用三路定时器中断来不停的取反三个IO就行,这样三路可以各自调整互不干扰。89C52就有三个定时器T0 T1 T2
第4个回答  2013-03-26
三路就是三个子循环。
把全部的合成一个大循环,然后再分别调控就好了追问

我也是这么编的~不过就是不知道为啥按任何的键都是三路一同时起变化

第5个回答  2013-03-29
要说清型号 有的51提供很多路pwm 有的根本没有pwm功能,要自己模拟。追问

89C51

追答

o(︶︿︶)o 唉 楼上的要我怎么说。89c51没pwm功能。自己把引脚拉高-拉低-拉高-拉低,控制好时间,就是pwm了。当然,如果你的单片机不需要做其他事情的话。

相似回答