用51单片机进行pwm实现(具有发送端和接收端)

来源:百度知道 编辑:UC知道 时间:2024/06/20 23:54:40
1.接收端通过普通I/O口实现PWM功能,如P1.X
2.发送端用A/D测出电位器输出的模拟电压转换后得到数字量,将结果通过串口发送给接收端.
3.接收端将接收到的数据和PWM波形的正脉冲宽度相关联,通过示波观察波形变化.
4.接收端计算机输出PWM波形的占空比,并通过LED显示占控比值.
5.制定通信协议
希望把汇编程序写出来啊,最好把说下怎么连的.谢谢了哦
注意要用串口发送出去啊
求大家了啊
我快要崩溃了

设DAC地址为8000H。
PWM: MOV R7,#00H ;初始化R7为0
PUSH ACC ;把占空比存到A,保护占空比
MOV DPTR,#8000H ;指向DAC端口
PWM_HI: MOV A,#00H ;高电压脉宽
MOVX @DPTR,A
POP ACC ;获得ACC中的占空比
PUSH ACC
INC R7
CJNE A,R7,PWM_HI ;高脉宽未到,则继续循环
PWM_LOW:MOV A,#0FFH
MOVX @DPTR,A ;输出低脉宽
INC R7
CJNE R7,#0FFH,PWM_LOW ;达到255,即满一周期,返回
POP ACC
RET

or

ORG OOOOH
MOV A,#00H
WW: MOV P0,A
INC A
LCALL DELAY
CJNE A,#0FFH,WW
WW1: DEC A
MOV P0,A
LCALL DELAY
CJNE A,#00H,WW1
SJMP WW
DELAY: MOV RO,#05H
DEL1: MOV R1,#05H
DEL2: NOP
DJNZ R1,DEL2
DJNZ R0,DEL1
RET
END

用汇编?用过C51编写产生PWM信号。