ABCdrive.asm
; 3-Фазное ШИМ управление инвертором двигателя (6-IGBT). U/f с ослаблением поля с 50 до 75Гц.
; PIC16F628А     Кварц 20 МГц. Автор КДН(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         ; Конфигурация входов (цифровые).
PCL         equ         02h         ; Счётчик команд
TMR0        equ         01h         ; Таймер0
;===============================================================================================
; Определение  названия  и  положения  регистров  общего  назначения.
;===============================================================================================
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         ; Регистр ограничения максимальной частоты.(7-ой бит)-50Гц
Sec100      equ         2Eh         ; Регистр адреса ячейки памяти для косвенной адресации.
Sec200      equ         2Fh         ; Счетчик 8 чисел констант вращения
SecM        equ         30h         ; Счетчик количества считанных данных.
ACCSEL      equ         31h         ; Счетчик таймер драйверов, делитель времени ускорения и таймер задержки.
REVERS      equ         34h         ; Регистр выбора направления вращения.
ON          equ         35h         ; Регистр счёта и установки разгонной частоты (7-ой бит)и таймера задержки.
ON2         equ         36h         ; Регистр хранения значения минимальной разгонной частоты.
AAW         equ         37h         ; Регистр сохранения аккумулятора
;===============================================================================================
; Определение места размещения результатов операций.
;===============================================================================================
F           equ         1           ; Результат направить в регистр.
;===============================================================================================
            org         2100h       ; Запись констант в EEPROM
             DE          .195,.4,.13,.193,.198,.17,.193,.43             ;2,5Hz,2005Hz,6%Uном+
             DE          .189,.6,.19,.186,.193,.25,.186,.29             ;3,75Hz,2029Hz,8,5%Uном+
             DE          .182,.9,.26,.179,.187,.33,.178,.22             ;5Hz,2055Гц,11%Uном+
             DE          .173,.11,.32,.170,.180,.41,.168,.18            ;6,25Hz,2102Гц,13,9%Uном+ 
             DE          .169,.14,.39,.165,.176,.49,.163,.15            ;7,5Hz,2102Гц,16,5%Uном
             DE          .151,.15,.41,.146,.158,.52,.145,.14            ;8,75Hz,2299Гц,19%Uном
             DE          .150,.18,.48,.145,.159,.61,.143,.12            ;10Hz,2248Гц,21.7%Uном
             DE          .142,.19,.53,.135,.151,.67,.134,.11            ;11,24Hz,2322Гц,24.4%Uном
             DE          .136,.21,.58,.130,.147,.73,.128,.10            ;12,5Hz,2348Гц,26,9%Uном
             DE          .134,.24,.65,.126,.146,.82,.124,.9             ;13,74Hz,2319Гц,29.7%Uном
             DE          .119,.24,.64,.111,.130,.81,.109,.9             ;15Hz,2540Гц,32.3%Uном
             DE          .120,.27,.72,.112,.133,.91,.109,.8             ;16,26Hz,2445Гц,34.8%Uном
             DE          .107,.27,.72,.99,.121,.91,.97,.8               ;17,5Hz,2642Гц,37.4%Uном
             DE          .112,.31,.83,.102,.127,.104,.99,.7             ;18,74Hz,2468Гц,40%Uном
             DE          .101,.31,.83,.91,.115,.104,.88,.7              ;20,02Hz,2643Гц,42,8%Uном
             DE          .108,.37,.97,.96,.125,.123,.93,.6              ;21,24Hz,2395Гц,45,5%Uном
            
            org         0           ; Начать выполнение программы с адреса 0 PC.
            goto        Start       ; Переход в ПП Start.
            org         4           ; Переход в прерывание.
            goto        FROM

SELECT      addwf       PCL,F
            goto        Stop
            goto        START5
            goto        START4
            goto        START3
            goto        START2
            goto        START1
            goto        START11
            goto        START12
            goto        START13
            goto        START14
            goto        START15
            goto        START16
            goto        START17
            goto        START18
            goto        START19
            goto        START20
            goto        START21
            goto        START22
            goto        START23
            goto        START24
            goto        START25
            goto        START26
            goto        START27
            goto        START28
            goto        START50
            goto        START40
            goto        START30
            goto        START20A
            goto        START10
            goto        START110
            goto        START120
            goto        START130
            goto        START140
            goto        START150
            goto        START160
            goto        START170
            goto        START180
            goto        START190
            goto        START200
            goto        START210
            goto        START220
            goto        START230
            goto        START240
            goto        START250
;***********************************************************************************************
;                          Текст рабочей части программы.
;***********************************************************************************************
; Установка направления работы портов.
;-----------------------------------------------------------------------------------------------
Start        movlw       .126

            movwf       PortB
            ;movlw        .8
            ;movwf        PortA
            clrf        PortA
            movlw       .7
            movwf       CMCON       ; Цифровые входы.
            bsf         Status,5    ; Перейти в 1-й банк (установить в 1 5-й бит
                                    ; регистра Status).
            movlw       .7
            movwf       TrisA
            movlw       .128        ; Запись константы в W
            movwf       TrisB       ; Скопировать константу из W в регистр TrisB.(Конфигурация выводов)
            ;bcf         Option,0
            ;bcf         Option,1
            ;bcf         OptionR,3
            movlw       .215
            movwf       OptionR     ; Предделитель перед таймером от внутр такта 1 на 256

            bcf         Status,5    ; Перейти в 0-й банк (установить в 0 5-й бит
                                    ; регистра Status).
            clrf        Intcon      ; Нет прерываний.
            clrf        TMR0        ; Сброс таймера
            ;bsf         SecMAX,7
            ;movlw       .5
            ;movwf       ACCSEL
            ;movlw       .10
            ;movwf       Sec11
            ;goto        START28
;-----------------------------------------------------------------------------------------------
;                                  Начало
;-----------------------------------------------------------------------------------------------
            ;clrf        PortB
            movlw       .126
            movwf       PortB
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            ;call        NONRUN
            clrf        PortA
            clrf        Sec10
            clrf        Sec100
            clrf        ACCSEL
            clrf        SecMAX
            clrf        AUTRUN
            clrf        Sec000
            clrf        REVERS
            movlw       .1
            movwf       Sec11
            movlw       .0
            movwf       SecM
            movlw       .89
            movwf       ON2         ; Разгон до частоты 50Гц, по умолчанию.(89=128-39ступеней)
            call        NONRUN
            btfss       PortA,2     ; Команда входа в меню частот разгона
            goto        MIN
            btfss       PortA,2     ; Команда входа в меню частот разгона
            goto        MIN
            goto        RUNN
;***********************************************************************************************
;                                 Константы
;***********************************************************************************************
START28     movlw       .3       ;50,05Hz,128% 2884+
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .84
            movwf       Sec2
            movlw       .198
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .33
            movwf       Sec5
            movlw       .250
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            ;clrf        Intcon
            ;movlw       .255          ;Пауза перед ослаблением поля (разгоном выше номинала)
            ;movwf       ACCSEL
            btfsc       REVERS,7      ;Условие разрешения частоты выше 50Гц
            bsf         SecMAX,7
            ;bcf         PortA,4       ;Индикация частоты 50Гц
            goto        ROTOR
START27     movlw       .3       ;48,78Hz,118% 2786+
            movwf       Sec12
            movlw       .4
            movwf       Sec1
            movlw       .86
            movwf       Sec2
            movlw       .200
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .43
            movwf       Sec5
            movlw       .250
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START26     movlw       .3       ;47,53Hz,110% 2709+
            movwf       Sec12
            movlw       .14
            movwf       Sec1
            movlw       .82
            movwf       Sec2
            movlw       .202
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .52
            movwf       Sec5
            movlw       .250
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START25     movlw       .3       ;46,30Hz,104% 2638+
            movwf       Sec12
            movlw       .23
            movwf       Sec1
            movlw       .80
            movwf       Sec2
            movlw       .204
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .59
            movwf       Sec5
            movlw       .251
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START24     movlw       .3       ;44,99Hz,99% 2546+
            movwf       Sec12
            movlw       .30
            movwf       Sec1
            movlw       .79
            movwf       Sec2
            movlw       .202
            movwf       Sec3 
            movlw       .7
            movwf       Sec4
            movlw       .66
            movwf       Sec5
            movlw       .253
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START23     movlw       .3       ;43,72Hz,96% 2469+
            movwf       Sec12
            movlw       .35
            movwf       Sec1
            movlw       .79
            movwf       Sec2
            movlw       .202
            movwf       Sec3 
            movlw       .12
            movwf       Sec4
            movlw       .71
            movwf       Sec5
            movlw       .253
            movwf       Sec6
            movlw       .6
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START22     movlw       .3       ;42,51Hz,93,5% 2396+
            movwf       Sec12
            movlw       .40
            movwf       Sec1
            movlw       .79
            movwf       Sec2
            movlw       .202
            movwf       Sec3 
            movlw       .17
            movwf       Sec4
            movlw       .76
            movwf       Sec5
            movlw       .254
            movwf       Sec6
            movlw       .10
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START21     movlw       .3       ;41,26Hz 90,2%,2320+
            movwf       Sec12
            movlw       .46
            movwf       Sec1
            movlw       .78
            movwf       Sec2
            movlw       .202
            movwf       Sec3 
            movlw       .23
            movwf       Sec4
            movlw       .82
            movwf       Sec5
            movlw       .253
            movwf       Sec6
            movlw       .16
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START20     movlw       .3       ;40,01Hz 87,5%,2251+
            movwf       Sec12
            movlw       .52
            movwf       Sec1
            movlw       .78
            movwf       Sec2
            movlw       .202
            movwf       Sec3 
            movlw       .29
            movwf       Sec4
            movlw       .87
            movwf       Sec5
            movlw       .253
            movwf       Sec6
            movlw       .22
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START19     movlw       .3       ;38,74Hz,86%,2174+
            movwf       Sec12
            movlw       .60
            movwf       Sec1
            movlw       .77
            movwf       Sec2
            movlw       .199
            movwf       Sec3 
            movlw       .37
            movwf       Sec4
            movlw       .95
            movwf       Sec5
            movlw       .250
            movwf       Sec6
            movlw       .31
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START18     movlw       .4       ;37,46Hz,80.7%,2843+
            movwf       Sec12
            movlw       .48
            movwf       Sec1
            movlw       .57
            movwf       Sec2
            movlw       .147
            movwf       Sec3 
            movlw       .32
            movwf       Sec4
            movlw       .75
            movwf       Sec5
            movlw       .184
            movwf       Sec6
            movlw       .27
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START17     movlw       .4       ;36,28Hz,77.8%,2743+
            movwf       Sec12
            movlw       .54
            movwf       Sec1
            movlw       .57
            movwf       Sec2
            movlw       .146
            movwf       Sec3 
            movlw       .37
            movwf       Sec4
            movlw       .80
            movwf       Sec5
            movlw       .184
            movwf       Sec6
            movlw       .32
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START16     movlw       .4       ;35Hz,75.3%,2636+
            movwf       Sec12
            movlw       .59
            movwf       Sec1
            movlw       .57
            movwf       Sec2
            movlw       .147
            movwf       Sec3 
            movlw       .42
            movwf       Sec4
            movlw       .86
            movwf       Sec5
            movlw       .186
            movwf       Sec6
            movlw       .37
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START15     movlw       .4       ;33,74Hz,72.5%,2538+
            movwf       Sec12
            movlw       .65
            movwf       Sec1
            movlw       .57
            movwf       Sec2
            movlw       .147
            movwf       Sec3 
            movlw       .48
            movwf       Sec4
            movlw       .92
            movwf       Sec5
            movlw       .186
            movwf       Sec6
            movlw       .44
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START14     movlw       .4       ;32,51Hz,69.5%,2445+
            movwf       Sec12
            movlw       .72
            movwf       Sec1
            movlw       .57
            movwf       Sec2
            movlw       .147
            movwf       Sec3 
            movlw       .55
            movwf       Sec4
            movlw       .98
            movwf       Sec5
            movlw       .185
            movwf       Sec6
            movlw       .50
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START13     movlw       .4       ;31,23Hz,66.8%,2342+
            movwf       Sec12
            movlw       .79
            movwf       Sec1
            movlw       .57
            movwf       Sec2
            movlw       .147
            movwf       Sec3 
            movlw       .62
            movwf       Sec4
            movlw       .106
            movwf       Sec5
            movlw       .185
            movwf       Sec6
            movlw       .58
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START12     movlw       .4       ;30,01Hz,64.3%,2249+
            movwf       Sec12
            movlw       .86
            movwf       Sec1
            movlw       .57
            movwf       Sec2
            movlw       .148
            movwf       Sec3 
            movlw       .69
            movwf       Sec4
            movlw       .113
            movwf       Sec5
            movlw       .186
            movwf       Sec6
            movlw       .65
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START11     movlw       .5       ;28,73Hz,62%,2714+
            movwf       Sec12
            movlw       .74
            movwf       Sec1
            movlw       .45
            movwf       Sec2
            movlw       .117
            movwf       Sec3 
            movlw       .61
            movwf       Sec4
            movlw       .95
            movwf       Sec5
            movlw       .148
            movwf       Sec6
            movlw       .57
            movwf       Sec7           
            ;bsf         SecMAX,7
            goto        ROTOR            
START1      movlw       .5       ;27,5Hz,59.5%,2586+
            movwf       Sec12
            movlw       .81
            movwf       Sec1
            movlw       .45
            movwf       Sec2
            movlw       .118
            movwf       Sec3 
            movlw       .67
            movwf       Sec4
            movlw       .102
            movwf       Sec5
            movlw       .149
            movwf       Sec6
            movlw       .64
            movwf       Sec7
            goto        ROTOR
START2      movlw       .5       ;26,28Hz,56.3%,2467+
            movwf       Sec12
            movlw       .89
            movwf       Sec1
            movlw       .45
            movwf       Sec2
            movlw       .117
            movwf       Sec3 
            movlw       .76
            movwf       Sec4
            movlw       .110
            movwf       Sec5
            movlw       .148
            movwf       Sec6
            movlw       .72
            movwf       Sec7
            goto        ROTOR
START3      movlw       .5       ;25Hz,53,8%,2345+
            movwf       Sec12
            movlw       .98
            movwf       Sec1
            movlw       .45
            movwf       Sec2
            movlw       .118
            movwf       Sec3 
            movlw       .84
            movwf       Sec4
            movlw       .119
            movwf       Sec5
            movlw       .149
            movwf       Sec6
            movlw       .80
            movwf       Sec7
            goto        ROTOR
START4      movlw       .5      ;23,74Hz,50,5%,2225+
            movwf       Sec12
            movlw       .108 
            movwf       Sec1
            movlw       .45
            movwf       Sec2
            movlw       .117
            movwf       Sec3 
            movlw       .95
            movwf       Sec4
            movlw       .129
            movwf       Sec5
            movlw       .147
            movwf       Sec6
            movlw       .91
            movwf       Sec7
            goto        ROTOR
START5      movlw       .6      ;22,5Hz,48%,2545+
            movwf       Sec12
            movlw       .98
            movwf       Sec1
            movlw       .37
            movwf       Sec2
            movlw       .97
            movwf       Sec3 
            movlw       .86
            movwf       Sec4
            movlw       .115
            movwf       Sec5
            movlw       .122
            movwf       Sec6
            movlw       .83
            movwf       Sec7            
            goto        ROTOR
;*************************************************************************************
;                              Ядро программы ШИМ
;*************************************************************************************


;111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
SSD1        movfw        Sec12      ; Установка множителя деления частоты Шим
            movwf        Sec11
JJJ1        call         AA1 
            movlw        .46
            movwf       PortB       ;Выключаем 2 ключ A
            call        OFF
            movlw        .44
            movwf       PortB       ;Включаем 1 ключ A
            call         AA2
            movlw        .108
            movwf       PortB       ;Выключаем 6 ключ C
            call        OFF
            movlw        .76
            movwf       PortB       ;Включаем 5 ключ C
            call        AA3
            movlw        .92
            movwf       PortB       ;Выключаем 4 ключ B
            call        OFF
            movlw        .84         
            movwf       PortB       ;Включаем 3 ключ B
            call        AA4
            call        AA4
            movlw        .92
            movwf       PortB       ;
            call        OFF
            movlw        .76         
            movwf       PortB       ;
            call        AA3
            movlw        .108
            movwf       PortB       ;
            call        OFF
            movlw        .44         
            movwf       PortB       ;
            call        AA2
            movlw        .46
            movwf       PortB       ;
            call        OFF
            movlw        .42         
            movwf       PortB       ;Все нижние ключи
            call        AA1
            decfsz      Sec11,1     ;Управление делением частоты
            goto        JJJ1
            ;return

;22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
SSD2        movfw        Sec12      ; Установка множителя деления частоты Шим
            movwf        Sec11
JJJ2        call         AA5 
            movlw        .110
            movwf       PortB       ;
            call        OFF
            movlw        .76
            movwf       PortB       ;
            call         AA6
            movlw        .92
            movwf       PortB       ;
            call        OFF
            movlw        .84
            movwf       PortB       ;
            call        AA7
            call        AA7
            movlw        .92
            movwf       PortB       ;
            call        OFF
            movlw        .76         
            movwf       PortB       ;
            call        AA6
            movlw        .110
            movwf       PortB       ;
            call        OFF
            movlw        .42         
            movwf       PortB       ;
            call        AA5
            decfsz      Sec11,1     ;Управление делением частоты
            goto        JJJ2
            ;return

;333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
SSD3        movfw        Sec12      ; Установка множителя деления частоты Шим
            movwf        Sec11
JJJ3        call         AA1 
            movlw        .106
            movwf       PortB       ;
            call        OFF
            movlw        .74
            movwf       PortB       ;
            call         AA2
            movlw        .78
            movwf       PortB       ;
            call        OFF
            movlw        .76
            movwf       PortB       ;
            call        AA3
            movlw        .92
            movwf       PortB       ;
            call        OFF
            movlw        .84         
            movwf       PortB       ;
            call        AA4
            call        AA4
            movlw        .92
            movwf       PortB       ;
            call        OFF
            movlw        .76         
            movwf       PortB       ;
            call        AA3
            movlw        .78
            movwf       PortB       ;
            call        OFF
            movlw        .74         
            movwf       PortB       ;
            call        AA2
            movlw        .106
            movwf       PortB       ;
            call        OFF
            movlw        .42         
            movwf       PortB       ;Все нижние ключи
            call        AA1
            decfsz      Sec11,1     ;Управление делением частоты
            goto        JJJ3
            ;return

;444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
SSD4        movfw        Sec12      ; Установка множителя деления частоты Шим
            movwf        Sec11
JJJ4        call         AA4 
            movlw        .106
            movwf       PortB      
            call        OFF
            movlw        .74
            movwf       PortB    
            call         AA3
            movlw        .78
            movwf       PortB       
            call        OFF
            movlw        .76
            movwf       PortB       
            call        AA2
            movlw        .92
            movwf       PortB       
            call        OFF
            movlw        .84         
            movwf       PortB       
            call        AA1
            call        AA1
            movlw        .92
            movwf       PortB       ;
            call        OFF
            movlw        .76         
            movwf       PortB       ;
            call        AA2
            movlw        .78
            movwf       PortB       ;
            call        OFF
            movlw        .74         
            movwf       PortB       ;
            call        AA3
            movlw        .106
            movwf       PortB       ;
            call        OFF
            movlw        .42         
            movwf       PortB       ;Все нижние ключи
            call        AA4
            decfsz      Sec11,1     ;Управление делением частоты
            goto        JJJ4
            ;return

;55555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
SSD5        movfw        Sec12      ; Установка множителя деления частоты Шим
            movwf        Sec11
JJJ5        call         AA7 
            movlw        .106
            movwf       PortB       
            call        OFF
            movlw        .74
            movwf       PortB       
            call         AA6
            movlw        .94
            movwf       PortB       
            call        OFF
            movlw        .84
            movwf       PortB       
            call        AA5
            call        AA5
            movlw        .94
            movwf       PortB       ;
            call        OFF
            movlw        .74         
            movwf       PortB       ;
            call        AA6
            movlw        .106
            movwf       PortB       ;
            call        OFF
            movlw        .42         
            movwf       PortB       ;
            call        AA7
            decfsz      Sec11,1     ;Управление делением частоты
            goto        JJJ5
            ;return

;666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
SSD6        movfw        Sec12      ; Установка множителя деления частоты Шим
            movwf        Sec11
JJJ6        call         AA4 
            movlw        .106
            movwf       PortB       
            call        OFF
            movlw        .74
            movwf       PortB       
            call         AA3
            movlw        .90
            movwf       PortB       
            call        OFF
            movlw        .82
            movwf       PortB       
            call        AA2
            movlw        .86
            movwf       PortB       
            call        OFF
            movlw        .84         
            movwf       PortB       
            call        AA1
            call        AA1
            movlw        .86
            movwf       PortB       ;
            call        OFF
            movlw        .82         
            movwf       PortB       ;
            call        AA2
            movlw        .90
            movwf       PortB       ;
            call        OFF
            movlw        .74         
            movwf       PortB       ;
            call        AA3
            movlw        .106
            movwf       PortB       ;
            call        OFF
            movlw        .42         
            movwf       PortB       ;Все нижние ключи
            call        AA4
            decfsz      Sec11,1     ;Управление делением частоты
            goto        JJJ6
            ;return

;777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
SSD7        movfw        Sec12      ; Установка множителя деления частоты Шим
            movwf        Sec11
JJJ7        call         AA1 
            movlw        .106
            movwf       PortB       
            call        OFF
            movlw        .74
            movwf       PortB       
            call         AA2
            movlw        .90
            movwf       PortB       
            call        OFF
            movlw        .82
            movwf       PortB       
            call        AA3
            movlw        .86
            movwf       PortB       
            call        OFF
            movlw        .84         
            movwf       PortB       
            call        AA4
            call        AA4
            movlw        .86
            movwf       PortB       ;
            call        OFF
            movlw        .82         
            movwf       PortB       ;
            call        AA3
            movlw        .90
            movwf       PortB       ;
            call        OFF
            movlw        .74         
            movwf       PortB       ;
            call        AA2
            movlw        .106
            movwf       PortB       ;
            call        OFF
            movlw        .42         
            movwf       PortB       ;Все нижние ключи
            call        AA1
            decfsz      Sec11,1     ;Управление делением частоты
            goto        JJJ7
            ;return

;888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
SSD8        movfw        Sec12      ; Установка множителя деления частоты Шим
            movwf        Sec11
JJJ8        call         AA5 
            movlw        .122
            movwf       PortB       ;
            call        OFF
            movlw        .82
            movwf       PortB       ;
            call         AA6
            movlw        .86
            movwf       PortB       ;
            call        OFF
            movlw        .84
            movwf       PortB       ;
            call        AA7
            call        AA7
            movlw        .86
            movwf       PortB       ;
            call        OFF
            movlw        .82         
            movwf       PortB       ;
            call        AA6
            movlw        .122
            movwf       PortB       ;
            call        OFF
            movlw        .42         
            movwf       PortB       ;
            call        AA5
            decfsz      Sec11,1     ;Управление делением частоты
            goto        JJJ8
            ;return

;99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999
SSD9        movfw        Sec12      ; Установка множителя деления частоты Шим
            movwf        Sec11
JJJ9        call         AA1 
            movlw        .58
            movwf       PortB       ;
            call        OFF
            movlw        .50
            movwf       PortB       ;
            call         AA2
            movlw        .114
            movwf       PortB       ;
            call        OFF
            movlw        .82
            movwf       PortB       ;
            call        AA3
            movlw        .86
            movwf       PortB       ;
            call        OFF
            movlw        .84         
            movwf       PortB       ;
            call        AA4
            call        AA4
            movlw        .86
            movwf       PortB       ;
            call        OFF
            movlw        .82         
            movwf       PortB       ;
            call        AA3
            movlw        .114
            movwf       PortB       ;
            call        OFF
            movlw        .50        
            movwf       PortB       ;
            call        AA2
            movlw        .58
            movwf       PortB       ;
            call        OFF
            movlw        .42         
            movwf       PortB       ;Все нижние ключи
            call        AA1
            decfsz      Sec11,1     ;Управление делением частоты
            goto        JJJ9
            ;return

;10101010101010101010101010101010101010101010101010101010101010101010101010101010101
SSD10       movfw        Sec12      ; Установка множителя деления частоты Шим
            movwf        Sec11
JJJ10       call         AA4 
            movlw        .58
            movwf       PortB      
            call        OFF
            movlw        .50
            movwf       PortB    
            call         AA3
            movlw        .114
            movwf       PortB       
            call        OFF
            movlw        .82
            movwf       PortB       
            call        AA2
            movlw        .86
            movwf       PortB       
            call        OFF
            movlw        .84         
            movwf       PortB       
            call        AA1
            call        AA1
            movlw        .86
            movwf       PortB       ;
            call        OFF
            movlw        .82         
            movwf       PortB       ;
            call        AA2
            movlw        .114
            movwf       PortB       ;
            call        OFF
            movlw        .50        
            movwf       PortB       ;
            call        AA3
            movlw        .58
            movwf       PortB       ;
            call        OFF
            movlw        .42         
            movwf       PortB       ;Все нижние ключи
            call        AA4
            decfsz      Sec11,1     ;Управление делением частоты
            goto        JJJ10
            ;return
;111111111111111111111111111111111111111111111111111111111111111111111111111111
SSD11       movfw        Sec12      ; Установка множителя деления частоты Шим
            movwf        Sec11
JJJ11       call         AA7 
            movlw        .58
            movwf       PortB       
            call        OFF
            movlw        .50
            movwf       PortB       
            call         AA6
            movlw        .118
            movwf       PortB       
            call        OFF
            movlw        .84
            movwf       PortB       
            call        AA5
            call        AA5
            movlw        .118
            movwf       PortB       ;
            call        OFF
            movlw        .50        
            movwf       PortB       ;
            call        AA6
            movlw        .58
            movwf       PortB       ;
            call        OFF
            movlw        .42         
            movwf       PortB       ;
            call        AA7
            decfsz      Sec11,1     ;Управление делением частоты
            goto        JJJ11
            ;return

;121212121212121212121212121212121212121212121212121212121212121212121212121212
SSD12       movfw        Sec12      ; Установка множителя деления частоты Шим
            movwf        Sec11
JJJ12       call         AA4 
            movlw        .58
            movwf       PortB       
            call        OFF
            movlw        .50
            movwf       PortB       
            call         AA3
            movlw        .54
            movwf       PortB       
            call        OFF
            movlw        .52
            movwf       PortB       
            call        AA2
            movlw        .116
            movwf       PortB       
            call        OFF
            movlw        .84         
            movwf       PortB       
            call        AA1
            call        AA1
            movlw        .116
            movwf       PortB       ;
            call        OFF
            movlw        .52        
            movwf       PortB       ;
            call        AA2
            movlw        .54
            movwf       PortB       ;
            call        OFF
            movlw        .50         
            movwf       PortB       ;
            call        AA3
            movlw        .58
            movwf       PortB       ;
            call        OFF
            movlw        .42         
            movwf       PortB       ;Все нижние ключи
            call        AA4
            decfsz      Sec11,1     ;Управление делением частоты
            goto        JJJ12
            ;return

;131313131313131313131313131313131313131313131313131313131313131313131313131313
SSD13       movfw        Sec12      ; Установка множителя деления частоты Шим
            movwf        Sec11
JJJ13       call         AA1 
            movlw        .58
            movwf       PortB       ;Выключаем 2 ключ A
            call        OFF
            movlw        .50
            movwf       PortB       ;Включаем 1 ключ A
            call         AA2
            movlw        .54
            movwf       PortB       ;Выключаем 6 ключ C
            call        OFF
            movlw        .52
            movwf       PortB       ;Включаем 5 ключ C
            call        AA3
            movlw        .116
            movwf       PortB       ;Выключаем 4 ключ B
            call        OFF
            movlw        .84         
            movwf       PortB       ;Включаем 3 ключ B
            call        AA4
            call        AA4
            movlw        .116
            movwf       PortB       ;
            call        OFF
            movlw        .52        
            movwf       PortB       ;
            call        AA3
            movlw        .54
            movwf       PortB       ;
            call        OFF
            movlw        .50         
            movwf       PortB       ;
            call        AA2
            movlw        .58
            movwf       PortB       ;
            call        OFF
            movlw        .42         
            movwf       PortB       ;Все нижние ключи
            call        AA1
            decfsz      Sec11,1     ;Управление делением частоты
            goto        JJJ13
            ;return

;141414141414141414141414141414141414141414141414141414141414141414141414141414
SSD14       movfw        Sec12      ; Установка множителя деления частоты Шим
            movwf        Sec11
JJJ14       call         AA5 
            movlw        .62
            movwf       PortB       ;
            call        OFF
            movlw        .52
            movwf       PortB       ;
            call         AA6
            movlw        .116
            movwf       PortB       ;
            call        OFF
            movlw        .84
            movwf       PortB       ;
            call        AA7
            call        AA7
            movlw        .116
            movwf       PortB       ;
            call        OFF
            movlw        .52        
            movwf       PortB       ;
            call        AA6
            movlw        .62
            movwf       PortB       ;
            call        OFF
            movlw        .42         
            movwf       PortB       ;
            call        AA5
            decfsz      Sec11,1     ;Управление делением частоты
            goto        JJJ14
            ;return

;151515151515151515151515151515151515151515151515151515151515151515151515151515
SSD15       movfw        Sec12      ; Установка множителя деления частоты Шим
            movwf        Sec11
JJJ15       call         AA1 
            movlw        .46
            movwf       PortB       ;
            call        OFF
            movlw        .44
            movwf       PortB       ;
            call         AA2
            movlw        .60
            movwf       PortB       ;
            call        OFF
            movlw        .52
            movwf       PortB       ;
            call        AA3
            movlw        .116
            movwf       PortB       ;
            call        OFF
            movlw        .84         
            movwf       PortB       ;
            call        AA4
            call        AA4
            movlw        .116
            movwf       PortB       ;
            call        OFF
            movlw        .52        
            movwf       PortB       ;
            call        AA3
            movlw        .60
            movwf       PortB       ;
            call        OFF
            movlw        .44         
            movwf       PortB       ;
            call        AA2
            movlw        .46
            movwf       PortB       ;
            call        OFF
            movlw        .42         
            movwf       PortB       ;Все нижние ключи
            call        AA1
            decfsz      Sec11,1     ;Управление делением частоты
            goto        JJJ15
            ;return

;161616161616161616161616161616161616161616161616161616161616161616161616161616
SSD16       movfw        Sec12      ; Установка множителя деления частоты Шим
            movwf        Sec11
JJJ16       call         AA4 
            movlw        .46
            movwf       PortB      
            call        OFF
            movlw        .44
            movwf       PortB    
            call         AA3
            movlw        .60
            movwf       PortB       
            call        OFF
            movlw        .52
            movwf       PortB       
            call        AA2
            movlw        .116
            movwf       PortB       
            call        OFF
            movlw        .84         
            movwf       PortB       
            call        AA1
            call        AA1
            movlw        .116
            movwf       PortB       ;
            call        OFF
            movlw        .52        
            movwf       PortB       ;
            call        AA2
            movlw        .60
            movwf       PortB       ;
            call        OFF
            movlw        .44         
            movwf       PortB       ;
            call        AA3
            movlw        .46
            movwf       PortB       ;
            call        OFF
            movlw        .42         
            movwf       PortB       ;Все нижние ключи
            call        AA4
            decfsz      Sec11,1     ;Управление делением частоты
            goto        JJJ16
            ;return

;171717171717171717171717171717171717171717171717171717171717171717171717171717
SSD17       movfw        Sec12      ; Установка множителя деления частоты Шим
            movwf        Sec11
JJJ17       call         AA7 
            movlw        .46
            movwf       PortB       
            call        OFF
            movlw        .44
            movwf       PortB       
            call         AA6
            movlw        .124
            movwf       PortB       
            call        OFF
            movlw        .84
            movwf       PortB       
            call        AA5
            call        AA5
            movlw        .124
            movwf       PortB       ;
            call        OFF
            movlw        .44        
            movwf       PortB       ;
            call        AA6
            movlw        .46
            movwf       PortB       ;
            call        OFF
            movlw        .42         
            movwf       PortB       ;
            call        AA7
            decfsz      Sec11,1     ;Управление делением частоты
            goto        JJJ17
            ;return

;181818181818181818181818181818181818181818181818181818181818181818181818181818
SSD18       movfw        Sec12      ; Установка множителя деления частоты Шим
            movwf        Sec11
            
JJJ18       call         AA4 
            movlw        .46
            movwf       PortB
            ;call        OFF       
            btfss       PortB,7     ;!!!Проверка просадки DC звена.
            goto        F02
            ;nop
            ;nop
            btfss       PortB,7     ;!!!Проверка просадки DC звена.
            goto        F02
            ;nop
            ;nop
            btfss       PortA,2     ;Выход из программы вращения, стоп.
            goto        Stop
            btfsc       SecMAX,7    ;Не осуществлять далее ускорение, (ограничение максимальной частоты).
            bcf         Intcon,7
            nop
            movlw        .44
            movwf       PortB       
            call         AA3
            movlw        .108
            movwf       PortB       
            ;call        OFF
            btfsc       PortA,1
            bcf         Intcon,5    ;Нет разгона с кнопки
            ;btfss       PortA,1     ;Разгон с кнопки
            ;bsf         Intcon,5
            btfss        ON,7
            bsf         Intcon,5    ;Авторазгон до фиксированной частоты
            nop
            nop
            nop
            btfss       PortA,1     ;Разгон с кнопки
            bsf         Intcon,5
            movlw        .76
            movwf       PortB       
            call        AA2
            movlw        .92
            movwf       PortB       
            call        OFF
            ;btfss        ON,7
            ;bsf         Intcon,5    ;Авторазгон до фиксированной частоты
            ;nop
            ;nop
            ;nop
            ;nop
            ;nop
            ;nop
            ;nop
            movlw        .84         
            movwf       PortB       
            call        AA1
            call        AA1
            movlw        .92
            movwf       PortB       ;
            call        OFF
            ;decfsz      ACCSEL,F    ;Управление разгоном
            ;goto        DRIVE       ;Нет опроса 
            ;btfsc       AUTRUN,1    ;Опрос регистра разгона
            ;goto        Delay       ;Следующая частота
            movlw        .76        
            movwf       PortB       ;
            call        AA2
            movlw        .108
            movwf       PortB       ;
            call        OFF
            ;movfw       ACCSEL      ;Проверка ACCSEL на 0.
            ;addlw       .0
            ;btfsc       Status,2
            ;incf        ACCSEL,1      ;Нет ускорения, и устанока ACCSEL=1
            ;nop
            movlw        .44        
            movwf       PortB       ;
            call        AA3
            movlw        .46
            movwf       PortB       ;
            call        OFF
            movlw        .42         
            movwf       PortB       ;Все нижние ключи
            call        AA4
            decfsz      Sec11,1     ;Управление делением частоты
            goto        JJJ18
            goto        SSD1
;DRIVE       goto        RET        
            ;return
;()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
;                  Отработка констант ШИМ
;)()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(
AA1         movfw        Sec1       ;Установка  константы
            movwf        Sec0       ;
            call         NTT        ;Отработка  константы
            return

AA2         movfw        Sec2       ;Установка  константы
            movwf        Sec0       ;
            call         NTT        ;Отработка  константы
            return

AA3         movfw        Sec3       ;Установка  константы
            movwf        Sec0       ;
            call         NTT        ;Отработка  константы
            return

AA4         movfw        Sec4       ;Установка  константы
            movwf        Sec0       ;
            call         NTT        ;Отработка  константы
            return

AA5         movfw        Sec5       ;Установка  константы
            movwf        Sec0       ;
            call         NTT        ;Отработка  константы
            return

AA6         movfw        Sec6       ;Установка  константы
            movwf        Sec0       ;
            call         NTT        ;Отработка  константы
            return

AA7         movfw        Sec7       ;Установка  константы
            movwf        Sec0       ;
            call         NTT        ;Отработка  константы
            return
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;          Время задержки между переключениями силовых ключей
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
OFF         nop
            nop
            nop
            nop
            nop
            return

;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
;           Программа отработки задержек.
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
NTT         clrwdt
QQ          decfsz      Sec0,1
            goto        QQ
            return

;*******************************************************************************
;       Управление, торможение и изменение частот вращения вектора(констант) 
;*******************************************************************************
Stop        clrf        Intcon
            movlw       .126
            movwf       PortB
            movlw        .24
            movwf        PortA      ; Выдача бита прерывания и стопового бита.
            ;clrf        PortA
            clrf        Sec100
            clrf        ACCSEL
            clrf        AUTRUN
            clrf        Sec000
            clrf        REVERS
            movlw       .0
            movwf       SecM
            movlw       .1
            movwf       Sec11
            clrf        SecMAX
            call        NONRUN
            call        NONRUN
            call        NONRUN
            call        NONRUN
;===================================================================================
;    Проверка DC звена, разрешения ограничения поля (разгон >50Гц) и ожидание пуска
;===================================================================================
            clrf        PortA       ;Снятие битов прерывания и стопа.
            call        NONRUN        
RUNN        clrf        REVERS
            clrwdt
            movf        ON2,0
            movwf       ON
            clrf        Sec000
            btfsc       PortA,0     ;Разрешение ослабления поля
            bsf         REVERS,7
            btfss       PortB,7     ;Опрос DC звена
            goto        F02
            btfss       PortB,7
            goto        F02
            btfss       PortA,2
            goto        Stop2
            btfss       PortA,2
            goto        Stop2
            movlw       .127        ;Индикация готовности к включению
            movwf       PortB
            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       ;Выключаем группу
;###################################################################################
            call        Delay       ;Смена констант частот
            clrf        TMR0        ;Сброс таймера
            bcf         Intcon,2    ;Сброс флага прерывания от TMR0
            bsf         Intcon,7    ;Разрешить прерывания            
            goto        SSD1        ;Программа ШИМ
;####################################################################################
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;===================================================================================
;                         Изменение частот вращения
;===================================================================================
Delay       clrwdt
            ;movlw       .126
            ;movwf       PortB
            movlw        .3
            movwf        ACCSEL    ;Время разгона. 
            movlw        .8
            movwf        PortA     ;Счётный бит прерывания поднят (смена частоты)
            btfss       SecM,4     ;Считывание из EEPROM 
            goto        DEREC
;-------------------------------------------------------------------------------
;           Адресация частот вращения
;-------------------------------------------------------------------------------
            movfw       Sec000
            goto        SELECT
;-------------------------------------------------------------------------------
;            Извлечение таблицы констант из 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
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;          Отсчёт частот вращения и подхват
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ROTOR       incf        ON,F      ; Отслеживание заданной начальной скорости (10Гц)
            incf        Sec000
            btfss       SecM,4     ;Считывание из EEPROM завершено или нет 
            clrf        Sec000     ;Инкремент регистра или очистка
            clrf        PortA       ;Бит счётного прерывания опущен (смена частоты завершена)
            ;movlw       .42
            ;movwf       PortB       ;Включение всех нижних ключей 2,4,6
            bcf         Status,0
            movfw       Sec11       ;Выбор минимального остаточного множителя для следующей частоты во избежание подмагничивания
            subwf       Sec12,0
            btfsc       Status,0
            return
            movfw       Sec12
            movwf       Sec11
            return
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;                       Константы Частот выше 50Гц
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
START250    movlw       .3       ;74.91Hz
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .1
            movwf       Sec2
            movlw       .179
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .1
            movwf       Sec5
            movlw       .179
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            bsf         SecMAX,7
            ;bsf         PortA,4    ;Индикация Частоты 75Гц
            goto        ROTOR
START240    movlw       .3       ;73,84Hz
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .1
            movwf       Sec2
            movlw       .182
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .1
            movwf       Sec5
            movlw       .182
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START230    movlw       .3       ;72,45Hz
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .1
            movwf       Sec2
            movlw       .186
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .1
            movwf       Sec5
            movlw       .186
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START220    movlw       .3       ;71,11Hz
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .1
            movwf       Sec2
            movlw       .190
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .1
            movwf       Sec5
            movlw       .190
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START210    movlw       .3       ;70,14Hz 330% 4220
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .1
            movwf       Sec2
            movlw       .193
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .1
            movwf       Sec5
            movlw       .193
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START200    movlw       .3       ;68,89Hz 330% 4139
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .1
            movwf       Sec2
            movlw       .197
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .1
            movwf       Sec5
            movlw       .197
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START190    movlw       .3       ;67,68Hz 330% 4053
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .1
            movwf       Sec2
            movlw       .201
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .1
            movwf       Sec5
            movlw       .201
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START180    movlw       .3       ;66,23Hz 320% 3965
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .1
            movwf       Sec2
            movlw       .206
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .1
            movwf       Sec5
            movlw       .206
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START170    movlw       .3       ;65.11Hz 300% 3845
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .5
            movwf       Sec2
            movlw       .205
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .1
            movwf       Sec5
            movlw       .212
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START160    movlw       .3       ;63,77Hz 295% 3758
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .6
            movwf       Sec2
            movlw       .209
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .1
            movwf       Sec5
            movlw       .217
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START150    movlw       .3       ;62,48Hz   285% 3675
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .10
            movwf       Sec2
            movlw       .210
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .1
            movwf       Sec5
            movlw       .222
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START140    movlw       .3       ;61,24Hz 275% 3595
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .14
            movwf       Sec2
            movlw       .211
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .1
            movwf       Sec5
            movlw       .227
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START130    movlw       .3       ;60,05Hz 260% 3525
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .20
            movwf       Sec2
            movlw       .210
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .1
            movwf       Sec5
            movlw       .232
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START120    movlw       .3       ;58,82Hz 247% 3434
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .25
            movwf       Sec2
            movlw       .210
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .1
            movwf       Sec5
            movlw       .238
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            ;bsf         SecMAX,7
            goto        ROTOR
START110    movlw       .3       ;57,51Hz 225% 3353
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .34
            movwf       Sec2
            movlw       .207
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .1
            movwf       Sec5
            movlw       .244
            movwf       Sec6
            movlw       .1
            movwf       Sec7           
            ;bsf         SecMAX,7
            goto        ROTOR            
START10     movlw       .3       ;56,25Hz 210% 3273
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .41
            movwf       Sec2
            movlw       .206
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .1
            movwf       Sec5
            movlw       .250
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            goto        ROTOR
START20A    movlw       .3       ;54,98Hz 195% 3193
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .48
            movwf       Sec2
            movlw       .206
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .1
            movwf       Sec5
            movlw       .255
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            goto        ROTOR
START30     movlw       .3       ;53,71Hz 174% 3075+
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .59
            movwf       Sec2
            movlw       .205
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .1
            movwf       Sec5
            movlw       .255
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            goto        ROTOR
START40     movlw       .3      ;52,49Hz 154% 3020+
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .69
            movwf       Sec2
            movlw       .200
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .11
            movwf       Sec5
            movlw       .255
            movwf       Sec6
            movlw       .1
            movwf       Sec7
            goto        ROTOR
START50     movlw       .3      ;51,21Hz 138% 2953+
            movwf       Sec12
            movlw       .1
            movwf       Sec1
            movlw       .77
            movwf       Sec2
            movlw       .198
            movwf       Sec3 
            movlw       .1
            movwf       Sec4
            movlw       .24
            movwf       Sec5
            movlw       .252
            movwf       Sec6
            movlw       .1
            movwf       Sec7            
            ;bsf         PortA,3    ;Bндикация между 50Гц и 75Гц
            goto        ROTOR
;############################################################################
;        Программная задержка
;############################################################################
NONRUN      decfsz      ACCSEL,F    ;Програмная здержка.
            goto        NONRUN
            clrwdt 
            decfsz      REVERS,F
            goto        NONRUN
            return
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;            Ошибка F0.2 Низкое напряжение DC звена
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
F02         clrwdt                 ;Ошибка DC звена F0.2
            clrf        Intcon
            movlw       .126
            movwf       PortB
            movlw       .8
            movwf       PortA
            call        NONRUN
            call        NONRUN
            call        NONRUN
            movlw       .127
            movwf       PortB
            call        NONRUN
            call        NONRUN
            call        NONRUN
            goto        F02

;*****************************************************************************
;                 Стоп
;*****************************************************************************
Stop2       clrf        Intcon
            movlw       .126
            movwf       PortB
            clrwdt
            btfss       PortA,2
            goto        Stop2
            btfss       PortA,2
            goto        Stop2
            goto        RUNN

;))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
;            Установки разгона
;))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
MIN         call        NONRUN           
            btfss       PortA,2
            goto        MIN
            btfss       PortA,2
            goto        MIN
            movlw       .127      ; 2,5 Hz
            movwf       ON2
            clrwdt
            call        SETT
