打印
[技术问答]

新唐 N76E003 单片机8051汇编 PWM测试程序

[复制链接]
521|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
注销|  楼主 | 2020-9-8 10:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

测试PWM5输出端口P0.3,LED闪烁端口是P1.5

;以下是汇编代码

;功能寄存器定义

SFRS    EQU    91H
TA        EQU    0C7H

PWMCON0    EQU    0D8H
PWMCON1    EQU    0DFH
CKCON    EQU    08EH
PWMPL    EQU    0D9H
PWMPH    EQU    0D1H
PWM0L    EQU    0DAH
PWM0H    EQU    0D2H
PWM1L    EQU    0DBH
PWM1H    EQU    0D3H
PWM2L    EQU    0DCH
PWM2H    EQU    0D4H
PWM3L    EQU    0DDH
PWM3H    EQU    0D5H
PWM4L    EQU    0CCH;Page1
PWM4H    EQU    0C4H;Page1
PWM5L    EQU    0CDH;Page1
PWM5H    EQU    0C5H;Page1
PIOCON0    EQU    0DEH
PIOCON1    EQU    0C6H
PDTEN    EQU    0F9H
PDTCNT    EQU    0FAH
PMEN    EQU    0FBH
PMD        EQU    0FCH
PBD        EQU    0D7H
PNP        EQU    0D6H
PWMINTC    EQU    0B7H
P0M1    EQU    0B1H
P0M2    EQU    0B2H
P1M1    EQU    0B3H
P1M2    EQU    0B4H
P2S        EQU    0B5H
P3M1    EQU    0ACH
P3M2    EQU    0ADH
CKDIV    EQU    095H;系统时钟除频
;功能位定义
CLRPWM    BIT    PWMCON0.4
PWMF    BIT    PWMCON0.5
LOAD    BIT    PWMCON0.6
PWMRUN    BIT    PWMCON0.7

;程序入口
ORG    0000H
LJMP    MAIN
ORG    0100H
MAIN:
    ANL    P1M1,#11011111B
    ORL    P1M2,#00100000B;P1.5推挽
    ANL    P0M1,#11110111B
    ORL    P0M2,#00001000B;P0.3推挽
    MOV    PIOCON0,#00100000B;设置P0.3用作PWM5输出
    ORL    PWMCON1,#00000011B;PWM时钟为系统时钟16M的1/8=2Mhz
    CLR    CLRPWM
    ANL    PWMCON1,#00111111B;群组模式禁止
   
    MOV    PWMPH,#07H
    MOV    PWMPL,#0CFH
;PWM frequency = Fpwm/((PWMPH,PWMPL) + 1) <Fpwm = Fsys/PWM_CLOCK_DIV>   
;               = (16MHz/8)/(0x7CF + 1)                                
;               = 1KHz (1ms)

;载入PWM5的占空比值
    MOV    TA,#0AAH
    MOV    TA,#55H
    ORL    SFRS,#00000001B    ;Page1
    MOV    PWM5H,#02H
    MOV    PWM5L,#0CFH
    MOV    TA,#0AAH
    MOV    TA,#55H
    ANL    SFRS,#11111110B    ;Page0
    SETB    LOAD        ;载入占空比相关数值
    SETB    PWMRUN        ;运行PWM
    ;LJMP    $   
   
LED:   
    SETB    P1.5
    LCALL    DL500MS
    CLR        P1.5
    LCALL    DL500MS
    LJMP    LED
   
DL500MS: ;误差 0us
    MOV R7,#0F1H
DL1:
    MOV R6,#48H
DL0:
    MOV R5,#0E5H
    DJNZ R5,$
    DJNZ R6,DL0
    DJNZ R7,DL1
    NOP
    NOP
    RET
END

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

56

主题

1499

帖子

2

粉丝