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

📄 mc1.asm

📁 控制intel196mc产生PWM
💻 ASM
📖 第 1 页 / 共 3 页
字号:


TC1             EQU     1000	; 载波周期,载波频率4KHz
TC2             EQU     500     ;500  相中心点
TC3             EQU     4000    ;稳压分辨率
T_DEAD          EQU     40      ;死区时间  5us
SIN_120         EQU     2730    ;SIN表120数据间隔
SIN_240         EQU     5460    ;SIN表240数据间隔
SIN_360         EQU     8190    ;SIN表360数据间隔
TM2             EQU     40000   ;EXIINT中断后恢复延时时间,10S
TM1             EQU     11      ;软启动时间
FREQ            EQU     1342    ;输出频率系数



REO_REG         EQU    	00H
PTSSEL          EQU    	04H
PTSSRV          EQU    	06H
INT_MASK        EQU    	08H
INT_PEND        EQU    	09H
WATCHDOG        EQU    	0AH
INT_PEND1       EQU    	12H
INT_MASK1       EQU    	13H
WSR             EQU    	14H
SP              EQU    	18H

P5_MODE         EQU     1FF1H
P5_DIR          EQU     1FF3H
P5_REG          EQU     1FF5H
USFR            EQU     1FF6H
P5_PIN          EQU     1FF7H
P3_REG          EQU     1FFCH
P4_REG          EQU     1FFDH
P3_PIN          EQU     1FFEH
P4_PIN          EQU     1FFFH


;WSR=3CH  64BYTES WINDOW  1F00H-1F3FH-->C0H-FFH

;WSR=3DH  64BYTES WINDOW  1F40H-1F7FH-->C0H-FFH
CAPCOMP0_CON    EQU    	0C0H
CAPCOMP0_TIME   EQU    	0C2H
CAPCOMP1_CON    EQU    	0C4H
CAPCOMP1_TIME   EQU    	0C6H
CAPCOMP2_CON    EQU    	0C8H
CAPCOMP2_TIME   EQU    	0CAH
CAPCOMP3_CON    EQU    	0CCH
CAPCOMP3_TIME   EQU    	0CEH
COMP0_CON       EQU    	0D8H
COMP0_TIME      EQU    	0DAH
COMP1_CON       EQU    	0DCH
COMP1_TIME      EQU    	0DEH
COMP2_CON       EQU    	0E0H
COMP2_TIME      EQU    	0E2H
COMP3_CON       EQU    	0E4H
COMP3_TIME      EQU    	0E6H
T1RELOAD        EQU    	0F2H
T1CONTROL       EQU    	0F8H
TIMER1          EQU    	0FAH
T2CONTROL       EQU    	0FCH
TIMER2          EQU    	0FEH

;WSR=3EH  64BYTES WINDOW  1F80H-1FBFH-->C0H-FFH
P0_PIN          EQU    	0E8H
P1_PIN          EQU    	0E9H
AD_RESULT       EQU    	0EAH
AD_COMMAND      EQU    	0ECH
AD_TEST         EQU    	0EEH
AD_TIME         EQU    	0EFH
PWM0_DUTY       EQU    	0F0H
PWM1_DUTY       EQU    	0F2H
PWM_PERIOD      EQU    	0F4H
PWM_PER_CNT     EQU    	0F6H
PI_MASK         EQU    	0FCH
PI_PEND         EQU    	0FEH

;WSR=3FH  64BYTES WINDOW  1FC0H-1FFFH-->C0H-FFH
WG_OUT          EQU    	0C0H
WG_COMP1        EQU    	0C2H
WG_COMP2        EQU    	0C4H
WG_COMP3        EQU    	0C6H
WG_RELOAD       EQU    	0C8H
WG_COUNT        EQU    	0CAH
WG_CON          EQU    	0CCH
WG_PROTECT      EQU    	0CEH
P2_MODE         EQU    	0D0H
P2_DIR          EQU    	0D2H
P2_REG          EQU    	0D4H
P2_PIN          EQU    	0D6H


RSEG          AT    1AH      ;主程序用中间寄存器


AX            EQU   1CH
AL            EQU   1CH
AH            EQU   1DH
BX            EQU   1EH
BL            EQU   1EH
BH            EQU   1FH
CX            EQU   20H   ;中断程序专用
CL            EQU   20H
CH            EQU   21H
DX            EQU   22H
DL            EQU   22H
DH            EQU   23H




RSEG          AT   24H

