ABCdrive.asm
; 3-Фазное ШИМ управление инвертором двигателя(6-IGBT).
; PIC16F628      Кварц 8 мГц. Автор КДН (DC-AC)
;===============================================================================================
            LIST        p=16F628A    ; Установка типа микроконтроллера.
            ;#include <p16f628.inc> 
             __CONFIG    26H      ; 
                                    ; 
;===============================================================================================
; Определение  положения  регистров  специального  назначения.
;===============================================================================================
OptionR     equ         81h         ; Для WDT без предделителя.
Status      equ         03h         ; Регистр выбора банка.
TrisB       equ         06h         ; Регистр выбора направления работы выводов порта В.
PortB       equ         06h         ; Регистр управления защелками порта В.
TrisA       equ         05h         ; Регистр выбора направления работы выводов порта A.
PortA       equ         05h         ; Регистр управления защелками порта A.
Intcon      equ         0Bh         ;
EEData      equ         9Ah         ; EEprom
EECon1      equ         9Ch         ;
EEAdr       equ         9Bh         ;
INDF        equ         00h         ; Косвенная адресация
FSR         equ         04h         ;
CMCON       equ         1Fh         ; Конфигурация входов (цифровые).
;===============================================================================================
; Определение  названия  и  положения  регистров  общего  назначения.
;===============================================================================================
Sec1        equ         20h         ; Регистр константы.
Sec2        equ         21h         ; Регистр константы.
Sec3        equ         22h         ; Регистр константы.
Sec4        equ         23h         ; Регистр константы.
Sec5        equ         24h         ; Регистр константы.
Sec6        equ         25h         ; Регистр константы.
Sec7        equ         26h         ; Регистр константы.
AUTRUN      equ         33h         ; Регистр авторазгона.(1-бит)
Sec10       equ         28h         ; Регистр вращения вектора.
Sec11       equ         29h         ; Регистр управления делением частоты.
Sec12       equ         27h         ; Регистр константы деления частоты.
Sec0        equ         2Ah         ; Счетчик исполнитель констант.
Sec00       equ         2Bh         ; Регистр выбора констант не в памяти(по битам)
Sec000      equ         2Ch         ; Регистр выбора констант не в памяти(по битам)
Sec010      equ         32h         ; Регистр выбора констант не в памяти(по битам)
SecMAX      equ         2Dh         ; Регистр  ограничения максимальной часоты(50ГЦ)-7 бит.
Sec100      equ         2Eh         ; Регистр адреса ячейки памяти.
Sec200      equ         2Fh         ; Счетчик 8 чисел констант вращения
SecM        equ         30h         ; Счетчик количества считанных данных.
ACCSEL      equ         31h         ; Счетчик контроля ускорения и таймер драйверов.
REVERS      equ         34h         ; Регистр выбора направления вращения.
ON          equ         35h         ; Регистр счёта и ограничения минимальной рабочей частоты (10ГЦ)-7 бит
ACCSEL2     equ         38h         ; Счетчик таймер драйверов и таймер задержки.
;===============================================================================================
; Определение места размещения результатов операций.
;===============================================================================================
F           equ         1           ; Результат направить в регистр.
;===============================================================================================
            org         2100h       ; Запись констант в EEPROM
            DE          .146,.1,.10,.146,.151,.11,.146,.45        ;2,5Hz,2006Hz,8%Uном+
            DE          .143,.2,.17,.141,.149,.16,.141,.30        ;3,75Hz,2000Hz,11%Uном+
            ;DE          .139,.13,.44,.134,.150,.42,.134,.13        ;8Hz,1850Гц,22%Uном
            ;DE          .130,.17,.55,.124,.143,.52,.123,.10        ;10,51Hz,1868Гц,27%Uном 
            ;DE          .126,.21,.65,.118,.140,.61,.117,.8         ;13Hz,1851Гц,31%Uном
            ;DE          .115,.23,.71,.106,.130,.66,.105,.7         ;15,52Hz,1930Гц,35%Uном
            ;DE          .109,.27,.81,.100,.126,.75,.99,.6          ;18Hz,1922Гц,39%Uном
            ;DE          .109,.33,.97,.97,.128,.90,.96,.5           ;20,47Hz,1823Гц,44%Uном(43%)
            ;DE          .114,.43,.122,.98,.137,.113,.97,.4         ;22,98Hz,1639Гц,49%Uном(48%)
            ;DE          .95,.42,.119,.81,.119,.110,.80,.4          ;25,5Hz,1818Гц,53%Uном(51%)
            DE          .142,.4,.23,.141,.149,.22,.140,.22        ;5Hz,1958Гц,13,4%Uном+
            DE          .136,.6,.28,.133,.144,.26,.133,.18        ;6,25Hz,2001Гц,16%Uном+ 
            DE          .132,.8,.33,.129,.141,.31,.129,.15        ;7,5Hz,2001Гц,18,5%Uном
            DE          .127,.10,.38,.123,.137,.36,.123,.13        ;8,75Hz,2023Гц,21%Uном
            DE          .128,.13,.46,.123,.139,.43,.123,.11       ;10Hz,1957Гц,23,8%Uном
            DE          .122,.15,.49,.117,.134,.46,.116,.10       ;11,25Hz,2001Гц,26%Uном
            DE          .119,.17,.55,.113,.131,.51,.112,.9        ;12,5Hz,2000Гц,28,6%Uном***************
            DE          .118,.19,.61,.111,.132,.57,.111,.8        ;13,75Hz,1956Гц,31%Uном
            DE          .122,.22,.69,.113,.136,.65,.113,.7        ;15Hz,1868Гц,33%Uном
            DE          .109,.22,.68,.101,.124,.63,.100,.7        ;16,25Hz,2022Гц,35%Uном
            DE          .116,.26,.79,.106,.132,.73,.106,.6        ;17,5Hz,1868Гц,37%Uном
            DE          .105,.26,.77,.96,.121,.72,.95,.6          ;18,75Hz,2000Гц,39%Uном
            DE          .114,.32,.95,.103,.134,.88,.102,.5        ;20Hz,1780Гц,42%Uном
            DE          .104,.32,.95,.92,.123,.88,.91,.5          ;21,25Hz,1890Гц,44,5%Uном(51%)
            
            org         0           ; Начать выполнение программы с адреса 0 PC.
            goto        Start       ; Переход в ПП Start.


;***********************************************************************************************
;                          Текст рабочей части программы.
;***********************************************************************************************
; Установка направления работы портов.
;-----------------------------------------------------------------------------------------------
Start       movlw       .126
            movwf       PortB
            movlw        .16
            movwf        PortA
            movlw       .7
            movwf       CMCON       ; Цифровые входы.
            bsf         Status,5    ; Перейти в 1-й банк (установить в 1 5-й бит
                                    ; регистра Status).
            movlw       .7
            movwf       TrisA
            movlw       .128        ; Запись константы в W
            movwf       TrisB       ; Скопировать константу из W в регистр TrisB.(Конфигурация выводов)
            bcf         OptionR,3   ; WDT без предделителя.
            bcf         Status,5    ; Перейти в 0-й банк (установить в 0 5-й бит
                                    ; регистра Status).
            clrf        Intcon            
;-----------------------------------------------------------------------------------------------
;                                  Начало
;-----------------------------------------------------------------------------------------------
            ;clrf        PortB
            movlw       .126
            movwf       PortB
            ;clrf        PortA
            clrf        Sec10
            clrf        Sec100
            clrf        ACCSEL
            clrf        SecMAX
            clrf        AUTRUN
            clrf        Sec000
            clrf        Sec010
            clrf        REVERS
            movlw       .1
            movwf       Sec00
            movwf       Sec11
            movlw       .0
            movwf       SecM
            goto        RUNN
;***********************************************************************************************
;                                 Константы
;***********************************************************************************************
START28     movlw       .3       ;50Hz
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .59
            movwf       Sec2
            movlw       .164
            movwf       Sec3 
            ;movlw       .1
            ;movwf       Sec4
            movlw       .18
            movwf       Sec5
            movlw       .151
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            clrf        Sec010
            bcf         PortA,4       ;Индикация частоты 50Гц
            ;bsf         Sec010,7
            bsf         SecMAX,7
            goto        ROTOR
START27     movlw       .3       ;48,75Hz
            movwf       Sec12
            ;movlw       .1
            ;movwf       Sec1
            movlw       .60
            movwf       Sec2
            movlw       .167
            movwf       Sec3 
            ;movlw       .1
            ;movwf       Sec4
            movlw       .26
            movwf       Sec5
            movlw       .154
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            clrf        Sec010
            bsf         Sec010,6
            ;bsf         SecMAX,7
            goto        ROTOR
