关键就是占空比不会调 要采用中断方式 网上都是C 我们要汇编
追答之前用51产生PWM信号去控制舵机,那才叫坑。51没有专门的PWM控制器,所以只能用定时器去产生PWM信号。而写程序的时候,关于占空比一般就考虑高电平与低电平的时间比例。比如给出一个周期的时间为500ms(LOOP_TIME),给定时器赋初值,即高电平持续时间(H_TIME),定时器溢出时,先关闭定时器,然后电平翻转为低电平,加一个延时也就是低电平持续时间(L_TIME=LOOP_TIME-H_TIME),延时执行完之后电平翻转为高,再开定时器,中断返回。这样就产生了一个高电平为H_TIME,低电平为L_TIME的PWM信号,而其中周期是定值LOOP_TIME,H_TIME是自变量,L_TIME是因变量。增大高电平时间(加速转动)的同时就相当于减小了低电平的时间。不知道这样说明白吗。
追问MOV TMOD,#01H
MOV TH1,#
MOV TL1,# ;假如说这是500ms的定时 也就是高电平的时间
SETB EA
SETB ETO
SETB TRO
SJMP $
CLR EA
CPL P1.0
LCALL DELY
下面dely延时不写了 这样写对么
嗯,框架就这样吧!调用延时后记得开中断和电平翻转。子程序的标号记得加上。