AF:           DSB   1        ;程序控制寄存器
LED:          DSB   1        ;指示灯控制
NUM:          DSB   2        ;稳压调节时间系数
NUM1:         DSB   1        ;A/D重复采样次数
NUM2:         DSB   1        ;软启动每刻度时间
NUM3:         DSB   2
STM:          DSB   1        ;启动信号冗余计数





RSEG          AT   30H       ;WFG程序专用寄存器区

R0:           DSB   2        ;WFG处理程序中的中间寄存器,用于两字乘法
R1:           DSB   2        ;WFG处理程序中的中间寄存器
VF_TP:        DSB   2        ;V/F查表结果
VF_T:         DSB   2        ;V/F查表后计算结果
SIN_PTR:      DSB   4        ;SIN表循环指针
SIN_PTR1:     DSB   2        ;SIN表循环指针
PWM:          DSB   2        ;运算结果
F_SET:        DSB   2        ;频率设定值  43HZ/50HZ
F_T:          DSB   2        ;频率值
U_U:          DSB   2        ;U相输出电压采样值
V_T:          DSB   2        ;稳压系数






CSEG      AT   203AH

DCW   WFG_INT
DCW   EXTINT

CSEG      AT   2080H


MAIN_START:
           DI                         ;禁止中断
           LD     SP,#0200H           ;设置堆栈

;***********************************************
;初始化I/O口

           LDB    AL,#11000000B
           STB    AL,P5_REG
           CLRB   AL
           STB    AL,P5_DIR
           LDB    AL,#11101111B
           STB    AX,P5_MODE          ;初始化P5口
;*************************************************
;ROM自检
           CLRB   AL
           LD     BX,#20
MAT1:      ADDB   AL,ZIJIAN[BX]
           NOP
           NOP
           NOP
           NOP
           NOP
           DJNZW  BX,MAT1
           CMPB   AL,#0D2H
           JNE    MAIN_START
;******************************************************
;清寄存器
           CLR    WSR
           CLRB   AL
           LDB    BL,#20H
MMT:       STB    AL,[BL]
           INCB   BL
           CMPB   BL,#0FEH
           JNH    MMT               ;不大于转移


;***********************************************
;设置中断屏蔽寄存器

           CLR    WSR
           LDB    INT_MASK,#00H     ;允许CMP0中断
           LDB    INT_MASK1,#60H    ;允许WG_COUNTER和EXTINT中断
           LDB    WSR,#3EH          ;把64字节窗口映射至1F80H~1FBFH
           LDB    PI_MASK,#10H      ;允许WG中断





;***********************************************
;WG初始化

MT1:       LDB    WSR,#3FH          ;
           LD     WG_OUT,#073FH     ;低电平输出有效
           LDB    WG_PROTECT,#04H   ;上升沿触发,允许保护,禁止输出
           LD     WG_RELOAD,#TC1    ;装入载波周期
           LDB    WSR,#3FH
           LD     WG_CON,#0428H     ;方式0,启动计数器
           OR     WG_CON,#T_DEAD    ;死区时间=5us
           LD     WG_COMP1,#TC2
           LD     WG_COMP2,#TC2
           LD     WG_COMP3,#TC2
           EI




MIAN:      JBC   AF,1,MIAN3          ;无中断转移
           LD     BX,#150
           CLR    AX
TT1:       DJNZW  AX,TT1            ;EXTINT中断恢复延时 字减一非零转移
           DJNZW  BX,TT1
           SJMP   MAIN_START        ;EXTINT中断恢复延时完成
MIAN3:     LDB    WSR,#3EH
           JBC    p0_pin,0,MIAN5    ;判断启动信号
           CMPB   STM,#50           ;启动信号冗余计数
           JLT    MIAN4             ;小于转移
           ORB    AF,#00000001B     ;置启动标志位
           SJMP   MIAN6
MIAN4:     INCB   STM
           SJMP   MIAN3
MIAN5:     LDB    WSR,#3FH
           ANDB   WG_PROTECT,#11111110B   ;禁止输出
           ANDB   AF,#11111110B           ;无启动信号
           SJMP   MT1
MIAN6:     LDB    WSR,#3EH
           LD     F_SET,#5000              ;50HZ
           SJMP   MIAN


;****************************************************************
;变频

BINF:        CMP    F_T,F_SET        ;F_SET 频率设定值  F_T频率值
             JGT    BINF_END            ;大于转移
             DJNZ   NUM2,BINF3       ;字节减一非零转移
             INC    F_T
             LDB    NUM2,#TM1
BINF3:       LD     CX,F_T
             CLR    DX
             DIVU   CX,#05H
             AND    CX,#0FFFEH
             LD     VF_T,VF_TAB[CX]
