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

;测试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

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值