START26     movlw       .3       ;47,5Hz
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .62
            movwf       Sec2
            movlw       .170
            movwf       Sec3 
            ;movlw       .1
            ;movwf       Sec4
            movlw       .31
            movwf       Sec5
            movlw       .157
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            clrf        Sec010
            bsf         Sec010,5
            ;bsf         SecMAX,7
            goto        ROTOR
START25     movlw       .3       ;46,25Hz
            movwf       Sec12
            movlw       .10
            movwf       Sec1
            movlw       .61
            movwf       Sec2
            movlw       .168
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .42
            movwf       Sec5
            movlw       .155
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            clrf        Sec010
            bsf         Sec010,4
            ;bsf         SecMAX,7
            goto        ROTOR
START24     movlw       .3       ;45Hz
            movwf       Sec12
            movlw       .19
            movwf       Sec1
            movlw       .60
            movwf       Sec2
            movlw       .167
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .51
            movwf       Sec5
            movlw       .154
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            clrf        Sec010
            bsf         Sec010,3
            ;bsf         SecMAX,7
            goto        ROTOR
START23     movlw       .3       ;43,75Hz
            movwf       Sec12
            movlw       .25
            movwf       Sec1
            movlw       .61
            movwf       Sec2
            movlw       .168
            movwf       Sec3 
            movlw       .3
            movwf       Sec4
            movlw       .56
            movwf       Sec5
            movlw       .155
            movwf       Sec6
            movlw       .2
            movwf       Sec7
            clrf        Sec010
            bsf         Sec010,2
            ;bsf         SecMAX,7
            goto        ROTOR
START22     movlw       .3       ;42,5Hz
            movwf       Sec12
            movlw       .29
            movwf       Sec1
            movlw       .61
            movwf       Sec2
            movlw       .168
            movwf       Sec3 
            movlw       .7
            movwf       Sec4
            movlw       .60
            movwf       Sec5
            movlw       .155
            movwf       Sec6
            movlw       .6
            movwf       Sec7
            clrf        Sec010
            bsf         Sec010,1
            ;bsf         SecMAX,7
            goto        ROTOR
START21     movlw       .3       ;41,26Hz
            movwf       Sec12
            movlw       .33
            movwf       Sec1
            movlw       .60
            movwf       Sec2
            movlw       .167
            movwf       Sec3 
            movlw       .12
            movwf       Sec4
            movlw       .65
            movwf       Sec5
            movlw       .155
            movwf       Sec6
            movlw       .11
            movwf       Sec7
            clrf        Sec000
            bsf         Sec010,0
            ;bsf         SecMAX,7
            goto        ROTOR
START20     movlw       .3       ;40Hz
            movwf       Sec12
            movlw       .38
            movwf       Sec1
            movlw       .60
            movwf       Sec2
            movlw       .167
            movwf       Sec3 
            movlw       .17
            movwf       Sec4
            movlw       .70
            movwf       Sec5
            movlw       .155
            movwf       Sec6
            movlw       .15
            movwf       Sec7
            clrf        Sec000
            bsf         Sec000,7
            ;bsf         SecMAX,7
            goto        ROTOR
START19     movlw       .3       ;38,75Hz
            movwf       Sec12
            movlw       .43
            movwf       Sec1
            movlw       .60
            movwf       Sec2
            movlw       .167
            movwf       Sec3 
            movlw       .22
            movwf       Sec4
            movlw       .75
            movwf       Sec5
            movlw       .155
            movwf       Sec6
            movlw       .20
            movwf       Sec7
            clrf        Sec000
            bsf         Sec000,6
            ;bsf         SecMAX,7
            goto        ROTOR
START18     movlw       .3       ;37,5Hz
            movwf       Sec12
            movlw       .48
            movwf       Sec1
            movlw       .61
            movwf       Sec2
            movlw       .167
            movwf       Sec3 
            movlw       .27
            movwf       Sec4
            movlw       .80
            movwf       Sec5
            movlw       .155
            movwf       Sec6
            movlw       .25
            movwf       Sec7
            clrf        Sec000
            bsf         Sec000,5
            ;bsf         SecMAX,7
            goto        ROTOR
START17     movlw       .3       ;36,25Hz
            movwf       Sec12
            movlw       .54
            movwf       Sec1
            movlw       .60
            movwf       Sec2
            movlw       .167
            movwf       Sec3 
            movlw       .33
            movwf       Sec4
            movlw       .86
            movwf       Sec5
            movlw       .154
            movwf       Sec6
            movlw       .31
            movwf       Sec7
            clrf        Sec000
            bsf         Sec000,4
            ;bsf         SecMAX,7
            goto        ROTOR
START16     movlw       .3       ;35,01Hz
            movwf       Sec12
            movlw       .60
            movwf       Sec1
            movlw       .60
            movwf       Sec2
            movlw       .167
            movwf       Sec3 
            movlw       .39
            movwf       Sec4
            movlw       .92
            movwf       Sec5
            movlw       .155
            movwf       Sec6
            movlw       .37
            movwf       Sec7
            clrf        Sec000
            bsf         Sec000,3
            ;bsf         SecMAX,7
            goto        ROTOR
START15     movlw       .3       ;33,76Hz
            movwf       Sec12
            movlw       .66
            movwf       Sec1
            movlw       .60
            movwf       Sec2
            movlw       .167
            movwf       Sec3 
            movlw       .45
            movwf       Sec4
            movlw       .98
            movwf       Sec5
            movlw       .155
            movwf       Sec6
            movlw       .44
            movwf       Sec7
            clrf        Sec000
            bsf         Sec000,2
            ;bsf         SecMAX,7
            goto        ROTOR
START14     movlw       .3       ;32,51Hz
            movwf       Sec12
            movlw       .73
            movwf       Sec1
            movlw       .61
            movwf       Sec2
            movlw       .168
            movwf       Sec3 
            movlw       .52
            movwf       Sec4
            movlw       .105
            movwf       Sec5
            movlw       .155
            movwf       Sec6
            movlw       .51
            movwf       Sec7
            clrf        Sec000
            bsf         Sec000,1
            ;bsf         SecMAX,7
            goto        ROTOR
START13     movlw       .3       ;31,25Hz
            movwf       Sec12
            movlw       .80
            movwf       Sec1
            movlw       .61
            movwf       Sec2
            movlw       .169
            movwf       Sec3 
            movlw       .58
            movwf       Sec4
            movlw       .112
            movwf       Sec5
            movlw       .156
            movwf       Sec6
            movlw       .57
            movwf       Sec7
            clrf        Sec00
            clrf        Sec000
            bsf         Sec000,0
            ;bsf         SecMAX,7
            goto        ROTOR
START12     movlw       .3       ;30Hz
            movwf       Sec12
            movlw       .88
            movwf       Sec1
            movlw       .61
            movwf       Sec2
            movlw       .169
            movwf       Sec3 
            movlw       .66
            movwf       Sec4
            movlw       .120
            movwf       Sec5
            movlw       .151
            movwf       Sec6
            movlw       .65
            movwf       Sec7
            clrf        Sec00
            bsf         Sec00,7
            ;bsf         SecMAX,7
            goto        ROTOR
START11     movlw       .4       ;28,75Hz
            movwf       Sec12
            movlw       .72
            movwf       Sec1
            movlw       .43
            movwf       Sec2
            movlw       .123
            movwf       Sec3 
            movlw       .57
            movwf       Sec4
            movlw       .97
            movwf       Sec5
            movlw       .114
            movwf       Sec6
            movlw       .56
            movwf       Sec7           
            clrf        Sec00
            bsf         Sec00,6
            ;bsf         SecMAX,7
            goto        ROTOR            
START1      movlw       .4       ;27,5Hz
            movwf       Sec12
            movlw       .82
            movwf       Sec1
            movlw       .42
            movwf       Sec2
            movlw       .120
            movwf       Sec3 
            movlw       .67
            movwf       Sec4
            movlw       .105
            movwf       Sec5
            movlw       .111
            movwf       Sec6
            movlw       .65
            movwf       Sec7
            clrf        Sec00
            bsf         Sec00,5
            goto        ROTOR
START2      movlw       .4       ;26,25Hz
            movwf       Sec12
            movlw       .91
            movwf       Sec1
            movlw       .42
            movwf       Sec2
            movlw       .119
            movwf       Sec3 
            movlw       .76
            movwf       Sec4
            movlw       .114
            movwf       Sec5
            movlw       .110
            movwf       Sec6
            movlw       .75
            movwf       Sec7
            clrf        Sec00
            bsf         Sec00,4 
            goto        ROTOR