BINF_END:    RET


WFG_INT:    PUSHA
            JBC     AF,0,WG_END              ;无启动信号
            LDB     WSR,#3FH
            ORB     WG_PROTECT,#00000001B    ;允许输出
            SCALL   BINF                     ;变频
            MUL     R0,F_T,#FREQ             ; 结果放R0 F_T - 频率值 FRE-输出频率系数
            ADD     SIN_PTR,R0               ;SIN_PTR SIN表循环指针
            ADDC    SIN_PTR+2,R1
            AND     R0,SIN_PTR+2,#SIN_360    ;使输出值不超过8190
            SCALL   SIN_YS
            LD      WG_COMP3,R0
            ADD     R0,SIN_PTR+2,#SIN_240
            AND     R0,#SIN_360
            SCALL   SIN_YS
            LD      WG_COMP2,R0
            ADD     R0,SIN_PTR+2,#SIN_120
            AND     R0,#SIN_360
            SCALL   SIN_YS
            LD      WG_COMP1,R0
WG_END:     POPA
            RET

SIN_YS:     MUL     SIN_PTR1,VF_T,SIN_TAB[R0]	; VF_T*SIN
            ADD     R0,PWM,#TC2
            CMP	    R0,#960		;极限检查  3×5us
            JLT	    SIN1
            LD	    R0,#1001
            SJMP    SIN2
SIN1:       CMP	    R0,#40		;
            JGT	    SIN2
            LD	    R0,#0
SIN2:       RET


;********************************************************
;EXTINT中断

EXTINT:    PUSHA
           LDB    WSR,#3FH                 ;
           ANDB   WG_PROTECT,#11111110B    ;禁止输出
           LD     WG_CON,#0028H            ;停止计数
           LD     WG_OUT,#0700H            ;输出为0
           AND    AF,#11111110B
           ORB    AF,#00000010B
           POPA
           RET




;程序自检数据表
ZIJIAN:
DCB 0
DCB 1,2,3,4,5,6,7,8,9,10
DCB 11,12,13,14,15,16,17,18,19,20

VF_TAB:  ;F_BC, VF_T

dw	0,8,16,24                ;4
	dw	32,40,48,56              ;8
	dw	64,72,80,88
	dw	96,104,112,120
	dw	128,136,144,152
	dw	160,168,176,184
	dw	192,200,208,216
	dw	224,232,240,248
	dw	256,264,272,280
	dw	288,296,304,312
	dw	320,328,336,344
	dw	352,360,368,376
	dw	384,392,400,408
	dw	416,424,432,440
	dw	448,456,464,472
	dw	480,488,496,504
	dw	512,520,528,536
	dw	544,552,560,568
	dw	576,584,592,600
	dw	608,616,624,632
	dw	640,648,656,664
	dw	672,680,688,696
	dw	704,712,720,728
	dw	736,744,752,760
	dw	768,776,784,792
	dw	800,808,816,824
	dw	832,840,848,856
	dw	864,872,880,888
	dw	896,904,912,920
	dw	928,936,944,952
	dw	960,968,976,984
	dw	992,1000,1008,1016
	dw	1024,1032,1040,1048
	dw	1056,1064,1072,1080
	dw	1088,1096,1104,1112
	dw	1120,1128,1136,1144
	dw	1152,1160,1168,1176
	dw	1184,1192,1200,1208
	dw	1216,1224,1232,1240
	dw	1248,1256,1264,1272
	dw	1280,1288,1296,1304
	dw	1312,1320,1328,1336
	dw	1344,1352,1360,1368
	dw	1376,1384,1392,1400
	dw	1408,1416,1424,1432
	dw	1440,1448,1456,1464
	dw	1472,1480,1488,1496
	dw	1504,1512,1520,1528
	dw	1536,1544,1552,1560
	dw	1568,1576,1584,1592
	dw	1600,1608,1616,1624
	dw	1632,1640,1648,1656
	dw	1664,1672,1680,1688
	dw	1696,1704,1712,1720
	dw	1728,1736,1744,1752
	dw	1760,1768,1776,1784
	dw	1792,1800,1808,1816
	dw	1824,1832,1840,1848
	dw	1856,1864,1872,1880
	dw	1888,1896,1904,1912
	dw	1920,1928,1936,1944
	dw	1952,1960,1968,1976
	dw	1984,1992,2000,2008
	dw	2016,2024,2032,2040
	dw	2048,2056,2064,2072
	dw	2080,2088,2096,2104
	dw	2112,2120,2128,2136
	dw	2144,2152,2160,2168
	dw	2176,2184,2192,2200
	dw	2208,2216,2224,2232
	dw	2240,2248,2256,2264
	dw	2272,2280,2288,2296
	dw	2304,2312,2320,2328
	dw	2336,2344,2352,2360
	dw	2368,2376,2384,2392
	dw	2400,2408,2416,2424
	dw	2432,2440,2448,2456
	dw	2464,2472,2480,2488
	dw	2496,2504,2512,2520
	dw	2528,2536,2544,2552
	dw	2560,2568,2576,2584
	dw	2592,2600,2608,2616
	dw	2624,2632,2640,2648
	dw	2656,2664,2672,2680
	dw	2688,2696,2704,2712
	dw	2720,2728,2736,2744
	dw	2752,2760,2768,2776
	dw	2784,2792,2800,2808
	dw	2816,2824,2832,2840
	dw	2848,2856,2864,2872
	dw	2880,2888,2896,2904
	dw	2912,2920,2928,2936
	dw	2944,2952,2960,2968
	dw	2976,2984,2992,3000
	dw	3008,3016,3024,3032
	dw	3040,3048,3056,3064
	dw	3072,3080,3088,3096
	dw	3104,3112,3120,3128
	dw	3136,3144,3152,3160
	dw	3168,3176,3184,3192
	dw	3200,3208,3216,3224
	dw	3232,3240,3248,3256
	dw	3264,3272,3280,3288
	dw	3296,3304,3312,3320
	dw	3328,3336,3344,3352
	dw	3360,3368,3376,3384
	dw	3392,3400,3408,3416
	dw	3424,3432,3440,3448
	dw	3456,3464,3472,3480
	dw	3488,3496,3504,3512
	dw	3520,3528,3536,3544
	dw	3552,3560,3568,3576
	dw	3584,3592,3600,3608
	dw	3616,3624,3632,3640
	dw	3648,3656,3664,3672
	dw	3680,3688,3696,3704
	dw	3712,3720,3728,3736
	dw	3744,3752,3760,3768
	dw	3776,3784,3792,3800
	dw	3808,3816,3824,3832
	dw	3840,3848,3856,3864
	dw	3872,3880,3888,3896
	dw	3904,3912,3920,3928
	dw	3936,3944,3952,3960
	dw	3968,3976,3984,3992
	dw	4000

