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

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
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-02-08
设DAC地址为8000H。nbsp;PWM:nbsp;MOVnbsp;R7,#00Hnbsp;;初始化R7为0nbsp;PUSHnbsp;ACCnbsp;;把占空比存到A,保护占空比nbsp;MOVnbsp;DPTR,#8000Hnbsp;;指向DAC端口nbsp;PWM_HI:nbsp;MOVnbsp;A,#00Hnbsp;;高电压脉宽nbsp;MOVXnbsp;@DPTR,Anbsp;POPnbsp;ACCnbsp;;获得ACC中的占空比nbsp;PUSHnbsp;ACCnbsp;INCnbsp;R7nbsp;CJNEnbsp;A,R7,PWM_HInbsp;;高脉宽未到,则继续循环nbsp;PWM_LOW:MOVnbsp;A,#0FFHnbsp;MOVXnbsp;@DPTR,Anbsp;;输出低脉宽nbsp;INCnbsp;R7nbsp;CJNEnbsp;R7,#0FFH,PWM_LOWnbsp;;达到255,即满一周期,返回nbsp;POPnbsp;ACCnbsp;RETorORGnbsp;OOOOHnbsp;MOVnbsp;A,#00Hnbsp;WW:nbsp;MOVnbsp;P0,Anbsp;INCnbsp;Anbsp;LCALLnbsp;DELAYnbsp;CJNEnbsp;A,#0FFH,WWnbsp;WW1:nbsp;DECnbsp;Anbsp;MOVnbsp;P0,Anbsp;LCALLnbsp;DELAYnbsp;CJNEnbsp;A,#00H,WW1nbsp;SJMPnbsp;WWnbsp;DELAY:nbsp;MOVnbsp;RO,#05Hnbsp;DEL1:nbsp;MOVnbsp;R1,#05Hnbsp;DEL2:nbsp;NOPnbsp;DJNZnbsp;R1,DEL2nbsp;DJNZnbsp;R0,DEL1nbsp;RETnbsp;END
第2个回答  2008-06-25
用汇编?用过C51编写产生PWM信号。