START3      movlw       .4       ;25Hz
            movwf       Sec12
            movlw       .98
            movwf       Sec1
            movlw       .42
            movwf       Sec2
            movlw       .120
            movwf       Sec3 
            movlw       .83
            movwf       Sec4
            movlw       .122
            movwf       Sec5
            movlw       .111
            movwf       Sec6
            movlw       .82
            movwf       Sec7
            clrf        Sec00
            bsf         Sec00,3 
            goto        ROTOR
START4      movlw       .4      ;23,75Hz
            movwf       Sec12
            movlw       .109
            movwf       Sec1
            movlw       .42
            movwf       Sec2
            movlw       .119
            movwf       Sec3 
            movlw       .94
            movwf       Sec4
            movlw       .132
            movwf       Sec5
            movlw       .110
            movwf       Sec6
            movlw       .93
            movwf       Sec7
            clrf        Sec00
            bsf         Sec00,2
            goto        ROTOR
START5      movlw       .5      ;22,5Hz
            movwf       Sec12
            movlw       .94
            movwf       Sec1
            movlw       .32
            movwf       Sec2
            movlw       .94
            movwf       Sec3 
            movlw       .82
            movwf       Sec4
            movlw       .113
            movwf       Sec5
            movlw       .88
            movwf       Sec6
            movlw       .82
            movwf       Sec7            
            clrf        Sec00
            bsf         Sec00,1
            goto        ROTOR
;*************************************************************************************
;                              Ядро программы ШИМ
;*************************************************************************************
UP          nop
            nop
ROTOR1      nop
            movlw       .42
            movwf       PortB       ;Включение всех нижних ключей 2,4,6
            decfsz      Sec11,F
            goto        Hz7
            movf        Sec12,0
            movwf       Sec11
            incf        Sec10,F     ;Осуществление поворота вектора потока 
            btfsc       Sec10,1      
            goto        Hz0
            nop    
            goto        Hz1          
Hz0         btfsc       Sec10,0      
            clrf        Sec10                           
Hz1         movf        Sec1,0      ;Начало первой линии
            movwf       Sec0
run1_1      decfsz      Sec0,F
            goto        run1_1
            movlw       .106
            btfsc       Sec10,0
            goto        Vector1
            btfsc       Sec10,1
            goto        Revers1     ;Ветвление фаз
            movlw       .58
            movwf       PortB       ;Выключение ключа 4 фазы В
            goto        AA
AA          goto        BB
BB          nop
            movlw       .50
            movwf       PortB       ;Включение ключа 3 фазы В
            goto        Next1
Vector1     nop
            nop
            movlw       .46
            movwf       PortB       ;Выключение ключа 2 фазы A
            goto        CC
CC          goto        DD
DD          nop
            movlw       .44
            movwf       PortB       ;Включение ключа 1 фазы A
            goto        Next1
Revers1     movwf       PortB       ;Выключение ключа 6 фазы C
            goto        EE
EE          goto        FF
FF          nop
            movlw       .74
            movwf       PortB       ;Включение ключа 5 фазы C
            nop
            nop
Next1       movf        Sec2,0
            movwf       Sec0
run1_2      decfsz      Sec0,F
            goto        run1_2
            nop
            movlw       .90
            btfsc       Sec10,0
            goto        Vector1_1
            btfsc       Sec10,1
            goto        Revers1_1   ;Ветвление фаз
            movlw       .54
            movwf       PortB       ;Выключение ключа 2 фазы А
            goto        GG
GG          goto        HH
HH          nop
            movlw       .52
            movwf       PortB       ;Включение ключа 1 фазы А
            goto        Next_1
Vector1_1   nop
            movlw       .108
            movwf       PortB       ;Выключение ключа 6 фазы C
            goto        II
II          goto        JJ
JJ          nop
            movlw       .76
            movwf       PortB       ;Включение ключа 5 фазы C
            goto        Next_1
Revers1_1   movwf       PortB       ;Выключение ключа 4 фазы B
            goto        KK
KK          goto        LL
LL          nop
            movlw       .82
            movwf       PortB       ;Включение ключа 3 фазы B
            nop
            nop
Next_1      movf        Sec3,0
            movwf       Sec0
run2_2      decfsz      Sec0,F
            goto        run2_2
            movlw       .86
            btfsc       Sec10,0
            goto        Vector2
            btfsc       Sec10,1
            goto        Revers2     ;Ветвление фаз
            movlw       .116
            movwf       PortB       ;Выключение ключа 6 фазы С
            goto        MM
MM          goto        NN
NN          nop
            movlw       .84
            movwf       PortB       ;Включение ключа 5 фазы С
            goto        Next2
Vector2     nop
            movlw       .92
            movwf       PortB       ;Выключение ключа 4 фазы B
            goto        OO
OO          goto        PP
PP          nop
            movlw       .84
            movwf       PortB       ;Включение ключа 3 фазы B
            goto        Next2
Revers2     movwf       PortB       ;Выключение ключа 2 фазы A
            goto        QQ
QQ          goto        RR
RR          nop
            movlw       .84
            movwf       PortB       ;Включение ключа 1 фазы A
            nop
            nop
Next2       movf        Sec4,0          
            movwf       Sec0
run2_3      decfsz      Sec0,F
            goto        run2_3 
            btfss       PortB,7     ;!!!Проверка просадки DC звена.
            goto        F02
            nop
            nop
            nop
            nop
            clrwdt                                
            movlw       .126
            movwf       PortB       ;Выключение всех верхних ключей 1,2,3                      
            goto        SS
SS          goto        TT
TT          nop
            movlw       .42
            movwf       PortB       ;Включение всех нижних ключей 2,4,6
            decfsz      Sec11,F
            goto        Hz1
            movf        Sec12,0
            movwf       Sec11      
Hz2         movf        Sec5,0      ;Начало второй линии
            movwf       Sec0
run2        decfsz      Sec0,F
            goto        run2
            btfsc       Sec10,0
            goto        Vector3
            btfsc       Sec10,1
            goto        Revers3     ;Ветвление фаз
            nop
            movlw       .62
            movwf       PortB       ;Выключение 2 и 4 ключей(Фазы А и В равны)
            goto        UU
UU          goto        VV
VV          nop
            movlw       .52
            movwf       PortB       ;Включение 1 и 3 ключей
            goto        Next3
Vector3     nop
            nop
            movlw       .110
            movwf       PortB       ;Выключение 2 и 6 Ключей(А и С равны)
            goto        WW
WW          goto        XX
XX          nop
            movlw       .76
            movwf       PortB       ;Включение 1 и 5 Ключей
            goto        Next3
Revers3     movlw       .122    
            movwf       PortB       ;Выключение 4 и 6 Ключей(B и С равны)
            goto        YY
YY          goto        ZZ
ZZ          nop
            movlw       .82
            movwf       PortB       ;Включение 3 и 5 Ключей
            nop
            nop
Next3       movf        Sec6,0
            movwf       Sec0
run3        nop
            decfsz      Sec0,F
            goto        run3
            movlw       .86
            btfsc       Sec10,0
            goto        Vector4 
            btfsc       Sec10,1
            goto        Revers4     ;Ветвление faz
            movlw       .116
            movwf       PortB       ;Выключение ключа 6 фазы С
            goto        A1
A1          goto        A2
A2          nop
            movlw       .84
            movwf       PortB       ;Включение ключа 5 фазы С
            goto        Next4
Vector4     nop
            movlw       .92
            movwf       PortB       ;Выключение ключа 4 фазы B
            goto        A3
A3          goto        A4
A4          nop
            movlw       .84
            movwf       PortB       ;Включение ключа 3 фазы B
            goto        Next4
Revers4     movwf       PortB       ;Выключение ключа 2 фазы A
            goto        A5
A5          goto        A6
A6          nop
            movlw       .84
            movwf       PortB       ;Включение ключа 1 фазы A
            nop
            nop
Next4       movf        Sec7,0
            movwf       Sec0
run4        decfsz      Sec0,F
            goto        run4
            nop
            nop
            nop
            nop
            nop
            nop
            clrwdt
            movlw       .126
            movwf       PortB       ;Выключение всех верхних ключей 1,2,3                      
            goto        A7
A7          goto        A8
A8          nop
            movlw       .42   
            movwf       PortB       ;Включение всех нижних ключей 2,4,6
            decfsz      Sec11,F
            goto        Hz2
            movf        Sec12,0
            movwf       Sec11
Hz3         movf        Sec1,0         ;Начало 3 линии
            movwf       Sec0