VBN         clrwdt
            btfss       PortA,2
            goto        Stop
            btfss       PortA,2
            goto        Stop
            btfsc       PortA,1
            goto        VBN
            btfsc       PortA,1
            goto        VBN
            decf        ON2,F     ; Изменение регистра частоты разгона
            call        SETT
VB          clrwdt
            btfss       PortA,1
            goto        VB
            btfss       PortA,1
            goto        VB
            goto        VBN
SETT        movlw       .8        ; Выдача счётного бита (для индикации)
            movwf       PortA
            call        NONRUN
            clrf        PortA
            call        NONRUN
            return 
;00000000000000000000000000000000000000000000000000000000000000000000000000000
;           Прерывание по смене констант частот вращения поля
;00000000000000000000000000000000000000000000000000000000000000000000000000000 
FROM        movwf       AAW        ;Сохранение аккумулятора
            decfsz      ACCSEL,1   ;Деление времени прерывания (время переключения ступеней)
            goto        ZZF
            btfsc       SecMAX,7    ;Не осуществлять далее ускорение, (ограничение максимальной частоты).
            goto        ZZF
            btfss       PortA,1    ;Не отключать прерывания если нажата кнопка разгона
            goto        ZZFF
            btfsc        ON,7
            bcf         Intcon,5   ;Отключаем прерывания TMR0 если набрана конечная частота авторазгона.
            movlw       .1         ;Число в ACCSEL
            btfsc        ON,7
            movwf       ACCSEL     ;От переполнения ACCSEL
            btfsc        ON,7      ;Нет далее разгона
            goto        ZZF
ZZFF        call        Delay      ;Смена констант вращения
ZZF         clrf        TMR0
            movfw       AAW
            bcf         Intcon,2   ;Сброс флага прерывания.
            retfie                 
            end                   
