第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