run5        decfsz      Sec0,F
            goto        run5
            nop
            nop
            nop
            nop
            nop
            nop
            movlw       .58
            btfsc       Sec10,0
            goto        Vector5
            btfsc       Sec10,1
            goto        Revers5     ;Ветвление фаз
            movlw       .46
            movwf       PortB       ;Выключение ключа 2 фазы A
            goto        A9
A9          goto        A10
A10         nop
            movlw       .44
            movwf       PortB       ;Включение ключа 1 фазы A
            goto        Next5
Vector5     nop
            movlw       .106
            movwf       PortB       ;Выключение ключа 6 фазы C
            goto        A11
A11         goto        A12
A12         nop
            movlw       .74
            movwf       PortB       ;Включение ключа 5 фазы C
            goto        Next5
Revers5     movwf       PortB       ;Выключение ключа 4 фазы B
            goto        A13
A13         goto        A14
A14         nop
            movlw       .50
            movwf       PortB       ;Включение ключа 3 фазы B
            nop
            nop
Next5       movf        Sec2,0
            movwf       Sec0
run6        decfsz      Sec0,F
            goto        run6
            nop
            movlw       .114
            btfsc       Sec10,0
            goto        Vector6
            btfsc       Sec10,1
            goto        Revers6     ;Ветвление фаз
            movlw       .60
            movwf       PortB       ;Выключение ключа 4 фазы B
            goto        A15
A15         goto        A16
A16         nop
            movlw       .52
            movwf       PortB       ;Включение ключа 3 фазы B
            goto        Next6
Vector6     nop
            movlw       .78
            movwf       PortB       ;Выключение ключа 2 фазы A
            goto        A17
A17         goto        A18
A18         nop
            movlw       .76
            movwf       PortB       ;Включение ключа 1 фазы A
            goto        Next6
Revers6     movwf       PortB       ;Выключение ключа 6 фазы C
            goto        A19
A19         goto        A20
A20         nop
            movlw       .82
            movwf       PortB       ;Включение ключа 5 фазы C
            nop
            nop                      
Next6       movf        Sec3,0
            movwf       Sec0
run7        decfsz      Sec0,F
            goto        run7
                                    ;Подгонка частот.
            movlw       .86            
            btfsc       Sec10,0
            goto        Vector7
            btfsc       Sec10,1
            goto        Revers7     ;Ветвление фаз
            movlw       .116
            movwf       PortB       ;Выключение ключа 6 фазы С
            goto        A21
A21         goto        A22
A22         nop
            movlw       .84
            movwf       PortB       ;Включение ключа 5 фазы С
            goto        Next7
Vector7     nop
            movlw       .92
            movwf       PortB       ;Выключение ключа 4 фазы B
            goto        A23
A23         goto        A24
A24         nop
            movlw       .84
            movwf       PortB       ;Включение ключа 3 фазы B
            goto        Next7
Revers7     movwf       PortB       ;Выключение ключа 2 фазы A,,,,,40 -1мкс
            goto        A25
A25         goto        A26
A26         nop
            movlw       .84
            movwf       PortB       ;Включение ключа 1 фазы A
            nop
            nop
Next7       movf        Sec4,0          
            movwf       Sec0
run8        decfsz      Sec0,F
            goto        run8 
            nop
            nop
            nop
            nop
            nop
            nop
            clrwdt
            movlw       .126
            movwf       PortB       ;Выключение всех верхних ключей 1,2,3                      
            goto        A27
A27         goto        A28
A28         nop
            movlw       .42
            movwf       PortB       ;Включение всех нижних ключей 2,4,6
            decfsz      Sec11,F
            goto        Hz3
            movf        Sec12,0
            movwf       Sec11
                                    
Hz5         movf        Sec4,0      ;Начало четвертой линии
            movwf       Sec0
run13       decfsz      Sec0,F
            goto        run13
            ;nop                     ;Подгонка частот(dsrbyenm d vfyle)
            movlw       .58
            btfsc       Sec10,0
            goto        Vector11
            btfsc       Sec10,1
            goto        Revers11    ;Ветвление фаз
            movlw       .46
            movwf       PortB       ;Выключение ключа 2 фазы A
            goto        A29
A29         goto        A30
A30         nop
            movlw       .44
            movwf       PortB       ;Включение ключа 1 фазы A
            goto        Next11
Vector11    nop
            movlw       .106
            movwf       PortB       ;Выключение ключа 6 фазы C
            goto        A31
A31         goto        A32
A32         nop
            movlw       .74
            movwf       PortB       ;Включение ключа 5 фазы C
            goto        Next11
Revers11    movwf       PortB       ;Выключение ключа 4 фазы B,,,,68-1мкс
            goto        A33
A33         goto        A34
A34         nop
            movlw       .50
            movwf       PortB       ;Включение ключа 3 фазы B
            nop
            nop
Next11      movf        Sec3,0
            movwf       Sec0
run14       decfsz      Sec0,F
            goto        run14
            movlw       .114              
            btfsc       Sec10,0
            goto        Vector12
            btfsc       Sec10,1
            goto        Revers12    ;Ветвление фаз
            movlw       .60
            movwf       PortB       ;Выключение ключа 4 фазы B
            goto        A35
A35         goto        A36
A36         nop
            movlw       .52
            movwf       PortB       ;Включение ключа 3 фазы B
            goto        Next12
Vector12    nop
            movlw       .78
            movwf       PortB       ;Выключение ключа 2 фазы A
            goto        A37
A37         goto        A38
A38         nop
            movlw       .76
            movwf       PortB       ;Включение ключа 1 фазы A
            goto        Next12
Revers12    movwf       PortB       ;Выключение ключа 6 фазы C,,,,,12-1мкс
            goto        A39
A39         goto        A40
A40         nop
            movlw       .82
            movwf       PortB       ;Включение ключа 5 фазы C
            nop
            nop
Next12      movf        Sec2,0
            movwf       Sec0
run15       decfsz      Sec0,F
            goto        run15
            nop
            movlw       .86
            btfsc       Sec10,0
            goto        Vector13
            btfsc       Sec10,1
            goto        Revers13    ;Ветвление фаз
            movlw       .116
            movwf       PortB       ;Выключение ключа 6 фазы С
            goto        A41
A41         goto        A42
A42         nop
            movlw       .84
            movwf       PortB       ;Включение ключа 5 фазы С
            goto        Next13
Vector13    nop
            movlw       .92
            movwf       PortB       ;Выключение ключа 4 фазы B
            goto        A43
A43         goto        A44
A44         nop
            movlw       .84
            movwf       PortB       ;Включение ключа 3 фазы B
            goto        Next13
Revers13    movwf       PortB       ;Выключение ключа 2 фазы A
            goto        A45
A45         goto        A46
A46         nop
            movlw       .84
            movwf       PortB       ;Включение ключа 1 фазы A
            nop
            nop
Next13      movf        Sec1,0          
            movwf       Sec0
run16       decfsz      Sec0,F
            goto        run16
            btfss       PortA,1     ;Разгон с кнопки и автомат
            bsf         AUTRUN,1
            btfsc       PortA,1
            bcf         AUTRUN,1
            ;btfsc       PortA,1
            ;bsf         AUTRUN,1
            btfss        ON,7
            bsf         AUTRUN,1
            nop
            nop
            nop
            nop
            nop
            nop
            clrwdt
            movlw       .126
            movwf       PortB        ;Выключение всех верхних ключей 1,2,3                      
            goto        A47
A47         goto        A48
A48         nop
            movlw       .42
            movwf       PortB        ;Включение всех нижних ключей 2,4,6
            decfsz      Sec11,F
            goto        Hz5
            movf        Sec12,0
            movwf       Sec11
Hz6         movf        Sec7,0       ;Начало пятой линии
            movwf       Sec0
run17       decfsz      Sec0,F
            goto        run17
            movlw       .58
            btfsc       Sec10,0
            goto        Vector14
            btfsc       Sec10,1
            goto        Revers14     ;Ветвление фаз
            movlw       .46
            movwf       PortB        ;Выключение 2 ключа фазы А
            goto        A49
A49         goto        A50
A50         nop
            movlw       .44
            movwf       PortB        ;Включение 1 ключа фазы А
            goto        Next14
Vector14    nop
            movlw       .106
            movwf       PortB        ;Выключение 6 Ключа фазы С
            goto        A51
A51         goto        A52
A52         nop            
            movlw       .74
            movwf       PortB        ;Включение ключа 5 фазы С
            goto        Next14     
Revers14    movwf       PortB        ;Выключение 4 ключа фазы B,,,,68-1мкс
            goto        A53
A53         goto        A54
A54         nop
            movlw       .50 
            movwf       PortB        ;Включение 3 ключа фазы В
            nop
            nop
Next14      movf        Sec6,0
            movwf       Sec0