;*********************************************************
;正弦数据表:
;0~360° 4096个数据,8192个字节
SIN_TAB:
        	dw	0,21,43,65                   ;1   ;.15
	dw	86,108,130,151               ;2
	dw	173,195,216,238              ;3
	dw	259,281,302,324              ;4
	dw	345,367,388,410              ;5
	dw	431,452,474,495              ;6
	dw	516,537,559,580              ;7
	dw	601,622,644,665              ;8
	dw	686,707,728,749              ;9
	dw	770,791,812,833              ;10
	dw	854,875,896,917              ;11
	dw	938,959,980,1000             ;12
	dw	1021,1042,1063,1083          ;13
	dw	1104,1125,1145,1166          ;14
	dw	1187,1207,1228,1248          ;15
	dw	1269,1289,1310,1330          ;16
	dw	1351,1371,1392,1412          ;17
	dw	1432,1453,1473,1493          ;18
	dw	1514,1534,1554,1574          ;19
	dw	1594,1614,1635,1655          ;20
	dw	1675,1695,1715,1735          ;21
	dw	1755,1775,1795,1815          ;22
	dw	1835,1854,1874,1894          ;23
	dw	1914,1934,1953,1973          ;24
	dw	1993,2012,2032,2052          ;25
	dw	2071,2091,2110,2130          ;26
	dw	2150,2169,2188,2208          ;27
	dw	2227,2247,2266,2285          ;28
	dw	2305,2324,2343,2362          ;29
	dw	2382,2401,2420,2439          ;30
	dw	2458,2477,2496,2515          ;31
	dw	2534,2553,2572,2591          ;32
	dw	2610,2629,2648,2667          ;33
	dw	2686,2704,2723,2742          ;34
	dw	2761,2779,2798,2817          ;35
	dw	2835,2854,2872,2891          ;36
	dw	2909,2928,2946,2965          ;37
	dw	2983,3001,3020,3038          ;38
	dw	3056,3075,3093,3111          ;39
	dw	3129,3147,3165,3184          ;40
	dw	3202,3220,3238,3256          ;41
	dw	3274,3292,3310,3327          ;42
	dw	3345,3363,3381,3399          ;43
	dw	3416,3434,3452,3469          ;44

⌨️ 快捷键说明

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