;                     "ШАПКА" ПРОГРАММЫ
;********************************************************************************
           LIST p=12F629                 ; Назначение типа ПИКа: PIC12F629.
           __CONFIG 3F94H                ; Установка битов конфигурации: внутренний
                                         ; генератор, WDT выключен, бит защиты не
                                         ; установлен, PWRT выключен (11111110010100).
;================================================================================
;           Определение адресов регистров специального назначения.
;================================================================================
Status     equ            03h            ; Регистр Status
IntCon     equ            0Bh            ; Регистр IntCon
PIR1       equ            0Ch            ; Регистр флага завершения записи EEPROM
EEdata     equ            9Ah            ; EEPROM данные - Банк 1
EEAdr      equ            9Bh            ; EEPROM адрес - Банк 1
EECon1     equ            9Ch            ; EECON1 - Банк 1
EECon2     equ            9Dh            ; EECON2 - Банк 1
;================================================================================
; Определение названия и адресов регистров общего назначения.
;================================================================================
S1         equ            20h            ; Длительность импульса
S2         equ            21h            ; Регистр младьшего разряда задерж
S3         equ            22h            ; Регистр старшего разряда задержки
S4         equ            23h            ; Регистр режима работы
S5         equ            24h            ; Регистры промежуточного
;================================================================================
; Присвоение буквенного обозначения операции направления результата выполнения
; команды в регистр, с содержимым которого производится действие (для удобства
; восприятия текста программы).
;================================================================================
F          equ            1              ; Результат направить в регистр, с содержимым
                                         ; которого производится действие.
W          equ            0              ; Результат сохранить в аккумуляторе
;================================================================================
; Присвоение битам их стандартных названий.
; (для удобства восприятия текста программы).
;================================================================================
RP0        equ            5              ; Присвоение 5-му биту регистра STATUS
                                         ; названия RP0.
;-------------------------------------------------------------------------------
           org            2100h          ; Обращение к EEPROM памяти данных.
           DE             0FFh,0FFh,0FFh,0FFh,1h    ; Записать в ячейки с адресами .0, .1, .2 
                                         ; числа 0h, 0h, 64h (.100) соответственно. 
;================================================================================
; Определение точки входа в программу.
;================================================================================
           org            0              ; Начать выполнение программы
           goto           START          ; с первой команды подпрограммы START.
;********************************************************************************
;------------------------ РАБОЧАЯ ЧАСТЬ ПРОГРАММЫ -----------------------------
;********************************************************************************
; Подготовительные операции.
;--------------------------------------------------------------------------------
START      clrf           IntCon         ; Запрещение прерываний            
           movlw          .1              
           movwf          S1
           movlw          .2              
           movwf          S2
           movlw          .3              
           movwf          S3
           movlw          .4              
           movwf          S4
           movlw          .5              
           movwf          S5
           btfsc          PIR1,7
           goto           START
;--------------------------------------------------------------------------------
; Запись 
;--------------------------------------------------------------------------------                   
           bsf            Status,RP0     ; Выбрать банк 1
           movlw          .0             ; Записать в регистр W константу 0h.
           movwf          EEAdr          ; Скопировать 0h из регистра W в регистр EEAdr.
           movf           S1,W           ; Скопировать данные регистра  
           movwf          EEdata         ; для записи в EEPROM           
           bsf            EECon1,2       ; Разрешить запись
           bcf            IntCon,7       ; Глобальный запрет прерываний             
           movlw          055h
           movwf          EECon2
           movlw          0AAh
           movwf          EECon2
           bsf            EECon1,1
;-------------------------------------------------------------------------------------------
           movlw          .1             ; Записать в регистр W константу 1h.
           movwf          EEAdr          ; Скопировать 1h из регистра W в регистр EEAdr.
           movf           S2,W           ; Скопировать данные регистра МЛАДЬШЕГО 
           movwf          EEdata         ; разряда задержки для записи в EEPROM           
           bsf            EECon1,2       ; Разрешить запись
           bcf            IntCon,7       ; Глобальный запрет прерываний           
           movlw          055h
           movwf          EECon2
           movlw          0AAh
           movwf          EECon2
           bsf            EECon1,1
;--------------------------------------------------------------------------------
           movlw          .2             ; Записать в регистр W константу 3h.
           movwf          EEAdr          ; Скопировать 3h из регистра W в регистр EEAdr.
           movf           S3,W           ; Скопировать данные регистра МЛАДЬШЕГО 
           movwf          EEdata         ; разряда задержки для записи в EEPROM           
           bsf            EECon1,2       ; Разрешить запись
           bcf            IntCon,7       ; Глобальный запрет прерываний           
           movlw          055h
           movwf          EECon2
           movlw          0AAh
           movwf          EECon2
           bsf            EECon1,1
;--------------------------------------------------------------------------------
           movlw          .3             ; Записать в регистр W константу 4h.
           movwf          EEAdr          ; Скопировать 4h из регистра W в регистр EEAdr.
           movf           S4,W           ; Скопировать данные регистра МЛАДЬШЕГО 
           movwf          EEdata         ; разряда задержки для записи в EEPROM           
           bsf            EECon1,2       ; Разрешить запись
           bcf            IntCon,7       ; Глобальный запрет прерываний           
           movlw          055h
           movwf          EECon2
           movlw          0AAh
           movwf          EECon2
           bsf            EECon1,1         
;---------------------------------------------------------------------------------------
           movlw          .4             ; Записать в регистр W константу 4h.
           movwf          EEAdr          ; Скопировать 4h из регистра W в регистр EEAdr.
           movf           S5,W           ; Скопировать данные регистра МЛАДЬШЕГО 
           movwf          EEdata         ; разряда задержки для записи в EEPROM           
           bsf            EECon1,2       ; Разрешить запись
           bcf            IntCon,7       ; Глобальный запрет прерываний           
           movlw          055h
           movwf          EECon2
           movlw          0AAh
           movwf          EECon2
           bsf            EECon1,1
           bcf            EECon1,2       ; Запрет записи 
           bcf            Status,RP0     ; Выбрать банк 0
           goto           START                   
;================================================================================
           end                           ; Конец программы.

