找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2780|回复: 1
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
ID:629815 发表于 2019-10-25 09:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
分享两个用228335实现SPWM的文档
DSP28335实现SPWM.docx (161.92 KB, 下载次数: 20)
DSP采样SPWM程序.doc (127.5 KB, 下载次数: 16)

源程序:
  1.     本例载波频率为20KHz,或载波周期为50μs。DSP晶振10MHz,内部4倍频,时钟频率为40MHz,计数周期为25ns。假设调制波频率由外部输入(1~50Hz),并转换成合适的格式(本例为Q4格式)。调制系数M为0~0.9。死区时间1.6μs。最小删除脉宽3μs。
  2.     主程序的工作是根据输入的调制波频率计算N、2N和M值。
  3.     定时器采用连续增减计数方式。利用下溢中断,每个载波周期都产生一次中断,在每次中断都根据以下公式分别计算出下一个载波周期的三个比较值。并比较正负脉宽是否小于3μs,如果小于3μs则删除该脉冲。
  4.     本例中的常数:
  5. π倍载波周期:π5010-6228=42166秒,Q28格式
  6. 载波频率:20000Hz2=40000Hz,Q1格式;
  7. 定时器周期值:50μs/2/25ns=1000个计数周期;
  8. 调制系数对调制波频率的比例系数:0.9/50=0.018221=37749,Q21格式;
  9. 最小正脉宽:3μs/25ns=120个计数周期;
  10. 最小负脉宽:47μs/25ns=1880个计数周期;
  11. 弧度换算成度系数:360/2π24=917,Q4格式;
  12. 2π/3212=8579弧度,Q12格式;
  13. 4π/3212=17157弧度,Q12格式;
  14. 2π212=25736弧度,Q12格式;
  15.   .include "240x.h"  ;寄存器地址
  16.   .global  _c_int0       ;全局化标号
  17. ;--------------------------------------以下定义变量-----------------------------------------------------------
  18. ST0 .set 0                    ;状态寄存器ST0
  19. ST1 .set 1                    ;状态寄存器ST1
  20.               .bss    TEMP,1          ;中间变量
  21.               .bss    TEMP1,1         ;中间变量
  22.               .bss    TEMP2,1         ;中间变量
  23.               .bss    TEMP3,1         ;中间变量
  24.               .bss    TEMP4,1         ;中间变量
  25.               .bss    TEMP5,1         ;中间变量
  26.               .bss    TEMP6,1         ;中间变量
  27.               .bss    K_,1            ;第K个采样点
  28.               .bss    PITC,1          ;π乘载波周期=42166,Q28格式
  29.               .bss    F2M,1           ;调制系数对调制波频率的比例系数, Q21格式
  30.               .bss    T_QUA,1        ; T_carr/4的定时器计数脉冲个数,Q0格式
  31.               .bss    F_CARR,1        ;载波频率,Q1格式
  32.               .bss    PMIN,1          ;最小正脉宽(脉冲个数),Q0格式
  33.               .bss    PMAX,1          ;最小负脉宽(脉冲个数),Q0格式
  34.               .bss    F_MODU,1        ;调制波频率,Q4格式
  35.               .bss    N_,1            ;每个调制波周期的载波脉冲数,Q0格式
  36.               .bss    M_,1             ;M值
  37.               .bss    KMAX,1          ;2N,Q0格式
  38.               .bss    ATOD,1           ;弧度换算成度系数917,Q4格式
  39.               .bss  ACCH,1                  ;ACC高字保存单元
  40.             .bss  ACCL,1                   ;ACC低字保存单元
  41.             .bss  AR0_SAVE,1              ;AR0保存单元
  42.             .bss  P_HI,1                   ;P寄存器高字保存单元
  43.             .bss  P_LO,1                   ;P寄存器低字保存单元
  44. ;--------------------------------------CONTEXT段,定义保护现场数据区----------------------------
  45. ST0_SAVE  .usect ".context",1   ;状态寄存器ST0保存单元
  46. ST1_SAVE  .usect ".context",1   ;状态寄存器ST1保存单元
  47. ;-------------------------------------- 定义主向量段---------------------------------------------
  48. .sect  ".vectors"              ;定义主向量段
  49. RESET  B  _c_int0          ;地址0000H,复位,优先级1
  50. INT1   B  PHANTOM        ;地址0002H,INT1,优先级4
  51. INT2   B  _C_INT2          ;地址0004H,INT2,优先级5
  52. INT3   B  PHANTOM        ;地址0006H,INT3,优先级6
  53. INT4   B  PHANTOM        ;地址0008H,INT4,优先级7
  54. INT5   B  PHANTOM        ;地址000AH,INT5,优先级8
  55. INT6   B  PHANTOM        ;地址000CH,INT6,优先级9
  56. RESERVED  B  PHANTOM                        ;地址000EH,测试,优先级10
  57. SW_INT8   B  PHANTOM                ;地址0010H,自定义软中断
  58. SW_INT9   B  PHANTOM                ;地址0012H,自定义软中断
  59. SW_INT10  B  PHANTOM                ;地址0014H,自定义软中断
  60. SW_INT11  B  PHANTOM                ;地址0016H,自定义软中断
  61. SW_INT12  B  PHANTOM                ;地址0018H,自定义软中断
  62. SW_INT13  B  PHANTOM                ;地址001AH,自定义软中断
  63. SW_INT14  B  PHANTOM                ;地址001CH,自定义软中断
  64. SW_INT15  B  PHANTOM                ;地址001EH,自定义软中断
  65. SW_INT16  B  PHANTOM                ;地址0020H,自定义软中断
  66. TRAP           B  PHANTOM                        ;地址0022H,TRAP矢量
  67. NMI                     B  PHANTOM                        ;地址0024H,NMI,优先级3
  68. EMU_TRAP B  PHANTOM                        ;地址0026H,仿真Trap,优先级2
  69. SW_INT20  B  PHANTOM                ;地址0028H,自定义软中断
  70. SW_INT21  B  PHANTOM                ;地址002AH,自定义软中断
  71. SW_INT22  B  PHANTOM                ;地址002CH,自定义软中断
  72. SW_INT23  B  PHANTOM                ;地址002EH,自定义软中断
  73. SW_INT24  B  PHANTOM                ;地址0030H,自定义软中断
  74. SW_INT25  B  PHANTOM                ;地址0032H,自定义软中断
  75. SW_INT26  B  PHANTOM                ;地址0034H,自定义软中断
  76. SW_INT27  B  PHANTOM                ;地址0036H,自定义软中断
  77. SW_INT28  B  PHANTOM                ;地址0038H,自定义软中断
  78. SW_INT29  B  PHANTOM                ;地址003AH,自定义软中断
  79. SW_INT30  B  PHANTOM                ;地址003CH,自定义软中断
  80. SW_INT31  B  PHANTOM                ;地址003EH,自定义软中断
  81. ;--------------------------------------定义子向量段----------------------------------------------------
  82. .sect  ".pvecs"                ;定义子向量段
  83. PVECTORS        B        PHANTOM                        ;偏移地址0000H
  84.                         B        PHANTOM                          ;偏移地址0001H
  85.                         B        PHANTOM                        ;偏移地址0002H
  86.                         B        PHANTOM                        ;偏移地址0003H
  87.                         B        PHANTOM                        ;偏移地址0004H
  88.                         B        PHANTOM                        ;偏移地址0005H
  89.                         B        PHANTOM                        ;偏移地址0006H
  90.                         B        PHANTOM                        ;偏移地址0007H
  91.                         B        PHANTOM                        ;偏移地址0008H
  92.                         B        PHANTOM                        ;偏移地址0009H
  93.                         B        PHANTOM                        ;偏移地址000AH
  94.                         B        PHANTOM                        ;偏移地址000BH
  95.                         B        PHANTOM                        ;偏移地址000CH
  96.                         B        PHANTOM                        ;偏移地址000DH
  97.                         B        PHANTOM                        ;偏移地址000EH
  98.                         B        PHANTOM                        ;偏移地址000FH
  99.                         B        PHANTOM                        ;偏移地址0010H
  100.                         B        PHANTOM                        ;偏移地址0011H
  101.                         B        PHANTOM                        ;偏移地址0012H
  102.                         B        PHANTOM                        ;偏移地址0013H
  103.                         B        PHANTOM                        ;偏移地址0014H
  104.                         B        PHANTOM                        ;偏移地址0015H
  105.                         B        PHANTOM                        ;偏移地址0016H
  106.                         B        PHANTOM                        ;偏移地址0017H
  107.                         B        PHANTOM                        ;偏移地址0018H
  108.                         B        PHANTOM                        ;偏移地址0019H
  109.                         B        PHANTOM                        ;偏移地址001AH
  110.                         B        PHANTOM                        ;偏移地址001BH
  111.                         B        PHANTOM                        ;偏移地址001CH
  112.                         B        PHANTOM                        ;偏移地址001DH
  113.                         B        PHANTOM                        ;偏移地址001EH
  114.                         B        PHANTOM                        ;偏移地址001FH
  115.                         B        PHANTOM                        ;偏移地址0020H
  116.                         B        PHANTOM                        ;偏移地址0021H
  117.                         B        PHANTOM                        ;偏移地址0022H
  118.                         B        PHANTOM                        ;偏移地址0023H
  119.                         B        PHANTOM                        ;偏移地址0024H
  120.                         B        PHANTOM                        ;偏移地址0025H
  121.                         B        PHANTOM                        ;偏移地址0026H
  122.                         B        PHANTOM                        ;偏移地址0027H
  123.                         B        PHANTOM                        ;偏移地址0028H
  124.                         B        WXM                            ;偏移地址0029H
  125.                         B        PHANTOM                        ;偏移地址002AH
  126.                         B        PHANTOM                        ;偏移地址002BH
  127.                         B        PHANTOM                        ;偏移地址002CH
  128.                         B        PHANTOM                        ;偏移地址002DH
  129.                         B        PHANTOM                        ;偏移地址002EH
  130.                         B        PHANTOM                        ;偏移地址002FH
  131.                         B        PHANTOM                        ;偏移地址0030H
  132.                         B        PHANTOM                        ;偏移地址0031H
  133.                         B        PHANTOM                        ;偏移地址0032H
  134.                         B        PHANTOM                        ;偏移地址0033H
  135.                         B        PHANTOM                        ;偏移地址0034H
  136.                         B        PHANTOM                        ;偏移地址0035H
  137.                         B        PHANTOM                        ;偏移地址0036H
  138.                         B        PHANTOM                        ;偏移地址0037H
  139.                         B        PHANTOM                        ;偏移地址0038H
  140.                         B        PHANTOM                        ;偏移地址0039H
  141.                         B        PHANTOM                        ;偏移地址003AH
  142.                         B        PHANTOM                        ;偏移地址003BH
  143.                         B        PHANTOM                        ;偏移地址003CH
  144.                         B        PHANTOM                        ;偏移地址003DH
  145.                         B        PHANTOM                        ;偏移地址003EH
  146.                         B        PHANTOM                        ;偏移地址003FH
  147.                         B        PHANTOM                        ;偏移地址0040H
  148.                         B        PHANTOM                    ;偏移地址0041H
  149. ;--------------------------------------以下是主程序-----------------------------------------------------
  150.   .text
  151. ;--------------------------------------系统初始化程序--------------------------------------------------
  152. _c_int0        SETC   INTM              ;禁止中断
  153.   CLRC  CNF               ;B0为数据存储区
  154.   LDP    #224
  155.   SPLK   #0000000000000100B,SCSR1 ;4倍频,CLKOUT 40MHz
  156.   SPLK   #68H,WDCR        ;不用看门狗
  157.   LDP    #225
  158.   LACC  MCRA
  159.   OR     #0FC0H             ;设置PWM1-6引脚
  160.   SACL   MCRA
  161. ;--------------------------------------中断初始化程序------------------------------------------------
  162.   LDP    #0  
  163.   SPLK   #0FFH,IFR          ;清所有系统中断标志
  164.   SPLK   #00000010B,IMR     ;开INT2中断
  165.   LDP    #232         
  166.   SPLK   #0FFFH,EVAIFRA    ;清事件管理器A所有中断标志
  167.   SPLK   #0FH,EVAIFRB
  168.   SPLK   #0FH,EVAIFRC
  169.   SPLK   #0200H,EVAIMRA     ;开T1下溢中断
  170.   SPLK   #0,EVAIMRB          ;屏蔽所有中断
  171.   SPLK   #0,EVAIMRC          ;屏蔽所有中断
  172. ;--------------------------------------初始化事件管理器A程序-----------------------------------------
  173.   SPLK   #1000,T1PR           ;T1周期值=1000
  174.   SPLK   #1000,CMPR1         ;占空比初值 0%
  175.   SPLK   #1000,CMPR2
  176.   SPLK   #1000,CMPR3
  177.   SPLK   #0000011001100110B,ACTRA ;引脚PWM1,3,5高有效,2,4,6低有效
  178.   SPLK   #01F4H,DBTCONA     ;死区时间1*32*50ns=1.6uμs
  179.   SPLK   #1000001000000000B,COMCONA ;允许比较,下溢重载
  180.   SPLK   #0000100001000010B,T1CON ;连续增减计数方式,预分频=1
  181.   CLRC  INTM                 ;开总中断

  182. ;--------------------------------------变量初始化---------------------------------------------------------
  183.               LDP     #6
  184.               SPLK    #0,K_           ;K=0
  185.               SPLK    #42166,PITC     ;π*T_carr =42166,Q28格式
  186.               SPLK    #37749,F2M      ;F-M转换系数,Q21格式
  187.               SPLK    #250,T_QUA   ;T_carr/4的定时器计数脉冲个数,Q0格式
  188.               SPLK    #40000,F_CARR  ;载波频率,Q1格式
  189.               SPLK    #120,PMIN       ;最小正脉宽(脉冲个数),Q0格式
  190.               SPLK    #1880,PMAX      ;最小负脉宽时的最大正脉宽,Q0格式
  191.               SPLK    #917,ATOD       ;Q4格式
  192.               SPLK    #480,F_MODU    ;调试数据,Q4格式
  193. ;--------------------------------------主循环-------------------------------------------------------------
  194. CYCLE       LDP     #6
  195.               CLRC   SXM
  196.               LACC   F_MODU,13       ;调制波频率,Q4格式
  197.               SACH   TEMP            ;右移3位,Q1格式
  198.               LACC   F_CARR          ;载波频率,Q1格式
  199.               RPT    #15
  200.               SUBC  TEMP             ;计算N=F_carr/F_modu
  201.               SACL   N_               ;保存N,Q0格式
  202.               LACC   N_,1             ;2N
  203.               SACL   KMAX           ;保存,Q0格式
  204.               LT      F2M             ; F-M转换系数37749,Q21格式
  205.               MPYU   F_MODU         ;Q4格式
  206.               PAC
  207.               SACH    M_             ;保存M,Q9格式
  208.               B       CYCLE           ;循环
  209. ;--------------------------------------假中断子程序---------------------------------------------------------
  210. PHANTOM    RET                       ;假中断
  211. ;--------------------------------------T1下溢中断处理子程序-----------------------------------------
  212. _C_INT2      SST   #ST0,ST0_SAVE      ;保存现场ST0
  213.   SST   #ST1,ST1_SAVE      ;保存ST1
  214.   LDP   #6
  215.   SACH  ACCH
  216.   SACL  ACCL              ;保存ACC
  217.   SPH    P_HI
  218.   SPL    P_LO              ;保存 P
  219.   MPY    #1                ;P<=T
  220.   SPL    T_SAVE            ;保存 T
  221.   LDP    #224  
  222.   LACC   PIVR,1            ;读偏移地址
  223.   ADD    # PVECTORS       ;子向量表首地址
  224.               BACC
  225. WXM         LDP   #232
  226.               SPLK   #0FFFH,EVAIFRA     ;清中断标志
  227.               LDP    #6
  228.               LT      PITC              ;π*T_carr =42166,Q28格式
  229.               MPYU    K_                ;Q0格式
  230.               PAC                       ;计算K*π*T_carr
  231.               SACH   TEMP1            ;保存乘积,Q12格式
  232.               LT      TEMP1
  233.               MPYU    F_MODU         ;乘调制波频率,Q4格式
  234.               PAC                      ;计算K*π*T_carr*T_modu
  235.               RPT    #3
  236.               ROR                     ;右移4位,Q12格式
  237.               SACL   TEMP1           ;保存第1个角度值
  238.               LACC   TEMP1
  239.               ADD    #8579             ;加2π/3,Q12格式
  240.               SACL   TEMP2            ;保存第2个角度值
  241.               SUB     #25736            ;检测是否小于2π,Q12格式
  242.               BCND   WXM1 ,LEQ       ;小于2π跳转
  243.               SACL    TEMP2           ;否则保存
  244. WXM1        LACC    TEMP1
  245.               ADD     #17157           ;加4π/3,Q12格式
  246.               SACL    TEMP3           ;保存第3个角度值
  247.               SUB     #25736            ;检测是否小于2π,Q12格式
  248.               BCND   WXM2 ,LEQ       ;小于2π跳转
  249.               SACL    TEMP3           ; 否则保存
  250. WXM2        LT       TEMP1           ;开始将第1个角度转换成度
  251.               MPYU    ATOD             ;乘转换系数,Q4格式
  252.               PAC
  253.               SACH    TEMP1          ;保存第1个角度值,Q0格式
  254.               LACC    #SIN_ENTRY     ;SIN表入口地址
  255.               ADD     TEMP1           ;偏移量
  256.               TBLR    TEMP1           ;保存第1个SIN值,Q14格式有符号数
  257.               LT       TEMP1
  258.               MPY     M_              ;乘M,Q9格式
  259.               PAC                       ;Q23格式
  260.               SACH    TEMP1,7         ;相当于右移9位,Q14格式有符号数
  261.               LACC    TEMP1
  262.               ADD     #1,14            ;加+1
  263.               SACL    TEMP1           ;保存, Q14格式
  264.               LT       T_QUA          ;T_carr/4=250,Q0格式
  265.               MPYU     TEMP1
  266.               PAC
  267.               SACH    TEMP1,2         ;相当于右移14位,保存 为Q0格式
  268.               LT       TEMP2          ;开始将第2个角度转换成度
  269.               MPYU    ATOD
  270.               PAC
  271.               SACH    TEMP2          ;保存第2个角度值,Q0格式
  272.               LACC    #SIN_ENTRY     ;SIN表入口地址
  273.               ADD     TEMP2          ;偏移量
  274.               TBLR    TEMP2           ;保存第2个SIN值,Q14格式有符号数
  275.               LT       TEMP2
  276.               MPY     M_              ;乘M,Q9格式
  277.               PAC                       ;Q23格式
  278.               SACH    TEMP2,7         ;相当于右移9位,Q14格式有符号数
  279.               LACC    TEMP2
  280.               ADD     #1,14            ;加+1
  281.               SACL    TEMP2           ;保存, Q14格式
  282.               LT       T_QUA          ;T_carr/4=250,Q0格式
  283.               MPYU    TEMP2
  284.               PAC
  285.               SACH    TEMP2,2         ;相当于右移14位,保存 为Q0格式
  286.               LT       TEMP3           ;开始将第3个角度转换成度
  287.               MPYU    ATOD
  288.               PAC
  289.               SACH    TEMP3          ;保存第3个角度值,Q0格式
  290.               LACC    #SIN_ENTRY     ;SIN表入口地址
  291.               ADD     TEMP3          ;偏移量
  292.               TBLR    TEMP3           ;保存第3个SIN值,Q14格式有符号数
  293.               LT       TEMP3
  294.               MPY     M_              ;乘M,Q9格式
  295.               PAC                       ;Q23格式
  296.               SACH    TEMP3,7         ;相当于右移9位,Q14格式有符号数
  297.               LACC    TEMP3
  298.               ADD     #1,14            ;加+1
  299.               SACL    TEMP3           ;保存, Q14格式
  300.               LT       T_QUA          ;T_carr/4=250,Q0格式
  301.               MPYU    TEMP3
  302.               PAC
  303.               SACH    TEMP3,2         ;相当于右移14位,保存 为Q0格式
  304.               LACC    K_
  305.               ADD     #1               ;K+1
  306.               SACL    K_
  307.               LT      PITC              ;π*T_carr =42166,Q28格式
  308.               MPYU    K_                ;Q0格式
  309.               PAC                       ;计算K*π*T_carr
  310.               SACH   TEMP4            ;保存乘积,Q12格式
  311.               LT      TEMP4
  312.               MPYU   F_MODU         ;乘调制波频率,Q4格式
  313.               PAC                      ;计算K*π*T_carr*T_modu
  314.               RPT    #3
  315.               ROR                     ;右移4位,Q12格式
  316.               SACL   TEMP4           ;保存第4个角度值
  317.               LACC   TEMP4
  318.               ADD    #8579             ;加2π/3,Q12格式
  319.               SACL   TEMP5            ;保存第5个角度值
  320.               SUB     #25736            ;检测是否小于2π,Q12格式
  321.               BCND   WXM3 ,LEQ       ;小于2π跳转
  322.               SACL    TEMP5           ;否则保存
  323. WXM3        LACC    TEMP4
  324.               ADD     #17157           ;加4π/3,Q12格式
  325.               SACL    TEMP6           ;保存第6个角度值
  326.               SUB     #25736            ;检测是否小于2π,Q12格式
  327.               BCND   WXM4 ,LEQ       ;小于2π跳转
  328.               SACL    TEMP6           ;否则保存
  329. WXM4        LT       TEMP4           ;开始将第4个角度转换成度
  330.               MPYU    ATOD             ;乘转换系数,Q4格式
  331.               PAC
  332.               SACH    TEMP4          ;保存第4个角度值,Q0格式
  333.               LACC    #SIN_ENTRY     ;SIN表入口地址
  334.               ADD     TEMP4           ;偏移量
  335.               TBLR    TEMP4           ;保存第4个SIN值,Q14格式有符号数
  336.               LT       TEMP4
  337.               MPY     M_              ;乘M,Q9格式
  338.               PAC                       ;Q23格式
  339.               SACH    TEMP4,7         ;相当于右移9位,Q14格式有符号数
  340.               LACC    TEMP4
  341.               ADD     #1,14            ;加+1
  342.               SACL    TEMP4           ;保存, Q14格式
  343.               LT       T_QUA          ;T_carr/4=250,Q0格式
  344.               MPYU     TEMP4
  345.               PAC
  346.               SACH    TEMP4,2         ;相当于右移14位,保存 为Q0格式
  347.               LT       TEMP5          ;开始将第5个角度转换成度
  348.               MPYU    ATOD
  349.               PAC
  350.               SACH    TEMP5          ;保存第5个角度值,Q0格式
  351.               LACC    #SIN_ENTRY     ;SIN表入口地址
  352.               ADD     TEMP5          ;偏移量
  353.               TBLR    TEMP5           ;保存第5个SIN值,Q14格式有符号数
  354.               LT       TEMP5
  355.               MPY     M_              ;乘M,Q9格式
  356.               PAC                       ;Q23格式
  357.               SACH    TEMP5,7         ;相当于右移9位,Q14格式有符号数
  358.               LACC    TEMP5
  359.               ADD     #1,14            ;加+1
  360.               SACL    TEMP5           ;保存, Q14格式
  361.               LT       T_QUA          ;T_carr/4=250,Q0格式
  362.               MPYU     TEMP5
  363.               PAC
  364.               SACH    TEMP5,2         ;相当于右移14位,保存 为Q0格式
  365.               LT       TEMP6           ;开始将第6个角度转换成度
  366.               MPYU    ATOD
  367.               PAC
  368.               SACH    TEMP6          ;保存第6个角度值,Q0格式
  369.               LACC    #SIN_ENTRY     ;SIN表入口地址
  370.               ADD     TEMP6          ;偏移量
  371.               TBLR    TEMP6           ;保存第6个SIN值,Q14格式有符号数
  372.               LT       TEMP6
  373.               MPY     M_              ;乘M,Q9格式
  374.               PAC                       ;Q23格式
  375.               SACH    TEMP6,7         ;相当于右移9位,Q14格式有符号数
  376.               LACC    TEMP6
  377.               ADD     #1,14            ;加+1
  378.               SACL    TEMP6           ;保存, Q14格式
  379.               LT       T_QUA          ;T_carr/4=250,Q0格式
  380.               MPYU     TEMP6
  381.               PAC
  382.               SACH    TEMP6,2         ;相当于右移14位,保存 为Q0格式
  383.               LACC    K_
  384.               ADD     #1               ;K+1
  385.               SACL    K_
  386.               SUB      KMAX           ;比较K是否小于2N
  387.               BCND   WXM5,LT         ;是则跳转
  388.               SPLK    #0,K_             ;否则K=0
  389. WXM5        LACC   TEMP1
  390.               ADD    TEMP4            ;计算脉宽
  391.               SACL   TEMP1             ;暂存
  392.               SUB     PMIN              ;检测是否小于最小正脉宽3微秒
  393.               BCND   WXM6,GT          ;不是继续
  394.               SPLK    #0,TEMP1          ;是则删除窄脉冲
  395.               B        WXM7
  396. WXM6        LACC   TEMP1             ;检测是否小于最小负脉宽3微秒
  397.               SUB     PMAX
  398.               BCND   WXM7,LT          ;不是继续
  399.               SPLK    #2000,TEMP1       ;是则删除窄脉冲
  400. WXM7        LACC   #2000              ;2倍周期值
  401.               SUB     TEMP1            ;计算比较值1
  402.               ROR                       ;除2
  403.               LDP     #232               ;指向事件管理器A
  404.               SACL   CMPR1            ;保存比较值1
  405.               LDP     #6
  406.               LACC   TEMP2
  407.               ADD    TEMP5            ;计算脉宽
  408.               SACL   TEMP2             ;暂存
  409.               SUB     PMIN              ;检测是否小于最小正脉宽3微秒
  410.               BCND   WXM8,GT          ;不是继续
  411.               SPLK    #0,TEMP2          ;是则删除窄脉冲
  412.               B        WXM9
  413. WXM8        LACC   TEMP2             ;检测是否小于最小负脉宽3微秒
  414.               SUB     PMAX
  415.               BCND   WXM9,LT          ;不是继续
  416.               SPLK    #2000,TEMP2       ;是则删除窄脉冲
  417. WXM9        LACC   #2000              ;2倍周期值
  418.               SUB     TEMP2            ;计算比较值2
  419.               ROR                       ;除2
  420.               LDP     #232               ;指向事件管理器A
  421.               SACL   CMPR2            ;保存比较值2
  422.               LDP     #6
  423.               LACC   TEMP3
  424.               ADD    TEMP6            ;计算脉宽
  425.               SACL   TEMP3             ;暂存
  426.               SUB     PMIN              ;检测是否小于最小正脉宽3微秒
  427.               BCND   WXM10,GT         ;不是继续
  428.               SPLK    #0,TEMP3          ;是则删除窄脉冲
  429.               B        WXM11
  430. WXM10       LACC   TEMP3             ;检测是否小于最小负脉宽3微秒
  431.               SUB     PMAX
  432.               BCND   WXM11,LT          ;不是继续
  433.               SPLK    #2000,TEMP3       ;是则删除窄脉冲
  434. WXM11       LACC   #2000              ;2倍周期值
  435.               SUB     TEMP3            ;计算比较值3
  436.               ROR                       ;除2
  437.               LDP     #232               ;指向事件管理器A
  438.               SACL   CMPR3             ;保存比较值3
  439.               LDP     #6                 ;恢复现场
  440.   LT      P_LO               ;恢复P
  441.   MPY    #1  
  442.   LPH     P_HI  
  443.   LT      T_SAVE            ;恢复T
  444.   LACC   ACCH,16
  445.   ADDS   ACCL              ;恢复ACC
  446.   LDP     #0     
  447.   LST     #ST1,ST1_SAVE     ; 恢复ST1
  448.   LST     #ST0,ST0_SAVE     ; 恢复ST0
  449.   CLRC   INTM              ; 开中断
  450.   RET                        ; 返回

  451.   .data                     
  452. ;--------------------------------------数据段-------------------------------------------------------------
  453. SIN_ENTRY  .word 0                   ;SIN值表,D1格式有符号数
  454.              .word 286,572,857,1143,1428
  455.              .word 1713,1997,2280,2563,2845
  456.              .word 3126,3406,3686,3964,4240
  457.              .word 4516, 4790,5063,5334,5604
  458.            .word 5872,6138,6402,6664, 6924
  459.            .word 7182,7438,7692,7943,8192
  460.            .word 8438,8682,8923,9162,9397
  461.            .word 9630,9860,10087,10311,10531
  462.            .word 10749,10963,11174,11381,11585
  463.            .word 11786,11982,12176,12365,12551
  464.            .word 12733,12911,13085,13255,13421
  465.            .word 13583,13741,13894,14044,14189
  466.            .word 14330,14466,14598,14726,14849
  467.            .word 14968,15082,15191,15296,15396
  468.            .word 15491,15582,15668,15749,15826
  469.            .word 15897,15964,16026,16083,16135
  470.            .word 16182,16225,16262,16294,16322
  471.            .word 16344,16362,16374,16382,16384            ;90

  472.            .word 16382,16374,16362,16344,16322
  473.            .word 16294,16262,16225,16182,16135
  474.            .word 16083,16026,15964,15897,15826
  475.            .word 15749,15668,15582,15491,15396
  476.            .word 15296,15191,15082,14968,14849
  477.            .word 14726,14598,14466,14330,14189
  478.            .word 14044,13894,13741,13583,13421
  479.            .word 13255,13085,12911,12733,12551
  480.            .word 12365,12176,11982,11786,11585
  481.            .word 11381,11174,10963,10749,10531
  482.            .word 10311,10087,9860,9630,9397
  483.            .word 9162,8923,8682,8438,8192
  484.            .word 7943,7692,7438,7182,6924
  485.            .word 6664,6402,6138,5872,5604
  486.            .word 5334,5063,4790,4516,4240  
  487.            .word 3964,3686,3406,3126,2845
  488.            .word 2563,2280,1997,1713,1428
  489.            .word 1143,857,572,286, 0                      ;180

  490.            .word 65250,64964,64679,64393,64108
  491.            .word 63823,63539,63256,62973,62691
  492.            .word 62410,62130,61850,61572,61296
  493.            .word 61020,60746,60473,60202,59932
  494.            .word 59664,59398,59134,58872,58612
  495.            .word 58354,58098,57844,57593,57344
  496.            .word 57098,56854,56613,56374,56139
  497.            .word 55906,55676,55449,55225,55005
  498.            .word 54787,54573,54362,54155,53951
  499.            .word 53750,53554,53360,53171,52985
  500.            .word 52803,52625,52451,52281,52115
  501.            .word 51953,51795,51642,51492,51347
  502.            .word 51206,51070,50938,50810,50687
  503.            .word 50568,50454,50345,50240,50140
  504.            .word 50045,49954, 49868,49787,49710
  505.            .word 49639,49572,49510,49453,49401
  506.            .word 49354,49311,49274,49242,49214
  507.            .word 49192,49174,49162,49154,49152                ;270

  508.            .word 49154,49162,49174,49192,49214
  509.            .word 49242,49274,49311,49354,49401
  510.            .word 49453,49510,49572,49639,49710
  511.            .word 49787,49868,49954,50045,50140
  512.            .word 50240,50345,50454,50568,50687
  513.            .word 50810,50938,51070,51206,51347
  514.            .word 51492,51642,51795,51953,52115
  515.            .word 52281,52451,52625,52803,52985
  516.            .word 53171,53360,53554,53750,53951
  517.            .word 54155,54362,54573,54787,55005
  518.            .word 55225,55449,55676,55906,56139
  519.            .word 56374,56613,56854,57098,57344
  520.            .word 57593,57844,58098,58354,58612
  521.            .word 58872,59134,59398,59664,59932
  522.            .word 60202,60473,60746,61020,61296
  523.            .word 61572,61850,62130,62410,62691
  524.            .word 62973,63256,63539,63823,64108
  525.            .word 64393,64679,64964,65250 ,0                    ;360
  526.            .end

复制代码


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:723508 发表于 2020-4-6 22:19 | 只看该作者
现在还有多少用汇编的,一看头大了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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