51汇编学习-51单片机汇编写40%占空比pwm

51单片机汇编写40%占空比pwm

			LJMP MAIN;
			ORG 000BH;
			LJMP ITP0;
			ORG 0100H;
MAIN:		ACALL PT0M0;
			MOV A,#00;
			MOV 30H,#4;
PT0M0:		MOV TMOD,#02H;Initialize FANGSHI ER mode 
			MOV TL0,#0CEH;Timing 50Us
			MOV TH0,#0CEH;
			SETB ET0;
			SETB EA;
			SETB TR0;
			RET
ITP0:		PUSH PSW;			
			INC A;			
			CJNE A ,30H,AAA;
			MOV A,#0;
			MOV R3,30H;
			CJNE R3,#4,BBB
			MOV 30H,#6;
			AJMP AAA;
BBB:		MOV 30H,#4;
AAA:	   	MOV R3,30H;
			CJNE R3,#4,CCC
			SETB P1^0;
			AJMP DDD;
CCC:		CLR P1^0;						
DDD:		POP PSW;
			RETI
			END

代码思路

Created with Raphaël 2.2.0 初始化 中断/主函数 进入定时器中断 ACC加一 ACC是否等于30H ACC清零 30H是否等于4 30H赋值6 30H是否等于4 p1.0高电平 中断返回 定时器0工作 在方式二,定 时50us,30H=4 主函数死循环 p1.0低电平 30H赋值4 yes no yes no yes no yes no

代码效果

在这里插入图片描述

  • 5
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
好的,我可以为您提供一份汇编代码示例,但需要先了解一些基础知识。 首先,PWM(脉冲宽度调制)波是一种周期性的数字信号,在单片机中可以使用定时器/计数器来产生。占空比是高电平与周期之比,可以通过设置定时器计数值和比较值来控制。 在51单片机中,有两个定时器/计数器,分别为Timer0和Timer1。以下是一个使用Timer0产生可调占空比PWM波的汇编代码示例: ``` ; 定义端口和常量 PWM_PORT equ P1 ; PWM输出端口 PWM_FREQ equ 100 ; PWM频率为100Hz PWM_DUTY equ 50 ; PWM占空比为50% ; 初始化Timer0 MOV TMOD, #0 ; 定时器模式,使用模式1 MOV TH0, #0 ; 定时器初值为0 MOV TL0, #0 ; 定时器初值为0 ; 计算定时器计数值和比较值 MOV A, #256 ; Timer0为8位计数器,最大计数值为256 MOV B, #((10000/PWM_FREQ)/256) ; 计算定时器计数值 MOV R1, #((PWM_DUTY*256)/100) ; 计算占空比对应的比较值 ; 开始产生PWMPWM_LOOP: SETB PWM_PORT ; 设置PWM输出端口为高电平 MOV TH0, B ; 设置定时器计数值 MOV TL0, #0 ; 定时器初值为0 SETB TR0 ; 启动Timer0 DJNZ R1, $ ; 比较值不为0时继续输出高电平 CLR TR0 ; 停止Timer0 CLR PWM_PORT ; 设置PWM输出端口为低电平 MOV TH0, A ; 设置定时器计数值 MOV TL0, #0 ; 定时器初值为0 SETB TR0 ; 启动Timer0 DJNZ R1, PWM_LOOP ; 比较值不为0时继续输出低电平 CLR TR0 ; 停止Timer0 SJMP PWM_LOOP ; 循环输出PWM波 ``` 在上述代码中,通过设置Timer0的计数值和比较值,实现了产生可调占空比PWM波。其中,变量B表示定时器计数值,变量R1表示占空比对应的比较值,通过循环输出高电平和低电平来实现PWM波的产生。 需要注意的是,上述代码中的PWM输出端口为P1口,您需要根据实际硬件连接情况进行修改。另外,由于Timer0的计数值和比较值的设置与PWM频率和占空比有关,需要根据实际要求进行计算和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sinaryz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值