run18       nop
            decfsz      Sec0,F
            goto        run18
            btfsc       Sec10,0
            goto        Vector15
            btfsc       Sec10,1
            goto        Revers15    ;Ветвление фаз
            nop
            movlw       .124
            movwf       PortB       ;Выключение 4 и 6 ключей(Фазы B и C равны)
            goto        A55
A55         goto        A56
A56         nop
            movlw       .84
            movwf       PortB       ;Включение 3 и 5 ключей
            goto        Next15
Vector15    nop
            nop
            movlw       .94
            movwf       PortB       ;Выключение 2 и 4 Ключей(А и B равны)
            goto        A57
A57         goto        A58
A58         nop            
            movlw       .84
            movwf       PortB       ;Включение 1 и 3 Ключей
            goto        Next15
Revers15    movlw       .118    
            movwf       PortB       ;Выключение 2 и 6 Ключей(A и С равны)
            goto        A59
A59         goto        A60
A60         nop
            movlw       .84
            movwf       PortB       ;Включение 1 и 5 Ключей
            nop
            nop
Next15      movf        Sec5,0
            movwf       Sec0
run19       decfsz      Sec0,F
            goto        run19
            btfss       PortA,2     ; Команда выхода (Стоп)
            goto        Stop
            btfsc       SecMAX,7    ; Не осуществлять далее ускорение, (ограничение максимальной частоты).
            bsf         ACCSEL,7
            nop
            nop
            clrwdt
            movlw       .126
            movwf       PortB       ;Выключение всех верхних ключей 1,2,3                      
            goto        A61
A61         goto        A62
A62         nop
            movlw       .42   
            movwf       PortB       ;Включение всех нижних ключей 2,4,6
            decfsz      Sec11,F
            goto        Hz6
            movf        Sec12,0
            movwf       Sec11
Hz7         movf        Sec4,0      ;Начало шестой линии
            movwf       Sec0
run20       decfsz      Sec0,F
            goto        run20
            movlw       .58
            btfsc       Sec10,0
            goto        Vector16
            btfsc       Sec10,1
            goto        Revers16    ;Ветвление фаз
            movlw       .46
            movwf       PortB       ;Выключение ключа 2 фазы A
            goto        A63
A63         goto        A64
A64         nop
            movlw       .44
            movwf       PortB       ;Включение ключа 1 фазы A
            goto        Next16
Vector16    nop
            movlw       .106
            movwf       PortB       ;Выключение ключа 6 фазы C
            goto        A65
A65         goto        A66
A66         nop
            movlw       .74
            movwf       PortB       ;Включение ключа 5 фазы C
            goto        Next16
Revers16    movwf       PortB       ;Выключение ключа 4 фазы B
            goto        A67
A67         goto        A68
A68         nop
            movlw       .50
            movwf       PortB       ;Включение ключа 3 фазы B
            nop
            nop
Next16      movf        Sec3,0
            movwf       Sec0
run21       decfsz      Sec0,F
            goto        run21
            movlw       .54
            btfsc       Sec10,0
            goto        Vector17
            btfsc       Sec10,1
            goto        Revers17    ;Ветвление фаз
            movlw       .108
            movwf       PortB       ;Выключение ключа 6 фазы C
            goto        A69
A69         goto        A70
A70         nop
            movlw       .76
            movwf       PortB       ;Включение ключа 5 фазы C
            goto        Next17
Vector17    nop
            movlw       .90
            movwf       PortB       ;Выключение ключа 4 фазы B
            goto        A71
A71         goto        A72
A72         nop
            movlw       .82
            movwf       PortB       ;Включение ключа 3 фазы B
            goto        Next17
Revers17    movwf       PortB       ;Выключение ключа 2 фазы A
            goto        A73
A73         goto        A74
A74         nop
            movlw       .52
            movwf       PortB       ;Включение ключа 1 фазы A
            nop
            nop
Next17      movf        Sec2,0
            movwf       Sec0
run22       decfsz      Sec0,F
            goto        run22
            nop
            movlw       .116
            btfsc       Sec10,0
            goto        Vector18
            btfsc       Sec10,1
            goto        Revers18    ;Ветвление фаз
            movlw       .92
            movwf       PortB       ;Выключение ключа 4 фазы B
            goto        A75
A75         goto        A76
A76         nop                   
            movlw       .84
            movwf       PortB       ;Включение ключа 3 фазы B
            goto        Next18
Vector18    nop
            movlw       .86
            movwf       PortB       ;Выключение ключа 2 фазы A
            goto        A77
A77         goto        A78
A78         nop
            movlw       .84
            movwf       PortB       ;Включение ключа 1 фазы A
            goto        Next18
Revers18    movwf       PortB       ;Выключение ключа 6 фазы C
            goto        A79
A79         goto        A80
A80         nop
            movlw       .84
            movwf       PortB       ;Включение ключа 5 фазы C
            nop
            nop
Next18      movf        Sec1,0          
            movwf       Sec0
run23       decfsz      Sec0,F
            goto        run23 
            decfsz      ACCSEL,F    ;Управление разгоном
            goto        DRIVE       ;Нет опроса
            btfsc       AUTRUN,1    ;Опрос регистра разгона
            goto        Delay       ;Следующая частота
            incf        ACCSEL,F    ;Нет разгона
RET         nop                     ;Далее работа ШИМ
            nop
            nop
            nop
            nop
            nop
            nop
            clrwdt
            movlw       .126
            movwf       PortB       ;Выключение всех верхних ключей 1,2,3                      
            goto        UP
DRIVE       goto        RET         ; Коррекция 2 тактов
;*******************************************************************************
;       Управление, и изменение частот вращения вектора(констант) 
;*******************************************************************************
Stop        movlw       .126
            movwf       PortB
            movlw        .16
            movwf        PortA
            clrf        Sec100
            clrf        ACCSEL
            clrf        AUTRUN
            clrf        Sec000
            clrf        Sec010
            movlw       .1
            movwf       Sec00
            movlw       .0
            movwf       SecM
            clrf        SecMAX
            clrwdt
            btfss       PortA,2
            goto        Stop
            btfss       PortA,2
            goto        Stop
            ;btfss       PortA,2     ;Проверка-Стоп по кнопке или по ошибке DC звена.
            ;goto        RRE
            ;goto        RUNN
            
;===================================================================================
;                               Переключения направления вращения.
;===================================================================================
;RRE         btfss       PortA,1
 ;           goto        FIT
   ;         btfss       PortA,2
   ;         goto        Stop
   ;         goto        FFI
;FIT         btfss       REVERS,7
 ;           goto        FITT
  ;          bcf         REVERS,7
   ;         goto        FFI
;FITT        bsf         REVERS,7
 ;           goto        FFI
;FFI         btfss       PortA,2
;            goto        FFI
 ;           btfss       PortA,2
;            goto        FFI
;===================================================================================
;                  Проверка DC звена, направления вращения и ожидание пуска
;===================================================================================
RUNN        clrwdt
            btfss       PortB,7
            goto        F02
            btfss       PortB,7
            goto        F02
            movlw       .127        ;Индикация готовности к включению
            movwf       PortB
            movlw       .39        ;Установка константы для начальной частоты
            movwf       ON
            clrf        REVERS
            btfsc       PortA,0
            bsf         REVERS,7
            btfsc       PortA,0
            bsf         PortA,3     ; Индикация реверса
            btfss       PortA,0
            bcf         PortA,3     ; Индикация реверса откл.
            btfss       PortA,2
            goto        Stop
            btfss       PortA,2
            goto        Stop
            btfsc       PortA,1
            goto        RUNN
            btfsc       PortA,1
            goto        RUNN
            ;RUNNN       btfss       PortA,1
            ;goto        RUNNN
            ;btfss       PortA,1
            ;goto        RUNNN
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;                       Подготовка драйверов силовых ключей
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            movlw       .42   
            movwf       PortB       ;Включаем всю нижнюю (эмиттерную) группу
ZAR         decfsz      ACCSEL,F
            goto        ZAR
ZAR2        decfsz      ACCSEL,F
            goto        ZAR2
            movlw       .126
            movwf       PortB       ;Выключаем группу
            goto        A79X
A79X        goto        A80X
A80X        nop
            movlw       .84
            movwf       PortB       ;Включаем всю верхнюю (коллекторную) группу
ZA          decfsz      ACCSEL,F
            goto        ZA
ZA2         decfsz      ACCSEL,F
            goto        ZA2
            movlw       .126
            movwf       PortB       ;Выключаем группу   
