⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 em78p153designpwmout.asm

📁 用EM78P153设计的PWM源代码,内有详细说明.
💻 ASM
字号:
;以纯软件方式在低速MCU上实现高速PWM的方法
;作为消费电子的开发人员来说,控制成本是头等待大事,因此在开发过程中以各种方法来控制成本,
;下面介绍一下在4MHZ的MCU上实现20KHz以上的可调PWM输出:
;程序以EMC78P153为MCU,使用内部RC振荡器,频率为4MHz
MAIN:
    WDTC
;=============================
    JBC MOTOR_PLUS_F
    JMP PWM_MOTOR_PLUS
    JBC MOTOR_MINUS_F
    JMP PWM_MOTOR_MINUS
    CLR PORT6
    CALL DELAY_80US
    CALL SCAN_KEY
    JMP PWM_MOTOR_EXIT
;=============================
PWM_MOTOR_PLUS:
    BC MOTOR_2L_P
    BS MOTOR_2H_P
    BC MOTOR_1H_P
    
    BS MOTOR_1L_P
    CALL SCAN_KEY
    MOV A,MOTOR_POWER
    MOV WR0,A
    DJZ WR0;0.25*4=1US
    JMP $-1
    
    MOV A,MOTOR_POWER
    SUB A,@_MAX_MOTOR_POWER
    MOV WR0,A
    JBC Z_F
    JMP PWM_MOTOR_PLUS_EXIT
    BC MOTOR_1L_P
    DJZ WR0;0.25*4=1US
    JMP $-1
PWM_MOTOR_PLUS_EXIT:
    JMP PWM_MOTOR_EXIT
    
;=============================
PWM_MOTOR_MINUS:
    /*
    BC MOTOR_1L_P
    BS MOTOR_1H_P
    BC MOTOR_2H_P
    
    BS MOTOR_2L_P
    */
    MOV A,@0B00100100
    MOV PORT6,A
    
    CALL SCAN_KEY
    MOV A,MOTOR_POWER
    MOV WR0,A
    DJZ WR0;0.25*4=1US
    JMP $-1
    
    MOV A,MOTOR_POWER
    SUB A,@_MAX_MOTOR_POWER
    MOV WR0,A
    JBC Z_F
    JMP PWM_MOTOR_MINUS_EXIT
    BC MOTOR_2L_P
    DJZ WR0;0.25*4=1US
    JMP $-1
PWM_MOTOR_MINUS_EXIT:
    JMP PWM_MOTOR_EXIT
    
;=============================
PWM_MOTOR_EXIT:
    JMP MAIN
;==========================================================
    
;原理其实很简单,因为一个指令周期为0.5US,如果只是控制I/O的高低电平,理论上的PWM频率就可以做的很高,实际应用中,
;还要进行键扫描等处理,但做到20KHZ还是比较轻松的!
;这里只是提供一个思路,如果大家发现有什么好的方法可以相互交流!!!

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -