51单片机用汇编语言编写PWM方波

晶振频率6MHZ,每个方波时间1毫秒,占空比百分之五十
如果改变占空比,怎么修改程序
最好每步都有解释,力求简单

第1个回答  推荐于2016-05-21
TIMEH EQU 30H

TIMEL EQU 31H
TIME EQU 32H
PULSE EQU P1.0
KEYUP EQU P1.1
KEYDN EQU P1.2
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H

MOV TIMEH,#250
MOV TIMEL,#250

MOV TIME,#0

MOV TH0,#HIGH(65536-TIMEH)

MOV TL0,#LOW(65536-TIMEH)

SETB TR0

SETB ET0

SETB EA

CLR 00H

LOOP:
JB KEYUP,LOOP1

JNB KEYUP,$

INC TIME

MOV A,TIME

CJNE A,#250,LOOP0

LOOP0:
JC LOOP

MOV TIME,#249

SJMP LOOP

LOOP1:
JB KEYDN,LOOP

JNB KEYDN,$

DEC TIME

MOV A,TIME

JNZ LOOP

MOV TIME,#1

SJMP LOOP

T0ISR:
CLR TR0

JB 00H,T0ISR1

MOV TH0,#HIGH(65536-TIMEL+TIME)

MOV TL0,#LOW(65536-TIMEL+TIME)

SJMP T001

T0ISR1:
MOV TH0,#HIGH(65536-TIMEH-TIME)

MOV TL0,#LOW(65536-TIMEH-TIME)
T001:
SETB TR0

CPL 00H

CPL PULSE

RETI

END追问

你确定这些指令在51单片机哩有,你能给我解释解释么

追答

当然,用KeilC就可以

本回答被提问者和网友采纳

求高手 用51单片机输出产生方波的程序
if(PWM)PWM=0; \/\/输出脚取反 else PWM=1;}

51单片机用汇编语言如何编写LED灯逐渐变亮在逐渐变暗啊
这个要用到软件的pwm,因为51的没有硬件的pwm所以只好自己写软件的了。首先,要做一个软件三角波发生器子程序,频率自己定,就是变亮变暗的周期。此函数的返回值作为pwm的输入值。再做一个pwm的模拟程序,占空比(0-100)是三角波发生器的输出,pwm模拟程序控制某个端口输出1和0的占空比来控制灯 的...

求51单片机PWM汇编语言程序(用来控制3个红、绿、蓝LED灯,让这3个LED...
1、程序实现上应该不难,假设用3个8位变量来调节这三个灯,理想上可以得到256单色灰度效果。但通常能做到16等级灰度,也能看到一定效果。2、这三个PWM周期相同,占空比不同,亮度就各有不同。3、确保单片机管脚输出1时(100%,或单独调节满刻度),三个LED灯的驱动电流均达到饱和。并且合成色为白色。

问:51单片机的方波产生原理是什么? 有程序的朋友给段程序看看?回答好了...
1、用定时器即Timer,产生中断,然后取反操作IO口,即可得到方波。51好久不弄了,好多都忘记了,写两句伪代码,大致意思。timer_init(){ 初始化timer,赋初值;设置timer溢出中断;} EXT_INT { P^1~=P^1 } 2、用软件模拟 int main(){ while(1){ P^1=1;delay();P^1=0 delay();} }...

51单片机产生pwm波控制舵机 pwm波形状是怎样的,是一个脚上不断输出方 ...
time()函数是定时器1的init初始化函数,在主函数里,应该在while函数的前面;从程序来看,pwm = 1,是一个定时器周期,PWM = 0是18个周期。定期起中断入口程序应该这样写:void time1_isr() interrupt 3 using 1

如何用51单片机输出不同频率的方波?
请确保编写程序以使用多个定时器,并且不会对其他功能造成影响。下面是一个使用51单片机同时输出不同频率方波的简单示例(使用 C 语言):include <reg51.h> unsigned int counter1, counter2;void Timer0_Init(){ TMOD = 0x01; \/\/ 设置 Timer0 为模式 1(16 位计数器)TH0 = 0xFC; \/\/ ...

谁给个stc51单片机程序,能产生50Hz方波频率
=0x02) {PWM-- ;delayms(10);} } while(K2==0); }}\/***\/\/\/ 定时器0中断服务程序 (频率)\/***\/void timer0() interrupt 1 { TR1=0 ; TH0=0xfc ; TL0=0x66 ; TH1=PWM ; TR1=1 ; P1=0x00 ; \/\/启动输出}\/*...

怎样用汇编语言编写pwm电机调速程序
交流电机的pwm调速原理,主要通过一个频率可变的交流低频信号,去调制一个高频方波驱动电压,从而在电机电枢中得到一个随调制信号频率变化的驱动电流。于是交流电机电枢就在这个电流驱动下,产生与调制信号频率一致的旋转磁场,使得电机转子旋转速度发生改变。它的调制方式是调频。直流电机的pwm调速原理与交流电机...

帮忙解决下:使用51单片机,产生方波、锯齿波、三角波等波形,频率可调...
1、PWM固定占空比1:1,实现对称方波输出 2、方波后连接积分电路,可将方波变为同频率的三角波。实现以上功能较容易,且可实现的频率范围较宽。锯齿波实现方法:锯齿波实现方法稍显麻烦,不过硬件电路原理与三角波类似。区别在于锯齿波在一个周期内输出若干个占空比不同的方波,每个方波的占空比除了最后一个...

怎么用C写一个让51单片机发生一个频率40K标准的方波
一、主循环一直停留在产生方波那几句,这样的方式频率可以调到很准,但是要做别的事情必须用中断了。程序很简单,假如p1.0口产生方波:while(1){ i=3;while(i--!=0);p1^0=!p1^0;} 可以调i的值来调频率。二、利用硬件来产生。如果你的晶振是6M,ALE就是6M\/6=1M,需要二十五分频,得到40K...

相似回答