;===================================================================================
;                         Изменение частот вращения
;===================================================================================
Delay       clrwdt      
            movlw       .126
            movwf       PortB
            movlw        .16        
            movwf        ACCSEL    ;Время переключения ступеней
            ;btfss       PortA,1
            ;goto        Delay
            btfss       SecM,4     ;Считывание из EEPROM 
            goto        DEREC
            ;btfsc       Sec00,5
            ;goto       Stop       ; Можно скинуть с 55 до 10Hz, ACCSEL,7 не BSF; и очистить Sec100
            btfsc       Sec010,6   
            goto        START28
            btfsc       Sec010,5   
            goto        START27
            btfsc       Sec010,4   
            goto        START26
            btfsc       Sec010,3
            goto        START25
            btfsc       Sec010,2
            goto        START24 
            btfsc       Sec010,1
            goto        START23
            btfsc       Sec010,0
            goto        START22
            btfsc       Sec000,7
            goto        START21
            btfsc       Sec000,6
            goto        START20
            btfsc       Sec000,5
            goto        START19
            btfsc       Sec000,4
            goto        START18
            btfsc       Sec000,3
            goto        START17
            btfsc       Sec000,2
            goto        START16
            btfsc       Sec000,1
            goto        START15
            btfsc       Sec000,0
            goto        START14
            btfsc       Sec00,7
            goto        START13
            btfsc       Sec00,6
            goto        START12
            btfsc       Sec00,5
            goto        START11
            btfsc       Sec00,4
            goto        START1
            btfsc       Sec00,3
            goto        START2
            btfsc       Sec00,2
            goto        START3
            btfsc       Sec00,1
            goto        START4
            btfsc       Sec00,0
            goto        START5
            goto        Stop
;-------------------------------------------------------------------------------
;            Извлечение таблицы констант из EEPROM памяти данных
;-------------------------------------------------------------------------------              
DEREC       movlw       .8
            movwf       Sec200
            movlw       .32
            movwf       FSR       ; Запись начального адреса.
REC         movf        Sec100,0
            clrf        Status
            bsf         Status,5
            movwf       EEAdr     ; Стандартная процедура чтения EEPROM.
            ;bsf         Status,5
            bsf         EECon1,0
            ;bcf         Status,5
            movf        EEData,0
            clrf        Status
            movwf       INDF      ; Запись констант по косвенной адресации.
            incf        FSR,F     ; Следующий адрес.
            incf        Sec100,F
            decfsz      Sec200,F  ; Отслеживание окончания записи 8 чисел.
            goto        REC
            incf        SecM,F    ; Отслеживание считывания всех чисел.
            incf        ON,F      ; Отслеживание начальной скорости (10Гц)
            goto        ROTOR
;**********************************************************************************
;                         Ядро программы ШИМ (реверс)
;**********************************************************************************
UPr         nop
            nop
ROTOR2      nop
            movlw       .42
            movwf       PortB       ;Включение всех нижних ключей 2,4,6
            decfsz      Sec11,F
            goto        Hz7r
            movf        Sec12,0
            movwf       Sec11
            incf        Sec10,F     ;Осуществление поворота вектора потока 
            btfsc       Sec10,1      
            goto        Hz0r
            nop    
            goto        Hz1r          
Hz0r        btfsc       Sec10,0      
            clrf        Sec10                           
Hz1r        movf        Sec1,0      ;Начало первой линии
            movwf       Sec0
run1_1r     decfsz      Sec0,F
            goto        run1_1r
            movlw       .106
            btfsc       Sec10,0
            goto        Vector1r
            btfsc       Sec10,1
            goto        Revers1r     ;Ветвление фаз
            movlw       .46
            movwf       PortB       ;Выключение ключа 2 фазы A
            goto        AAr
AAr          goto        BBr
BBr          nop
            movlw       .44
            movwf       PortB       ;Включение ключа 1 фазы A
            goto        Next1r
Vector1r     nop                                                
            nop
            movlw       .58
            movwf       PortB       ;Выключение ключа 4 фазы B
            goto        CCr
CCr          goto        DDr
DDr          nop
            movlw       .50
            movwf       PortB       ;Включение ключа 3 фазы B  !!!Далее А это В а В это А
            goto        Next1r
Revers1r     movwf       PortB       ;Выключение ключа 6 фазы C
            goto        EEr
EEr          goto        FFr
FFr          nop
            movlw       .74
            movwf       PortB       ;Включение ключа 5 фазы C
            nop
            nop
Next1r       movf        Sec2,0
            movwf       Sec0
run1_2r      decfsz      Sec0,F
            goto        run1_2r
            nop
            movlw       .78
            btfsc       Sec10,0
            goto        Vector1_1r
            btfsc       Sec10,1
            goto        Revers1_1r   ;Ветвление фаз
            movlw       .60
            movwf       PortB       ;Выключение ключа 2 фазы А
            goto        GGr
GGr          goto        HHr
HHr          nop
            movlw       .52
            movwf       PortB       ;Включение ключа 1 фазы А
            goto        Next_1r
Vector1_1r   nop
            movlw       .114
            movwf       PortB       ;Выключение ключа 6 фазы C
            goto        IIr
IIr          goto        JJr
JJr          nop
            movlw       .82
            movwf       PortB       ;Включение ключа 5 фазы C
            goto        Next_1r
Revers1_1r   movwf       PortB       ;Выключение ключа 4 фазы B
            goto        KKr
KKr          goto        LLr
LLr          nop
            movlw       .76
            movwf       PortB       ;Включение ключа 3 фазы B
            nop
            nop
Next_1r      movf        Sec3,0
            movwf       Sec0
run2_2r      decfsz      Sec0,F
            goto        run2_2r
            movlw       .92
            btfsc       Sec10,0
            goto        Vector2r
            btfsc       Sec10,1
            goto        Revers2r     ;Ветвление фаз
            movlw       .116
            movwf       PortB       ;Выключение ключа 6 фазы С
            goto        MMr
MMr          goto        NNr
NNr          nop
            movlw       .84
            movwf       PortB       ;Включение ключа 5 фазы С
            goto        Next2r
Vector2r     nop
            movlw       .86
            movwf       PortB       ;Выключение ключа 4 фазы B
            goto        OOr
OOr          goto        PPr
PPr          nop
            movlw       .84
            movwf       PortB       ;Включение ключа 3 фазы B
            goto        Next2r
Revers2r     movwf       PortB       ;Выключение ключа 2 фазы A
            goto        QQr
QQr          goto        RRr
RRr          nop
            movlw       .84
            movwf       PortB       ;Включение ключа 1 фазы A
            nop
            nop
Next2r       movf        Sec4,0          
            movwf       Sec0
run2_3r      decfsz      Sec0,F
            goto        run2_3r  
            btfss       PortB,7     ;!!!Проверка просадки DC звена.
            goto        F02
            nop
            nop
            nop
            nop
            clrwdt                                
            movlw       .126
            movwf       PortB       ;Выключение всех верхних ключей 1,2,3                      
            goto        SSr
SSr          goto        TTr
TTr          nop
            movlw       .42
            movwf       PortB       ;Включение всех нижних ключей 2,4,6
            decfsz      Sec11,F
            goto        Hz1r
            movf        Sec12,0
            movwf       Sec11      
Hz2r         movf        Sec5,0      ;Начало второй линии
            movwf       Sec0
run2r        decfsz      Sec0,F
            goto        run2r
            btfsc       Sec10,0
            goto        Vector3r
            btfsc       Sec10,1
            goto        Revers3r     ;Ветвление фаз
            nop
            movlw       .62
            movwf       PortB       ;Выключение 2 и 4 ключей(Фазы А и В равны)
            goto        UUr
UUr          goto        VVr
VVr          nop
            movlw       .52
            movwf       PortB       ;Включение 1 и 3 ключей
            goto        Next3r
Vector3r     nop
            nop
            movlw       .122
            movwf       PortB       ;Выключение 2 и 6 Ключей(А и С равны)
            goto        WWr
WWr          goto        XXr
XXr          nop
            movlw       .82
            movwf       PortB       ;Включение 1 и 5 Ключей
            goto        Next3r
Revers3r     movlw       .110    
            movwf       PortB       ;Выключение 4 и 6 Ключей(B и С равны)
            goto        YYr
YYr          goto        ZZr
ZZr          nop
            movlw       .76
            movwf       PortB       ;Включение 3 и 5 Ключей
            nop
            nop
Next3r       movf        Sec6,0
            movwf       Sec0
run3r        nop
            decfsz      Sec0,F
            goto        run3r
            movlw       .92
            btfsc       Sec10,0
            goto        Vector4r 
            btfsc       Sec10,1
            goto        Revers4r     ;Ветвление faz
            movlw       .116
            movwf       PortB       ;Выключение ключа 6 фазы С
            goto        A1r
