找回密码
 注册
关于网站域名变更的通知
查看: 279|回复: 2
打印 上一主题 下一主题

分享两个用TMS320F228335实现SPWM的源程序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-9-27 14:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 ssdgh 于 2021-9-27 14:35 编辑 - J) }1 }8 ?1 O! v0 [, A+ r

9 \5 U2 D2 ?* |5 M+ _* i
  •     本例载波频率为20KHz,或载波周期为50μs。DSP晶振10MHz,内部4倍频,时钟频率为40MHz,计数周期为25ns。假设调制波频率由外部输入(1~50Hz),并转换成合适的格式(本例为Q4格式)。调制系数M为0~0.9。死区时间1.6μs。最小删除脉宽3μs。
  •     主程序的工作是根据输入的调制波频率计算N、2N和M值。
  •     定时器采用连续增减计数方式。利用下溢中断,每个载波周期都产生一次中断,在每次中断都根据以下公式分别计算出下一个载波周期的三个比较值。并比较正负脉宽是否小于3μs,如果小于3μs则删除该脉冲。
  •     本例中的常数:
  • π倍载波周期:π5010-6228=42166秒,Q28格式
  • 载波频率:20000Hz2=40000Hz,Q1格式;
  • 定时器周期值:50μs/2/25ns=1000个计数周期;
  • 调制系数对调制波频率的比例系数:0.9/50=0.018221=37749,Q21格式;
  • 最小正脉宽:3μs/25ns=120个计数周期;
  • 最小负脉宽:47μs/25ns=1880个计数周期;
  • 弧度换算成度系数:360/2π24=917,Q4格式;
  • 2π/3212=8579弧度,Q12格式;
  • 4π/3212=17157弧度,Q12格式;
  • 2π212=25736弧度,Q12格式;
  •   .include "240x.h"  ;寄存器地址
  •   .global  _c_int0       ;全局化标号
  • ;--------------------------------------以下定义变量-----------------------------------------------------------
  • ST0 .set 0                    ;状态寄存器ST0
  • ST1 .set 1                    ;状态寄存器ST1
  •               .bss    TEMP,1          ;中间变量
  •               .bss    TEMP1,1         ;中间变量
  •               .bss    TEMP2,1         ;中间变量
  •               .bss    TEMP3,1         ;中间变量
  •               .bss    TEMP4,1         ;中间变量
  •               .bss    TEMP5,1         ;中间变量
  •               .bss    TEMP6,1         ;中间变量
  •               .bss    K_,1            ;第K个采样点
  •               .bss    PITC,1          ;π乘载波周期=42166,Q28格式
  •               .bss    F2M,1           ;调制系数对调制波频率的比例系数, Q21格式
  •               .bss    T_QUA,1        ; T_carr/4的定时器计数脉冲个数,Q0格式
  •               .bss    F_CARR,1        ;载波频率,Q1格式
  •               .bss    PMIN,1          ;最小正脉宽(脉冲个数),Q0格式
  •               .bss    PMAX,1          ;最小负脉宽(脉冲个数),Q0格式
  •               .bss    F_MODU,1        ;调制波频率,Q4格式
  •               .bss    N_,1            ;每个调制波周期的载波脉冲数,Q0格式
  •               .bss    M_,1             ;M值
  •               .bss    KMAX,1          ;2N,Q0格式
  •               .bss    ATOD,1           ;弧度换算成度系数917,Q4格式
  •               .bss  ACCH,1                  ;ACC高字保存单元
  •             .bss  ACCL,1                   ;ACC低字保存单元
  •             .bss  AR0_SAVE,1              ;AR0保存单元
  •             .bss  p_hi,1             ;p寄存器高字保存单元
  •             .bss  p_lo,1                 ;p寄存器低字保存单元
  • ;--------------------------------------CONTEXT段,定义保护现场数据区----------------------------
  • ST0_SAVE  .usect ".context",1   ;状态寄存器ST0保存单元
  • ST1_SAVE  .usect ".context",1   ;状态寄存器ST1保存单元
  • ;-------------------------------------- 定义主向量段---------------------------------------------
  • .sect  ".vectors"              ;定义主向量段
  • RESET  B  _c_int0          ;地址0000H,复位,优先级1
  • INT1   B  PHANTOM        ;地址0002H,INT1,优先级4
  • INT2   B  _C_INT2          ;地址0004H,INT2,优先级5
  • INT3   B  PHANTOM        ;地址0006H,INT3,优先级6
  • INT4   B  PHANTOM        ;地址0008H,INT4,优先级7
  • INT5   B  PHANTOM        ;地址000AH,INT5,优先级8
  • INT6   B  PHANTOM        ;地址000CH,INT6,优先级9
  • RESERVED  B  PHANTOM                        ;地址000EH,测试,优先级10
  • SW_INT8   B  PHANTOM                ;地址0010H,自定义软中断
  • SW_INT9   B  PHANTOM                ;地址0012H,自定义软中断
  • SW_INT10  B  PHANTOM                ;地址0014H,自定义软中断
  • SW_INT11  B  PHANTOM                ;地址0016H,自定义软中断
  • SW_INT12  B  PHANTOM                ;地址0018H,自定义软中断
  • SW_INT13  B  PHANTOM                ;地址001AH,自定义软中断
  • SW_INT14  B  PHANTOM                ;地址001CH,自定义软中断
  • SW_INT15  B  PHANTOM                ;地址001EH,自定义软中断
  • SW_INT16  B  PHANTOM                ;地址0020H,自定义软中断
  • TRAP           B  PHANTOM                        ;地址0022H,TRAP矢量
  • NMI                     B  PHANTOM                        ;地址0024H,NMI,优先级3
  • EMU_TRAP B  PHANTOM                        ;地址0026H,仿真Trap,优先级2
  • SW_INT20  B  PHANTOM                ;地址0028H,自定义软中断
  • SW_INT21  B  PHANTOM                ;地址002AH,自定义软中断
  • SW_INT22  B  PHANTOM                ;地址002CH,自定义软中断
  • SW_INT23  B  PHANTOM                ;地址002EH,自定义软中断
  • SW_INT24  B  PHANTOM                ;地址0030H,自定义软中断
  • SW_INT25  B  PHANTOM                ;地址0032H,自定义软中断
  • SW_INT26  B  PHANTOM                ;地址0034H,自定义软中断
  • SW_INT27  B  PHANTOM                ;地址0036H,自定义软中断
  • SW_INT28  B  PHANTOM                ;地址0038H,自定义软中断
  • SW_INT29  B  PHANTOM                ;地址003AH,自定义软中断
  • SW_INT30  B  PHANTOM                ;地址003CH,自定义软中断
  • SW_INT31  B  PHANTOM                ;地址003EH,自定义软中断
  • ;--------------------------------------定义子向量段----------------------------------------------------
  • .sect  ".pvecs"                ;定义子向量段
  • PVECTORS        B        PHANTOM                        ;偏移地址0000H
  •                         B        PHANTOM                          ;偏移地址0001H
  •                         B        PHANTOM                        ;偏移地址0002H
  •                         B        PHANTOM                        ;偏移地址0003H
  •                         B        PHANTOM                        ;偏移地址0004H
  •                         B        PHANTOM                        ;偏移地址0005H
  •                         B        PHANTOM                        ;偏移地址0006H
  •                         B        PHANTOM                        ;偏移地址0007H
  •                         B        PHANTOM                        ;偏移地址0008H
  •                         B        PHANTOM                        ;偏移地址0009H
  •                         B        PHANTOM                        ;偏移地址000AH
  •                         B        PHANTOM                        ;偏移地址000BH
  •                         B        PHANTOM                        ;偏移地址000CH
  •                         B        PHANTOM                        ;偏移地址000DH
  •                         B        PHANTOM                        ;偏移地址000EH
  •                         B        PHANTOM                        ;偏移地址000FH
  •                         B        PHANTOM                        ;偏移地址0010H
  •                         B        PHANTOM                        ;偏移地址0011H
  •                         B        PHANTOM                        ;偏移地址0012H
  •                         B        PHANTOM                        ;偏移地址0013H
  •                         B        PHANTOM                        ;偏移地址0014H
  •                         B        PHANTOM                        ;偏移地址0015H
  •                         B        PHANTOM                        ;偏移地址0016H
  •                         B        PHANTOM                        ;偏移地址0017H
  •                         B        PHANTOM                        ;偏移地址0018H
  •                         B        PHANTOM                        ;偏移地址0019H
  •                         B        PHANTOM                        ;偏移地址001AH
  •                         B        PHANTOM                        ;偏移地址001BH
  •                         B        PHANTOM                        ;偏移地址001CH
  •                         B        PHANTOM                        ;偏移地址001DH
  •                         B        PHANTOM                        ;偏移地址001EH
  •                         B        PHANTOM                        ;偏移地址001FH
  •                         B        PHANTOM                        ;偏移地址0020H
  •                         B        PHANTOM                        ;偏移地址0021H
  •                         B        PHANTOM                        ;偏移地址0022H
  •                         B        PHANTOM                        ;偏移地址0023H
  •                         B        PHANTOM                        ;偏移地址0024H
  •                         B        PHANTOM                        ;偏移地址0025H
  •                         B        PHANTOM                        ;偏移地址0026H
  •                         B        PHANTOM                        ;偏移地址0027H
  •                         B        PHANTOM                        ;偏移地址0028H
  •                         B        WXM                            ;偏移地址0029H
  •                         B        PHANTOM                        ;偏移地址002AH
  •                         B        PHANTOM                        ;偏移地址002BH
  •                         B        PHANTOM                        ;偏移地址002CH
  •                         B        PHANTOM                        ;偏移地址002DH
  •                         B        PHANTOM                        ;偏移地址002EH
  •                         B        PHANTOM                        ;偏移地址002FH
  •                         B        PHANTOM                        ;偏移地址0030H
  •                         B        PHANTOM                        ;偏移地址0031H
  •                         B        PHANTOM                        ;偏移地址0032H
  •                         B        PHANTOM                        ;偏移地址0033H
  •                         B        PHANTOM                        ;偏移地址0034H
  •                         B        PHANTOM                        ;偏移地址0035H
  •                         B        PHANTOM                        ;偏移地址0036H
  •                         B        PHANTOM                        ;偏移地址0037H
  •                         B        PHANTOM                        ;偏移地址0038H
  •                         B        PHANTOM                        ;偏移地址0039H
  •                         B        PHANTOM                        ;偏移地址003AH
  •                         B        PHANTOM                        ;偏移地址003BH
  •                         B        PHANTOM                        ;偏移地址003CH
  •                         B        PHANTOM                        ;偏移地址003DH
  •                         B        PHANTOM                        ;偏移地址003EH
  •                         B        PHANTOM                        ;偏移地址003FH
  •                         B        PHANTOM                        ;偏移地址0040H
  •                         B        PHANTOM                    ;偏移地址0041H
  • ;--------------------------------------以下是主程序-----------------------------------------------------
  •   .text
  • ;--------------------------------------系统初始化程序--------------------------------------------------
  • _c_int0        SETC   INTM              ;禁止中断
  •   CLRC  CNF               ;B0为数据存储区
  •   LDP    #224
  •   SPLK   #0000000000000100B,SCSR1 ;4倍频,CLKOUT 40MHz
  •   SPLK   #68H,WDCR        ;不用看门狗
  •   LDP    #225
  •   LACC  MCRA
  •   OR     #0FC0H             ;设置PWM1-6引脚
  •   SACL   MCRA
  • ;--------------------------------------中断初始化程序------------------------------------------------
  •   LDP    #0
  •   SPLK   #0FFH,IFR          ;清所有系统中断标志
  •   SPLK   #00000010B,IMR     ;开INT2中断
  •   LDP    #232
  •   SPLK   #0FFFH,EVAIFRA    ;清事件管理器A所有中断标志
  •   SPLK   #0FH,EVAIFRB
  •   SPLK   #0FH,EVAIFRC
  •   SPLK   #0200H,EVAIMRA     ;开T1下溢中断
  •   SPLK   #0,EVAIMRB          ;屏蔽所有中断
  •   SPLK   #0,EVAIMRC          ;屏蔽所有中断
  • ;--------------------------------------初始化事件管理器A程序-----------------------------------------
  •   SPLK   #1000,T1PR           ;T1周期值=1000
  •   SPLK   #1000,CMPR1         ;占空比初值 0%
  •   SPLK   #1000,CMPR2
  •   SPLK   #1000,CMPR3
  •   SPLK   #0000011001100110B,ACTRA ;引脚PWM1,3,5高有效,2,4,6低有效
  •   SPLK   #01F4H,DBTCONA     ;死区时间1*32*50ns=1.6uμs
  •   SPLK   #1000001000000000B,COMCONA ;允许比较,下溢重载
  •   SPLK   #0000100001000010B,T1CON ;连续增减计数方式,预分频=1
  •   CLRC  INTM                 ;开总中断
  • ;--------------------------------------变量初始化---------------------------------------------------------
  •               LDP     #6
  •               SPLK    #0,K_           ;K=0
  •               SPLK    #42166,PITC     ;π*T_carr =42166,Q28格式
  •               SPLK    #37749,F2M      ;F-M转换系数,Q21格式
  •               SPLK    #250,T_QUA   ;T_carr/4的定时器计数脉冲个数,Q0格式
  •               SPLK    #40000,F_CARR  ;载波频率,Q1格式
  •               SPLK    #120,PMIN       ;最小正脉宽(脉冲个数),Q0格式
  •               SPLK    #1880,PMAX      ;最小负脉宽时的最大正脉宽,Q0格式
  •               SPLK    #917,ATOD       ;Q4格式
  •               SPLK    #480,F_MODU    ;调试数据,Q4格式
  • ;--------------------------------------主循环-------------------------------------------------------------
  • CYCLE       LDP     #6
  •               CLRC   SXM
  •               LACC   F_MODU,13       ;调制波频率,Q4格式
  •               SACH   TEMP            ;右移3位,Q1格式
  •               LACC   F_CARR          ;载波频率,Q1格式
  •               RPT    #15
  •               SUBC  TEMP             ;计算N=F_carr/F_modu
  •               SACL   N_               ;保存N,Q0格式
  •               LACC   N_,1             ;2N
  •               SACL   KMAX           ;保存,Q0格式
  •               LT      F2M             ; F-M转换系数37749,Q21格式
  •               MPYU   F_MODU         ;Q4格式
  •               PAC
  •               SACH    M_             ;保存M,Q9格式
  •               B       CYCLE           ;循环
  • ;--------------------------------------假中断子程序---------------------------------------------------------
  • PHANTOM    RET                       ;假中断
  • ;--------------------------------------T1下溢中断处理子程序-----------------------------------------
  • _C_INT2      SST   #ST0,ST0_SAVE      ;保存现场ST0
  •   SST   #ST1,ST1_SAVE      ;保存ST1
  •   LDP   #6
  •   SACH  ACCH
  •   SACL  ACCL              ;保存ACC
  •   SPH    P_HI
  •   SPL    P_LO              ;保存 P
  •   MPY    #1              ;p<=T
  •   SPL    T_SAVE            ;保存 T
  •   LDP    #224
  •   LACC   PIVR,1            ;读偏移地址
  •   ADD    # PVECTORS       ;子向量表首地址
  •               BACC
  • WXM         LDP   #232
  •               SPLK   #0FFFH,EVAIFRA     ;清中断标志
  •               LDP    #6
  •               LT      PITC              ;π*T_carr =42166,Q28格式
  •               MPYU    K_                ;Q0格式
  •               PAC                       ;计算K*π*T_carr
  •               SACH   TEMP1            ;保存乘积,Q12格式
  •               LT      TEMP1
  •               MPYU    F_MODU         ;乘调制波频率,Q4格式
  •               PAC                      ;计算K*π*T_carr*T_modu
  •               RPT    #3
  •               ROR                     ;右移4位,Q12格式
  •               SACL   TEMP1           ;保存第1个角度值
  •               LACC   TEMP1
  •               ADD    #8579             ;加2π/3,Q12格式
  •               SACL   TEMP2            ;保存第2个角度值
  •               SUB     #25736            ;检测是否小于2π,Q12格式
  •               BCND   WXM1 ,LEQ       ;小于2π跳转
  •               SACL    TEMP2           ;否则保存
  • WXM1        LACC    TEMP1
  •               ADD     #17157           ;加4π/3,Q12格式
  •               SACL    TEMP3           ;保存第3个角度值
  •               SUB     #25736            ;检测是否小于2π,Q12格式
  •               BCND   WXM2 ,LEQ       ;小于2π跳转
  •               SACL    TEMP3           ; 否则保存
  • WXM2        LT       TEMP1           ;开始将第1个角度转换成度
  •               MPYU    ATOD             ;乘转换系数,Q4格式
  •               PAC
  •               SACH    TEMP1          ;保存第1个角度值,Q0格式
  •               LACC    #SIN_ENTRY     ;SIN表入口地址
  •               ADD     TEMP1           ;偏移量
  •               TBLR    TEMP1           ;保存第1个SIN值,Q14格式有符号数
  •               LT       TEMP1
  •               MPY     M_              ;乘M,Q9格式
  •               PAC                       ;Q23格式
  •               SACH    TEMP1,7         ;相当于右移9位,Q14格式有符号数
  •               LACC    TEMP1
  •               ADD     #1,14            ;加+1
  •               SACL    TEMP1           ;保存, Q14格式
  •               LT       T_QUA          ;T_carr/4=250,Q0格式
  •               MPYU     TEMP1
  •               PAC
  •               SACH    TEMP1,2         ;相当于右移14位,保存 为Q0格式
  •               LT       TEMP2          ;开始将第2个角度转换成度
  •               MPYU    ATOD
  •               PAC
  •               SACH    TEMP2          ;保存第2个角度值,Q0格式
  •               LACC    #SIN_ENTRY     ;SIN表入口地址
  •               ADD     TEMP2          ;偏移量
  •               TBLR    TEMP2           ;保存第2个SIN值,Q14格式有符号数
  •               LT       TEMP2
  •               MPY     M_              ;乘M,Q9格式
  •               PAC                       ;Q23格式
  •               SACH    TEMP2,7         ;相当于右移9位,Q14格式有符号数
  •               LACC    TEMP2
  •               ADD     #1,14            ;加+1
  •               SACL    TEMP2           ;保存, Q14格式
  •               LT       T_QUA          ;T_carr/4=250,Q0格式
  •               MPYU    TEMP2
  •               PAC
  •               SACH    TEMP2,2         ;相当于右移14位,保存 为Q0格式
  •               LT       TEMP3           ;开始将第3个角度转换成度
  •               MPYU    ATOD
  •               PAC
  •               SACH    TEMP3          ;保存第3个角度值,Q0格式
  •               LACC    #SIN_ENTRY     ;SIN表入口地址
  •               ADD     TEMP3          ;偏移量
  •               TBLR    TEMP3           ;保存第3个SIN值,Q14格式有符号数
  •               LT       TEMP3
  •               MPY     M_              ;乘M,Q9格式
  •               PAC                       ;Q23格式
  •               SACH    TEMP3,7         ;相当于右移9位,Q14格式有符号数
  •               LACC    TEMP3
  •               ADD     #1,14            ;加+1
  •               SACL    TEMP3           ;保存, Q14格式
  •               LT       T_QUA          ;T_carr/4=250,Q0格式
  •               MPYU    TEMP3
  •               PAC
  •               SACH    TEMP3,2         ;相当于右移14位,保存 为Q0格式
  •               LACC    K_
  •               ADD     #1               ;K+1
  •               SACL    K_
  •               LT      PITC              ;π*T_carr =42166,Q28格式
  •               MPYU    K_                ;Q0格式
  •               PAC                       ;计算K*π*T_carr
  •               SACH   TEMP4            ;保存乘积,Q12格式
  •               LT      TEMP4
  •               MPYU   F_MODU         ;乘调制波频率,Q4格式
  •               PAC                      ;计算K*π*T_carr*T_modu
  •               RPT    #3
  •               ROR                     ;右移4位,Q12格式
  •               SACL   TEMP4           ;保存第4个角度值
  •               LACC   TEMP4
  •               ADD    #8579             ;加2π/3,Q12格式
  •               SACL   TEMP5            ;保存第5个角度值
  •               SUB     #25736            ;检测是否小于2π,Q12格式
  •               BCND   WXM3 ,LEQ       ;小于2π跳转
  •               SACL    TEMP5           ;否则保存
  • WXM3        LACC    TEMP4
  •               ADD     #17157           ;加4π/3,Q12格式
  •               SACL    TEMP6           ;保存第6个角度值
  •               SUB     #25736            ;检测是否小于2π,Q12格式
  •               BCND   WXM4 ,LEQ       ;小于2π跳转
  •               SACL    TEMP6           ;否则保存
  • WXM4        LT       TEMP4           ;开始将第4个角度转换成度
  •               MPYU    ATOD             ;乘转换系数,Q4格式
  •               PAC
  •               SACH    TEMP4          ;保存第4个角度值,Q0格式
  •               LACC    #SIN_ENTRY     ;SIN表入口地址
  •               ADD     TEMP4           ;偏移量
  •               TBLR    TEMP4           ;保存第4个SIN值,Q14格式有符号数
  •               LT       TEMP4
  •               MPY     M_              ;乘M,Q9格式
  •               PAC                       ;Q23格式
  •               SACH    TEMP4,7         ;相当于右移9位,Q14格式有符号数
  •               LACC    TEMP4
  •               ADD     #1,14            ;加+1
  •               SACL    TEMP4           ;保存, Q14格式
  •               LT       T_QUA          ;T_carr/4=250,Q0格式
  •               MPYU     TEMP4
  •               PAC
  •               SACH    TEMP4,2         ;相当于右移14位,保存 为Q0格式
  •               LT       TEMP5          ;开始将第5个角度转换成度
  •               MPYU    ATOD
  •               PAC
  •               SACH    TEMP5          ;保存第5个角度值,Q0格式
  •               LACC    #SIN_ENTRY     ;SIN表入口地址
  •               ADD     TEMP5          ;偏移量
  •               TBLR    TEMP5           ;保存第5个SIN值,Q14格式有符号数
  •               LT       TEMP5
  •               MPY     M_              ;乘M,Q9格式
  •               PAC                       ;Q23格式
  •               SACH    TEMP5,7         ;相当于右移9位,Q14格式有符号数
  •               LACC    TEMP5
  •               ADD     #1,14            ;加+1
  •               SACL    TEMP5           ;保存, Q14格式
  •               LT       T_QUA          ;T_carr/4=250,Q0格式
  •               MPYU     TEMP5
  •               PAC
  •               SACH    TEMP5,2         ;相当于右移14位,保存 为Q0格式
  •               LT       TEMP6           ;开始将第6个角度转换成度
  •               MPYU    ATOD
  •               PAC
  •               SACH    TEMP6          ;保存第6个角度值,Q0格式
  •               LACC    #SIN_ENTRY     ;SIN表入口地址
  •               ADD     TEMP6          ;偏移量
  •               TBLR    TEMP6           ;保存第6个SIN值,Q14格式有符号数
  •               LT       TEMP6
  •               MPY     M_              ;乘M,Q9格式
  •               PAC                       ;Q23格式
  •               SACH    TEMP6,7         ;相当于右移9位,Q14格式有符号数
  •               LACC    TEMP6
  •               ADD     #1,14            ;加+1
  •               SACL    TEMP6           ;保存, Q14格式
  •               LT       T_QUA          ;T_carr/4=250,Q0格式
  •               MPYU     TEMP6
  •               PAC
  •               SACH    TEMP6,2         ;相当于右移14位,保存 为Q0格式
  •               LACC    K_
  •               ADD     #1               ;K+1
  •               SACL    K_
  •               SUB      KMAX           ;比较K是否小于2N
  •               BCND   WXM5,LT         ;是则跳转
  •               SPLK    #0,K_             ;否则K=0
  • WXM5        LACC   TEMP1
  •               ADD    TEMP4            ;计算脉宽
  •               SACL   TEMP1             ;暂存
  •               SUB     PMIN              ;检测是否小于最小正脉宽3微秒
  •               BCND   WXM6,GT          ;不是继续
  •               SPLK    #0,TEMP1          ;是则删除窄脉冲
  •               B        WXM7
  • WXM6        LACC   TEMP1             ;检测是否小于最小负脉宽3微秒
  •               SUB     PMAX
  •               BCND   WXM7,LT          ;不是继续
  •               SPLK    #2000,TEMP1       ;是则删除窄脉冲
  • WXM7        LACC   #2000              ;2倍周期值
  •               SUB     TEMP1            ;计算比较值1
  •               ROR                       ;除2
  •               LDP     #232               ;指向事件管理器A
  •               SACL   CMPR1            ;保存比较值1
  •               LDP     #6
  •               LACC   TEMP2
  •               ADD    TEMP5            ;计算脉宽
  •               SACL   TEMP2             ;暂存
  •               SUB     PMIN              ;检测是否小于最小正脉宽3微秒
  •               BCND   WXM8,GT          ;不是继续
  •               SPLK    #0,TEMP2          ;是则删除窄脉冲
  •               B        WXM9
  • WXM8        LACC   TEMP2             ;检测是否小于最小负脉宽3微秒
  •               SUB     PMAX
  •               BCND   WXM9,LT          ;不是继续
  •               SPLK    #2000,TEMP2       ;是则删除窄脉冲
  • WXM9        LACC   #2000              ;2倍周期值
  •               SUB     TEMP2            ;计算比较值2
  •               ROR                       ;除2
  •               LDP     #232               ;指向事件管理器A
  •               SACL   CMPR2            ;保存比较值2
  •               LDP     #6
  •               LACC   TEMP3
  •               ADD    TEMP6            ;计算脉宽
  •               SACL   TEMP3             ;暂存
  •               SUB     PMIN              ;检测是否小于最小正脉宽3微秒
  •               BCND   WXM10,GT         ;不是继续
  •               SPLK    #0,TEMP3          ;是则删除窄脉冲
  •               B        WXM11
  • WXM10       LACC   TEMP3             ;检测是否小于最小负脉宽3微秒
  •               SUB     PMAX
  •               BCND   WXM11,LT          ;不是继续
  •               SPLK    #2000,TEMP3       ;是则删除窄脉冲
  • WXM11       LACC   #2000              ;2倍周期值
  •               SUB     TEMP3            ;计算比较值3
  •               ROR                       ;除2
  •               LDP     #232               ;指向事件管理器A
  •               SACL   CMPR3             ;保存比较值3
  •               LDP     #6                 ;恢复现场
  •   LT      P_LO               ;恢复P
  •   MPY    #1
  •   LPH     P_HI
  •   LT      T_SAVE            ;恢复T
  •   LACC   ACCH,16
  •   ADDS   ACCL              ;恢复ACC
  •   LDP     #0
  •   LST     #ST1,ST1_SAVE     ; 恢复ST1
  •   LST     #ST0,ST0_SAVE     ; 恢复ST0
  •   CLRC   INTM              ; 开中断
  •   RET                        ; 返回
  •   .data
  • ;--------------------------------------数据段-------------------------------------------------------------
  • SIN_ENTRY  .word 0                   ;SIN值表,D1格式有符号数
  •              .word 286,572,857,1143,1428
  •              .word 1713,1997,2280,2563,2845
  •              .word 3126,3406,3686,3964,4240
  •              .word 4516, 4790,5063,5334,5604
  •            .word 5872,6138,6402,6664, 6924
  •            .word 7182,7438,7692,7943,8192
  •            .word 8438,8682,8923,9162,9397
  •            .word 9630,9860,10087,10311,10531
  •            .word 10749,10963,11174,11381,11585
  •            .word 11786,11982,12176,12365,12551
  •            .word 12733,12911,13085,13255,13421
  •            .word 13583,13741,13894,14044,14189
  •            .word 14330,14466,14598,14726,14849
  •            .word 14968,15082,15191,15296,15396
  •            .word 15491,15582,15668,15749,15826
  •            .word 15897,15964,16026,16083,16135
  •            .word 16182,16225,16262,16294,16322
  •            .word 16344,16362,16374,16382,16384            ;90
  •            .word 16382,16374,16362,16344,16322
  •            .word 16294,16262,16225,16182,16135
  •            .word 16083,16026,15964,15897,15826
  •            .word 15749,15668,15582,15491,15396
  •            .word 15296,15191,15082,14968,14849
  •            .word 14726,14598,14466,14330,14189
  •            .word 14044,13894,13741,13583,13421
  •            .word 13255,13085,12911,12733,12551
  •            .word 12365,12176,11982,11786,11585
  •            .word 11381,11174,10963,10749,10531
  •            .word 10311,10087,9860,9630,9397
  •            .word 9162,8923,8682,8438,8192
  •            .word 7943,7692,7438,7182,6924
  •            .word 6664,6402,6138,5872,5604
  •            .word 5334,5063,4790,4516,4240
  •            .word 3964,3686,3406,3126,2845
  •            .word 2563,2280,1997,1713,1428
  •            .word 1143,857,572,286, 0                      ;180
  •            .word 65250,64964,64679,64393,64108
  •            .word 63823,63539,63256,62973,62691
  •            .word 62410,62130,61850,61572,61296
  •            .word 61020,60746,60473,60202,59932
  •            .word 59664,59398,59134,58872,58612
  •            .word 58354,58098,57844,57593,57344
  •            .word 57098,56854,56613,56374,56139
  •            .word 55906,55676,55449,55225,55005
  •            .word 54787,54573,54362,54155,53951
  •            .word 53750,53554,53360,53171,52985
  •            .word 52803,52625,52451,52281,52115
  •            .word 51953,51795,51642,51492,51347
  •            .word 51206,51070,50938,50810,50687
  •            .word 50568,50454,50345,50240,50140
  •            .word 50045,49954, 49868,49787,49710
  •            .word 49639,49572,49510,49453,49401
  •            .word 49354,49311,49274,49242,49214
  •            .word 49192,49174,49162,49154,49152                ;270
  •            .word 49154,49162,49174,49192,49214
  •            .word 49242,49274,49311,49354,49401
  •            .word 49453,49510,49572,49639,49710
  •            .word 49787,49868,49954,50045,50140
  •            .word 50240,50345,50454,50568,50687
  •            .word 50810,50938,51070,51206,51347
  •            .word 51492,51642,51795,51953,52115
  •            .word 52281,52451,52625,52803,52985
  •            .word 53171,53360,53554,53750,53951
  •            .word 54155,54362,54573,54787,55005
  •            .word 55225,55449,55676,55906,56139
  •            .word 56374,56613,56854,57098,57344
  •            .word 57593,57844,58098,58354,58612
  •            .word 58872,59134,59398,59664,59932
  •            .word 60202,60473,60746,61020,61296
  •            .word 61572,61850,62130,62410,62691
  •            .word 62973,63256,63539,63823,64108
  •            .word 64393,64679,64964,65250 ,0                    ;360
  •            .end
  • - X$ n0 X  n$ ^, q( {

/ r- [  x9 D! x. A6 Z
  • TA的每日心情
    开心
    2022-12-27 15:07
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2021-9-27 14:37 | 只看该作者
    定时器采用的是连续增减计数方式

    该用户从未签到

    3#
    发表于 2021-9-27 19:24 | 只看该作者
    调制系数对调制波频率的比例系数是怎么确定的呢
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-15 08:03 , Processed in 0.140625 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表