STC12 系列单片机的PWM 输出汇编语言示例程序 对于以下程序我的理解是:equ 是一个符号定义伪指令 pulse_width_max equ 0f0HMOV A,#pulse_width_max 它的意思是:将 pulse_width_max里的值作为数值赋到寄存器 A 里.MOV A,pulse_width_max 它的意思是:将 pulse_width_max 里的值作为地址赋到寄存器 A 里. 相关帖子>>>: • 我的8 个 PWM 给你参考(2774 字)coody[63 次]2006-8-29 15:01:43 ;************************************************************** • ;************************************************************** • T0interrupt: ;max 53T • PUSH PSW • PUSH ACC • • ;*************************** 30T *********************************** • MOV P1,PWM_TEMP • • INC PWM_DUTY • MOV A,PWM_DUTY • JNZ L_PWM • MOV PWM_TEMP,PWM_TEMP1 • SJMP L_QuitPWM • • L_PWM: • CJNE A,PWM0,L_NotClearPWM0 • SETB B_PWM0 • L_NotClearPWM0: • • CJNE A,PWM1,L_NotClearPWM1 • SETB B_PWM1 • L_NotClearPWM1: • • CJNE A,PWM2,L_NotClearPWM2 • SETB B_PWM2 • L_NotClearPWM2: • • CJNE A,PWM3,L_NotClearPWM3 • SETB B_PWM3 • L_NotClearPWM3: • • CJNE A,PWM4,L_NotClearPWM4 • SETB B_PWM4 • L_NotClearPWM4: • • CJNE A,PWM5,L_NotClearPWM5 • SETB B_PWM5 • L_NotClearPWM5: • • CJNE A,PWM6,L_NotClearPWM6 • SETB B_PWM6 • L_NotClearPWM6: • • CJNE A,PWM7,L_NotClearPWM7 • SETB B_PWM7 • L_NotClearPWM7: • L_QuitPWM: • ;************************************************************** • • L_QuitT0Interrupt: • POP ACC • POP PSW • RETI ;这是呼吸灯的程序,PWM 从P0.0 输出 ORG 00H SJMP MAIN ORG 000BH LJMP TIME0 ORG 001BH JMP TI 个ME1 ORG 0030H MAIN: MOV SP,#70H MOV TMOD,#21H MOV 30H,#50 MOV R7,30H MOV R6,#100 MOV TL0 ,#LOW(65536-15000) MOV TH0,#HIGH(65536-15000) MOV TL1,#(256-200) MOV TH1,#(256-200) MOV TCON,#00H SETB PT1 SETB EA SETB ET0 SETB ET1 SETB TR0 SETB TR1 SJMP $ TIME1: DJNZ R7,T1_1 ; MOV R7,30H CLR P0.0 T1_1: DJNZ R6,T1_END MOV R7,30H MOV R6,#100 SETB P0.0 T1_END: RETI TIME0: MOV TL0 ,#LOW(65536-15000) MOV TH0,#HIGH(65536-15000) JB F0,T0_1 INC 30H MOV A,#99 CJNE A,30H,T0_END SETB F0 SJMP T0_END T0_1: DEC 30H MOV A,#01 CJNE A,30H,T0_END CLR F0 T0_END: RETI