A1r          goto        A2r
A2r          nop
            movlw       .84
            movwf       PortB       ;Включение ключа 5 фазы С
            goto        Next4r
Vector4r     nop
            movlw       .86
            movwf       PortB       ;Выключение ключа 4 фазы B
            goto        A3r
A3r          goto        A4r
A4r          nop
            movlw       .84
            movwf       PortB       ;Включение ключа 3 фазы B
            goto        Next4r
Revers4r     movwf       PortB       ;Выключение ключа 2 фазы A
            goto        A5r
A5r          goto        A6r
A6r          nop
            movlw       .84
            movwf       PortB       ;Включение ключа 1 фазы A
            nop
            nop
Next4r       movf        Sec7,0
            movwf       Sec0
run4r        decfsz      Sec0,F
            goto        run4r
            nop
            nop
            nop
            nop
            nop
            nop
            clrwdt
            movlw       .126
            movwf       PortB       ;Выключение всех верхних ключей 1,2,3                      
            goto        A7r
A7r          goto        A8r
A8r          nop
            movlw       .42   
            movwf       PortB       ;Включение всех нижних ключей 2,4,6
            decfsz      Sec11,F
            goto        Hz2r
            movf        Sec12,0
            movwf       Sec11
Hz3r         movf        Sec1,0         ;Начало 3 линии
            movwf       Sec0
run5r        decfsz      Sec0,F
            goto        run5r
            nop
            nop
            nop
            nop
            nop
            nop
            movlw       .46
            btfsc       Sec10,0
            goto        Vector5r
            btfsc       Sec10,1
            goto        Revers5r     ;Ветвление фаз
            movlw       .58
            movwf       PortB       ;Выключение ключа 2 фазы A
            goto        A9r
A9r          goto        A10r
A10r         nop
            movlw       .50
            movwf       PortB       ;Включение ключа 1 фазы A
            goto        Next5r
Vector5r     nop
            movlw       .106
            movwf       PortB       ;Выключение ключа 6 фазы C
            goto        A11r
A11r         goto        A12r
A12r         nop
            movlw       .74
            movwf       PortB       ;Включение ключа 5 фазы C
            goto        Next5r
Revers5r     movwf       PortB       ;Выключение ключа 4 фазы B
            goto        A13r
A13r         goto        A14r
A14r         nop
            movlw       .44
            movwf       PortB       ;Включение ключа 3 фазы B
            nop
            nop
Next5r       movf        Sec2,0
            movwf       Sec0
run6r        decfsz      Sec0,F
            goto        run6r
            nop
            movlw       .108
            btfsc       Sec10,0
            goto        Vector6r
            btfsc       Sec10,1
            goto        Revers6r     ;Ветвление фаз
            movlw       .54
            movwf       PortB       ;Выключение ключа 4 фазы B
            goto        A15r
A15r         goto        A16r
A16r         nop
            movlw       .52
            movwf       PortB       ;Включение ключа 3 фазы B
            goto        Next6r
Vector6r     nop
            movlw       .90
            movwf       PortB       ;Выключение ключа 2 фазы A
            goto        A17r
A17r         goto        A18r
A18r         nop
            movlw       .82
            movwf       PortB       ;Включение ключа 1 фазы A
            goto        Next6r
Revers6r     movwf       PortB       ;Выключение ключа 6 фазы C
            goto        A19r
A19r         goto        A20r
A20r         nop
            movlw       .76
            movwf       PortB       ;Включение ключа 5 фазы C
            nop
            nop                      
Next6r       movf        Sec3,0
            movwf       Sec0
run7r        decfsz      Sec0,F
            goto        run7r
                                    ;Подгонка частот.
            movlw       .92            
            btfsc       Sec10,0
            goto        Vector7r
            btfsc       Sec10,1
            goto        Revers7r     ;Ветвление фаз
            movlw       .116
            movwf       PortB       ;Выключение ключа 6 фазы С
            goto        A21r
A21r         goto        A22r
A22r         nop
            movlw       .84
            movwf       PortB       ;Включение ключа 5 фазы С
            goto        Next7r
Vector7r     nop
            movlw       .86
            movwf       PortB       ;Выключение ключа 4 фазы B
            goto        A23r
A23r         goto        A24r
A24r         nop
            movlw       .84
            movwf       PortB       ;Включение ключа 3 фазы B
            goto        Next7r
Revers7r     movwf       PortB       ;Выключение ключа 2 фазы A,,,,,40 -1мкс
            goto        A25r
A25r         goto        A26r
A26r         nop
            movlw       .84
            movwf       PortB       ;Включение ключа 1 фазы A
            nop
            nop
Next7r       movf        Sec4,0          
            movwf       Sec0
run8r        decfsz      Sec0,F
            goto        run8r 
            nop
            nop
            nop
            nop
            nop
            nop
            clrwdt
            movlw       .126
            movwf       PortB       ;Выключение всех верхних ключей 1,2,3                      
            goto        A27r
A27r         goto        A28r
A28r         nop
            movlw       .42
            movwf       PortB       ;Включение всех нижних ключей 2,4,6
            decfsz      Sec11,F
            goto        Hz3r
            movf        Sec12,0
            movwf       Sec11
                                    
Hz5r         movf        Sec4,0      ;Начало четвертой линии
            movwf       Sec0
run13r       decfsz      Sec0,F
            goto        run13r
            ;nop                     ;Подгонка частот(dsrbyenm d vfyle)
            movlw       .46
            btfsc       Sec10,0
            goto        Vector11r
            btfsc       Sec10,1
            goto        Revers11r    ;Ветвление фаз
            movlw       .58
            movwf       PortB       ;Выключение ключа 2 фазы A
            goto        A29r
A29r         goto        A30r
A30r         nop
            movlw       .50
            movwf       PortB       ;Включение ключа 1 фазы A
            goto        Next11r
Vector11r    nop
            movlw       .106
            movwf       PortB       ;Выключение ключа 6 фазы C
            goto        A31r
A31r         goto        A32r
A32r         nop
            movlw       .74
            movwf       PortB       ;Включение ключа 5 фазы C
            goto        Next11r
Revers11r    movwf       PortB       ;Выключение ключа 4 фазы B,,,,68-1мкс
            goto        A33r
A33r         goto        A34r
A34r         nop
            movlw       .44
            movwf       PortB       ;Включение ключа 3 фазы B
            nop
            nop
Next11r      movf        Sec3,0
            movwf       Sec0
run14r       decfsz      Sec0,F
            goto        run14r
            movlw       .108              
            btfsc       Sec10,0
            goto        Vector12r
            btfsc       Sec10,1
            goto        Revers12r    ;Ветвление фаз
            movlw       .54
            movwf       PortB       ;Выключение ключа 4 фазы B
            goto        A35r
A35r         goto        A36r
A36r         nop
            movlw       .52
            movwf       PortB       ;Включение ключа 3 фазы B
            goto        Next12r
Vector12r   nop
            movlw       .90
            movwf       PortB       ;Выключение ключа 2 фазы A
            goto        A37r
A37r         goto        A38r
A38r         nop
            movlw       .82
            movwf       PortB       ;Включение ключа 1 фазы A
            goto        Next12r
Revers12r    movwf       PortB       ;Выключение ключа 6 фазы C,,,,,12-1мкс
            goto        A39r
A39r         goto        A40r
A40r         nop
            movlw       .76
            movwf       PortB       ;Включение ключа 5 фазы C
            nop
            nop
Next12r      movf        Sec2,0
            movwf       Sec0
run15r       decfsz      Sec0,F
            goto        run15r
            nop
            movlw       .92
            btfsc       Sec10,0
            goto        Vector13r
            btfsc       Sec10,1
            goto        Revers13r   ;Ветвление фаз
            movlw       .116
            movwf       PortB       ;Выключение ключа 6 фазы С
            goto        A41r
A41r         goto        A42r
A42r         nop
            movlw       .84
            movwf       PortB       ;Включение ключа 5 фазы С
            goto        Next13r
Vector13r    nop
            movlw       .86
            movwf       PortB       ;Выключение ключа 4 фазы B
            goto        A43r
A43r         goto        A44r
A44r         nop
            movlw       .84
            movwf       PortB       ;Включение ключа 3 фазы B
            goto        Next13r
Revers13r    movwf       PortB       ;Выключение ключа 2 фазы A
            goto        A45r
A45r        goto        A46r
A46r         nop
            movlw       .84
            movwf       PortB       ;Включение ключа 1 фазы A
            nop
            nop
Next13r      movf        Sec1,0          
            movwf       Sec0
run16r       decfsz      Sec0,F
            goto        run16r 
            btfss       PortA,1     ;Разгон с кнопки и автомат
            bsf         AUTRUN,1
            btfsc       PortA,1
            bcf         AUTRUN,1
            ;btfsc       PortA,1
            ;bsf         AUTRUN,1
            btfss        ON,7
            bsf         AUTRUN,1
            nop
            nop
            nop
            nop
            nop
            nop
            clrwdt
            movlw       .126
            movwf       PortB        ;Выключение всех верхних ключей 1,2,3                      
            goto        A47r
A47r         goto        A48r
A48r         nop
            movlw       .42
            movwf       PortB        ;Включение всех нижних ключей 2,4,6
            decfsz      Sec11,F
            goto        Hz5r
            movf        Sec12,0
            movwf       Sec11
Hz6r         movf        Sec7,0       ;Начало пятой линии
            movwf       Sec0
run17r       decfsz      Sec0,F
            goto        run17r
            movlw       .46
            btfsc       Sec10,0
            goto        Vector14r
            btfsc       Sec10,1
            goto        Revers14r     ;Ветвление фаз
            movlw       .58
            movwf       PortB        ;Выключение 2 ключа фазы А
            goto        A49r
A49r         goto        A50r
A50r         nop
            movlw       .50
            movwf       PortB        ;Включение 1 ключа фазы А
            goto        Next14r
Vector14r    nop
            movlw       .106
            movwf       PortB        ;Выключение 6 Ключа фазы С
            goto        A51r
A51r         goto        A52r
A52r         nop            
            movlw       .74
            movwf       PortB        ;Включение ключа 5 фазы С
            goto        Next14r     
Revers14r    movwf       PortB        ;Выключение 4 ключа фазы B,,,,68-1мкс
            goto        A53r
A53r         goto        A54r
A54r         nop
            movlw       .44 
            movwf       PortB        ;Включение 3 ключа фазы В
            nop
            nop
Next14r      movf        Sec6,0
            movwf       Sec0
run18r       nop
            decfsz      Sec0,F
            goto        run18r
            btfsc       Sec10,0
            goto        Vector15r
            btfsc       Sec10,1
            goto        Revers15r    ;Ветвление фаз
            nop
            movlw       .118
            movwf       PortB       ;Выключение 4 и 6 ключей(Фазы B и C равны)
            goto        A55r
A55r         goto        A56r
A56r         nop
            movlw       .84
            movwf       PortB       ;Включение 3 и 5 ключей
            goto        Next15r
Vector15r    nop
            nop
            movlw       .94
            movwf       PortB       ;Выключение 2 и 4 Ключей(А и B равны)
            goto        A57r
A57r         goto        A58r
A58r         nop            
            movlw       .84
            movwf       PortB       ;Включение 1 и 3 Ключей
            goto        Next15r
Revers15r    movlw       .124    
            movwf       PortB       ;Выключение 2 и 6 Ключей(A и С равны)
            goto        A59r
A59r         goto        A60r
A60r         nop
            movlw       .84
            movwf       PortB       ;Включение 1 и 5 Ключей
            nop
            nop
Next15r      movf        Sec5,0
            movwf       Sec0
run19r       decfsz      Sec0,F
            goto        run19r
            btfss       PortA,2     ; Команда выхода (Стоп)
            goto        Stop
            btfsc       SecMAX,7    ; Не осуществлятьт далее разгон(огр.макс. частоты).
            bsf         ACCSEL,7
            nop
            nop
            clrwdt
            movlw       .126
            movwf       PortB       ;Выключение всех верхних ключей 1,2,3                      
            goto        A61r
A61r         goto        A62r
A62r         nop
            movlw       .42   
            movwf       PortB       ;Включение всех нижних ключей 2,4,6
            decfsz      Sec11,F
            goto        Hz6r
            movf        Sec12,0
            movwf       Sec11
Hz7r         movf        Sec4,0      ;Начало шестой линии
            movwf       Sec0
run20r      decfsz      Sec0,F
            goto        run20r
            movlw       .46
            btfsc       Sec10,0
            goto        Vector16r
            btfsc       Sec10,1
            goto        Revers16r    ;Ветвление фаз
            movlw       .58
            movwf       PortB       ;Выключение ключа 2 фазы A
            goto        A63r
A63r         goto        A64r
A64r         nop
            movlw       .50
            movwf       PortB       ;Включение ключа 1 фазы A
            goto        Next16r
Vector16r    nop
            movlw       .106
            movwf       PortB       ;Выключение ключа 6 фазы C
            goto        A65r
A65r         goto        A66r
A66r         nop
            movlw       .74
            movwf       PortB       ;Включение ключа 5 фазы C
            goto        Next16r
Revers16r    movwf       PortB       ;Выключение ключа 4 фазы B
            goto        A67r
A67r         goto        A68r
A68r         nop
            movlw       .44
            movwf       PortB       ;Включение ключа 3 фазы B
            nop
            nop
Next16r      movf        Sec3,0
            movwf       Sec0
run21r       decfsz      Sec0,F
            goto        run21r
            movlw       .60
            btfsc       Sec10,0
            goto        Vector17r
            btfsc       Sec10,1
            goto        Revers17r    ;Ветвление фаз
            movlw       .114
            movwf       PortB       ;Выключение ключа 6 фазы C
            goto        A69r
A69r         goto        A70r
A70r         nop
            movlw       .82
            movwf       PortB       ;Включение ключа 5 фазы C
            goto        Next17r
Vector17r    nop
            movlw       .78
            movwf       PortB       ;Выключение ключа 4 фазы B
            goto        A71r
A71r         goto        A72r
A72r         nop
            movlw       .76
            movwf       PortB       ;Включение ключа 3 фазы B
            goto        Next17r
Revers17r    movwf       PortB       ;Выключение ключа 2 фазы A
            goto        A73r
A73r         goto        A74r
A74r         nop
            movlw       .52
            movwf       PortB       ;Включение ключа 1 фазы A
            nop
            nop
Next17r      movf        Sec2,0
            movwf       Sec0
run22r       decfsz      Sec0,F
            goto        run22r
            nop
            movlw       .116
            btfsc       Sec10,0
            goto        Vector18r
            btfsc       Sec10,1
            goto        Revers18r    ;Ветвление фаз
            movlw       .86
            movwf       PortB       ;Выключение ключа 4 фазы B
            goto        A75r
A75r         goto        A76r
A76r         nop                   
            movlw       .84
            movwf       PortB       ;Включение ключа 3 фазы B
            goto        Next18r
Vector18r    nop
            movlw       .92
            movwf       PortB       ;Выключение ключа 2 фазы A
            goto        A77r
A77r         goto        A78r
A78r         nop
            movlw       .84
            movwf       PortB       ;Включение ключа 1 фазы A
            goto        Next18r
Revers18r    movwf       PortB       ;Выключение ключа 6 фазы C
            goto        A79r
A79r         goto        A80r
A80r         nop
            movlw       .84
            movwf       PortB       ;Включение ключа 5 фазы C
            nop
            nop
Next18r      movf        Sec1,0          
            movwf       Sec0
run23r       decfsz      Sec0,F
            goto        run23r 
            decfsz      ACCSEL,F    ;Управление разгоном
            goto        DRIVEr       ;Нет опроса
            btfsc       AUTRUN,1    ;Опрос регистра разгона
            goto        Delay       ;Следующая частота
            incf        ACCSEL,F    ;Нет разгона
RETr         nop                     ;Далее работа ШИМ
            nop
            nop
            nop
            nop
            nop
            nop
            clrwdt
            movlw       .126
            movwf       PortB       ;Выключение всех верхних ключей 1,2,3                      
            goto        UPr 
DRIVEr      goto        RETr
;------------------------------------------------------------------------------
;                         Выбор подпрограмм вращения.
;------------------------------------------------------------------------------
ROTOR       btfsc       REVERS,7
            goto        ROTOR2
            goto        ROTOR1
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;            Ошибка F0.2 Низкое напряжение DC звена
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
F02         clrwdt                 ;Ошибка DC звена F0.2
            movlw       .126
            movwf       PortB
            ;movlw       .8
            ;movwf       PortA
            call        NONRUN
            call        NONRUN
            movlw       .127
            movwf       PortB
            call        NONRUN
            call        NONRUN
            goto        F02
;############################################################################
;        Программная задержка
;############################################################################
NONRUN      clrf        ACCSEL2
            clrf        REVERS
NONRUN1     decfsz      ACCSEL2,F    ;Програмная задержка.
            goto        NONRUN1
            clrwdt 
            decfsz      REVERS,F
            goto        NONRUN1
            return
            end                   
