Вс июн 05, 2022 15:56:18
Вс июн 05, 2022 17:50:04
Вс июн 05, 2022 17:55:21
MPASMWIN.exe /e"./main.err" /l"./main.lst" /o"main.o" /q+ /p16f84a "..\main.asm"
make: *** [main.o] Error 1
Error code 2
Error[122] ..\MAIN.ASM 1 : Illegal opcode (СИГНАЛИЗАЦИЯ)
Warning[205] ..\MAIN.ASM 13 : Found directive in column 1. (__CONFIG)
Warning[205] ..\MAIN.ASM 55 : Found directive in column 1. (ORG)
Warning[203] ..\MAIN.ASM 56 : Found opcode in column 1. (GOTO)
Warning[205] ..\MAIN.ASM 57 : Found directive in column 1. (ORG)
Warning[203] ..\MAIN.ASM 58 : Found opcode in column 1. (GOTO)
Error[111] ..\MAIN.ASM 61 : Missing symbol
Warning[203] ..\MAIN.ASM 63 : Found opcode in column 1. (BSF)
Warning[203] ..\MAIN.ASM 64 : Found opcode in column 1. (MOVLW)
Warning[203] ..\MAIN.ASM 65 : Found opcode in column 1. (MOVWF)
Warning[203] ..\MAIN.ASM 66 : Found opcode in column 1. (MOVLW)
Warning[203] ..\MAIN.ASM 67 : Found opcode in column 1. (MOVWF)
Warning[203] ..\MAIN.ASM 68 : Found opcode in column 1. (MOVLW)
Warning[203] ..\MAIN.ASM 69 : Found opcode in column 1. (MOVWF)
Warning[203] ..\MAIN.ASM 70 : Found opcode in column 1. (MOVLW)
Warning[203] ..\MAIN.ASM 71 : Found opcode in column 1. (MOVWF)
Warning[203] ..\MAIN.ASM 72 : Found opcode in column 1. (BCF)
Warning[203] ..\MAIN.ASM 73 : Found opcode in column 1. (CLRF)
Warning[203] ..\MAIN.ASM 74 : Found opcode in column 1. (CLRF)
Warning[203] ..\MAIN.ASM 75 : Found opcode in column 1. (CLRF)
Warning[203] ..\MAIN.ASM 76 : Found opcode in column 1. (CLRF)
Warning[203] ..\MAIN.ASM 77 : Found opcode in column 1. (CLRF)
Warning[203] ..\MAIN.ASM 78 : Found opcode in column 1. (CLRF)
Warning[203] ..\MAIN.ASM 79 : Found opcode in column 1. (GOTO)
Warning[203] ..\MAIN.ASM 84 : Found opcode in column 1. (ADDWF)
Warning[203] ..\MAIN.ASM 86 : Found opcode in column 1. (RETLW)
Warning[203] ..\MAIN.ASM 87 : Found opcode in column 1. (RETLW)
Warning[203] ..\MAIN.ASM 88 : Found opcode in column 1. (RETLW)
Warning[203] ..\MAIN.ASM 89 : Found opcode in column 1. (RETLW)
Warning[203] ..\MAIN.ASM 90 : Found opcode in column 1. (RETLW)
Warning[203] ..\MAIN.ASM 91 : Found opcode in column 1. (RETLW)
Warning[203] ..\MAIN.ASM 92 : Found opcode in column 1. (RETLW)
Warning[203] ..\MAIN.ASM 93 : Found opcode in column 1. (RETLW)
Warning[203] ..\MAIN.ASM 94 : Found opcode in column 1. (RETLW)
Warning[203] ..\MAIN.ASM 95 : Found opcode in column 1. (RETLW)
Warning[203] ..\MAIN.ASM 96 : Found opcode in column 1. (RETLW)
Warning[203] ..\MAIN.ASM 97 : Found opcode in column 1. (RETLW)
Warning[204] ..\MAIN.ASM 102 : Found pseudo-op in column 1. (MOVFW)
Warning[203] ..\MAIN.ASM 103 : Found opcode in column 1. (CALL)
Warning[203] ..\MAIN.ASM 104 : Found opcode in column 1. (MOVWF)
Warning[203] ..\MAIN.ASM 105 : Found opcode in column 1. (GOTO)
Warning[203] ..\MAIN.ASM 110 : Found opcode in column 1. (BTFSS)
Warning[203] ..\MAIN.ASM 111 : Found opcode in column 1. (RETURN)
Warning[203] ..\MAIN.ASM 112 : Found opcode in column 1. (CLRF)
Warning[203] ..\MAIN.ASM 113 : Found opcode in column 1. (CLRF)
Warning[203] ..\MAIN.ASM 114 : Found opcode in column 1. (BTFSS)
Warning[203] ..\MAIN.ASM 115 : Found opcode in column 1. (RETURN)
Warning[203] ..\MAIN.ASM 116 : Found opcode in column 1. (INCF)
Warning[203] ..\MAIN.ASM 118 : Found opcode in column 1. (SUBWF)
Warning[204] ..\MAIN.ASM 119 : Found pseudo-op in column 1. (SKPNC)
Warning[203] ..\MAIN.ASM 120 : Found opcode in column 1. (BCF)
Warning[203] ..\MAIN.ASM 121 : Found opcode in column 1. (RETURN)
Warning[204] ..\MAIN.ASM 126 : Found pseudo-op in column 1. (MOVFW)
Warning[203] ..\MAIN.ASM 127 : Found opcode in column 1. (MOVWF)
Warning[203] ..\MAIN.ASM 129 : Found opcode in column 1. (SUBWF)
Warning[204] ..\MAIN.ASM 130 : Found pseudo-op in column 1. (SKPNC)
Warning[203] ..\MAIN.ASM 131 : Found opcode in column 1. (CLRF)
Error[116] ..\MAIN.ASM 132 : Address label duplicated or different in second pass (MOVLW.20)
Error[122] ..\MAIN.ASM 133 : Illegal opcode (SCN)
Warning[204] ..\MAIN.ASM 134 : Found pseudo-op in column 1. (SKPNC)
Warning[203] ..\MAIN.ASM 135 : Found opcode in column 1. (BCF)
Warning[203] ..\MAIN.ASM 136 : Found opcode in column 1. (CLRF)
Warning[203] ..\MAIN.ASM 137 : Found opcode in column 1. (RETURN)
Warning[203] ..\MAIN.ASM 142 : Found opcode in column 1. (MOVWF)
Warning[204] ..\MAIN.ASM 143 : Found pseudo-op in column 1. (MOVFW)
Warning[203] ..\MAIN.ASM 144 : Found opcode in column 1. (MOVWF)
Warning[204] ..\MAIN.ASM 145 : Found pseudo-op in column 1. (MOVFW)
Warning[203] ..\MAIN.ASM 146 : Found opcode in column 1. (MOVWF)
Warning[203] ..\MAIN.ASM 147 : Found opcode in column 1. (BTFSS)
Warning[203] ..\MAIN.ASM 148 : Found opcode in column 1. (GOTO)
Warning[203] ..\MAIN.ASM 149 : Found opcode in column 1. (CALL)
Warning[203] ..\MAIN.ASM 151 : Found opcode in column 1. (BCF)
Warning[203] ..\MAIN.ASM 152 : Found opcode in column 1. (BCF)
Warning[204] ..\MAIN.ASM 153 : Found pseudo-op in column 1. (MOVFW)
Warning[203] ..\MAIN.ASM 154 : Found opcode in column 1. (MOVWF)
Warning[204] ..\MAIN.ASM 155 : Found pseudo-op in column 1. (MOVFW)
Warning[203] ..\MAIN.ASM 156 : Found opcode in column 1. (MOVWF)
Warning[204] ..\MAIN.ASM 157 : Found pseudo-op in column 1. (MOVFW)
Warning[203] ..\MAIN.ASM 159 : Found opcode in column 1. (RETFIE)
Warning[203] ..\MAIN.ASM 164 : Found opcode in column 1. (INCF)
Warning[204] ..\MAIN.ASM 165 : Found pseudo-op in column 1. (MOVFW)
Warning[203] ..\MAIN.ASM 166 : Found opcode in column 1. (ADDLW)
Warning[204] ..\MAIN.ASM 167 : Found pseudo-op in column 1. (SKPNZ)
Warning[203] ..\MAIN.ASM 168 : Found opcode in column 1. (CALL)
Warning[204] ..\MAIN.ASM 169 : Found pseudo-op in column 1. (MOVFW)
Warning[203] ..\MAIN.ASM 170 : Found opcode in column 1. (ADDLW)
Warning[204] ..\MAIN.ASM 171 : Found pseudo-op in column 1. (SKPNZ)
Warning[203] ..\MAIN.ASM 172 : Found opcode in column 1. (BCF)
Warning[204] ..\MAIN.ASM 173 : Found pseudo-op in column 1. (SKPNZ)
Warning[203] ..\MAIN.ASM 174 : Found opcode in column 1. (BSF)
Warning[204] ..\MAIN.ASM 175 : Found pseudo-op in column 1. (MOVFW)
Warning[203] ..\MAIN.ASM 176 : Found opcode in column 1. (ADDLW)
Warning[204] ..\MAIN.ASM 177 : Found pseudo-op in column 1. (SKPNZ)
Warning[203] ..\MAIN.ASM 178 : Found opcode in column 1. (BCF)
Warning[204] ..\MAIN.ASM 179 : Found pseudo-op in column 1. (SKPNZ)
Warning[203] ..\MAIN.ASM 180 : Found opcode in column 1. (BSF)
Warning[204] ..\MAIN.ASM 181 : Found pseudo-op in column 1. (SKPNZ)
Warning[203] ..\MAIN.ASM 182 : Found opcode in column 1. (CLRF)
Warning[203] ..\MAIN.ASM 183 : Found opcode in column 1. (GOTO)
Warning[204] ..\MAIN.ASM 184 : Found pseudo-op in column 1. (MOVFW)
Warning[203] ..\MAIN.ASM 185 : Found opcode in column 1. (ADDLW)
Warning[204] ..\MAIN.ASM 186 : Found pseudo-op in column 1. (SKPNZ)
Warning[203] ..\MAIN.ASM 187 : Found opcode in column 1. (CLRF)
Warning[203] ..\MAIN.ASM 188 : Found opcode in column 1. (GOTO)
Warning[205] ..\MAIN.ASM 190 : Found directive in column 1. (END)
Вс июн 05, 2022 18:06:02
Вс июн 05, 2022 18:32:49
LIST P=PIC16F84A
__CONFIG 0x3FF1
STATUS EQU 0x03
PORTB EQU 0x06
TRISB EQU 0x06
Reg_1 EQU 0x0C
Reg_2 EQU 0x0D
Reg_3 EQU H'0E'
org 0 ; начало программы
; подготовительные моменты
bsf STATUS,5 ; переход в Банк 1
clrf TRISB
bcf STATUS,5 ; переход назад в Банк 0
; установка сигналов на порту В
m1 movlw b'11111111' ; запись в аккумулятор
movwf PORTB ; перенос из аккумулятора в порт
call Pause ; переход на метку (с возвратом)
clrf PORTB ; "очистка" порта
call Pause ; переход на метку (с возвратом)
goto m1 ; переход на метку (зацикливание)
;delay = 500000 machine cycles
Pause movlw .85
movwf Reg_1
movlw .138
movwf Reg_2
movlw .3
movwf Reg_3
wr decfsz Reg_1, F
goto wr
decfsz Reg_2, F
goto wr
decfsz Reg_3, F
goto wr
return
end ; конец программы
MPASMWIN.exe /e"./main.err" /l"./main.lst" /o"main.o" /q+ /p16f84a "..\main.asm"
make: *** [main.o] Error 1
Error code 2
Error[116] ..\MAIN.ASM 136 : Address label duplicated or different in second pass (MOVLW.2)
Error[116] ..\MAIN.ASM 145 : Address label duplicated or different in second pass (MOVLW.2)
Warning[207] ..\MAIN.ASM 147 : Found label after column 1. (PAUSA1)
Warning[204] ..\MAIN.ASM 192 : Found pseudo-op in column 1. (MOVFW)
Warning[204] ..\MAIN.ASM 194 : Found pseudo-op in column 1. (MOVFW)
Warning[204] ..\MAIN.ASM 199 : Found pseudo-op in column 1. (MOVFW)
Warning[204] ..\MAIN.ASM 201 : Found pseudo-op in column 1. (MOVFW)
Warning[204] ..\MAIN.ASM 203 : Found pseudo-op in column 1. (MOVFW)
Вс июн 05, 2022 18:41:48
Вс июн 05, 2022 18:45:07
ID2O
MOVLW.2 ;ПАУЗА 2,69 МИЛЛИСЕКУНДЫ.
MOVWF COU ;ОБЩАЯ ДЛИНА-22 ТАКТА.
PAUSA
DECF COU,1 ;ВЫЧТЕМ 1.
TSTF COU ;ПРОТЕСТИРУЕМ НА НОЛЬ.
SKPZ ;ЕСЛИ НЕ РАВНО НУЛЮ,
GOTO PAUSA ;ПОВТОРИМ.
RETURN
ID21
MOVLW.2 ;ПАУЗА 2,69 МИЛЛИСЕКУНДЫ.
MOVWF COU ;ОБЩАЯ ДЛИНА-22 ТАКТА.
PAUSA1
Error[116] ..\MAIN.ASM 136 : Address label duplicated or different in second pass (MOVLW.2) Error[116] ..\MAIN.ASM 145 : Address label duplicated or different in second pass (MOVLW.2)
; ПОЖАРНАЯ СИГНАЛИЗАЦИЯ НА 11 ДАТЧИКОВ,
; МОДУЛЯТОР ПЕРЕДАТЧИКА.
; РАЗРАБОТАЛ ПОПОВ Е.С,.
; ДЛЯ СВОБОДНОГО ИСПОЛЬЗОВАНИЯ.
; ИЖЕВСК
;
; ПРОГРАММА = OXPANAPD.ASM
; ВЕРСИЯ: 11-04-03.
; АССЕМБЛЕР И ОТЛАДЧИК: MPLAB IDE, ВЕРСИЯ: 5.61.00.
;
#include p16f84a.inc
__CONFIG 3FF0H
;=====
; ИСПОЛЬЗУЕТСЯ КВАРЦ ЧАСТОТОЙ 32768 ГЦ.
;=====
; RB0=1, RB1=2, RB2=3, RB4=4, RB5=6, RB6=7, RB7=8,
; RA0=9, RA1=10, RA2=11 - ВХОДЫ ДАТЧИКОВ.
; RA3-ВЫХОД МОДУЛЯЦИИ, RA4-ВЫХОД ВКЛЮЧЕНИЯ НЕСУЩЕЙ.
;=====
; СПЕЦ РЕГИСТРЫ.
;=====
INDF EQU 00H ;ДОСТУП К ПАМЯТИ ЧЕРЕЗ FSR.
TIMER0 EQU 01H ;TMR0.
OPTIONR EQU 81H ;OPTION (RP0=1).
PC EQU 02H ;СЧЕТЧИК КОМАНД.
STATUS EQU 03H ;РЕГИСТР СОСТОЯНИЯ АЛУ.
FSR EQU 04H ;РЕГИСТР КОСВЕННОЙ АДРЕСАЦИИ.
PORTA EQU 05H ;ПОРТ А ВВОДА/ВЫВОДА.
PORTB EQU 06H ;ПОРТ В ВВОДА/ВЫВОДА.
TRISA EQU 85H ;НАПРАВЛЕНИЯ ДАННЫХ ПОРТА А.
TRISB EQU 86H ;НАПРАВЛЕНИЯ ДАННЫХ ПОРТА В.
INTCON EQU 0BH ;РЕГИСТР ФЛАГОВ ПРЕРЫВАНИЙ.
;=======
; ОПРЕДЕЛЕНИЕ РЕГИСТРОВ.
;=======
SC EQU 0CH ;РЕГИСТР ИНДИКАЦИИ.
COU EQU 0DH ;СЧЕТЧИК ПАУЗЫ.
;====
; ВРЕМЕННЫЕ РЕГИСТРЫ.
;====
W_TEMP EQU 0EH ;БАЙТ СОХРАНЕНИЯ РЕГИСТРА W ПРИ ПРЕРЫВАНИИ.
STATUS_TEMP EQU 0FH ;БАЙТ СОХРАНЕНИЯ РЕГИСТРА STATUS ПРИ ПРЕРЫВАНИИ.
FSR_TEMP EQU 10H ;ВРЕМЕННЫЙ ДЛЯ FSR.
;=====================
; ОПРЕДЕЛЕНИЕ БИТОВ РЕГИСТРА FLAG.
;=====================
FLAG EQU 11H ;
;
; 0-> НЕСУЩАЯ ВЫКЛЮЧЕНА ПО ДАТЧИКУ.
; 1-> НЕСУЩАЯ ВКЛЮЧЕНА ЧЕРЕЗ 1 СЕКУНДУ.
;
;=======
; 1. ПУСК.
;=======
ORG 0
GOTO INIT
ORG 4
GOTO CONST
;====
; 4. ВЫВОД ИМПУЛЬСОВ МОДУЛЯЦИИ.
;====
ID2
MOVLW.2 ;АНАЛОГИЧНО ПЕРВОМУ.
MOVWF SC ;
GOTO IDZ ;
;=======
ID3
MOVLW.3
MOVWF SC
GOTO IDZ ;
;======
ID4
MOVLW.4
MOVWF SC
GOTO IDZ ;
;=======
ID5
MOVLW.5
MOVWF SC
GOTO IDZ ;
;=======
ID6
MOVLW.6
MOVWF SC
GOTO IDZ ;
;=======
ID7
MOVLW.7
MOVWF SC
GOTO IDZ ;
;=======
ID8
MOVLW.8
MOVWF SC
GOTO IDZ ;
;=======
ID9
MOVLW.9
MOVWF SC
GOTO IDZ ;
;=======
ID10
MOVLW.10
MOVWF SC
GOTO IDZ ;
;=======
ID11
MOVLW.11
MOVWF SC
GOTO IDZ ;
;=====
ID1
MOVLW.1 ;ЗАПИШЕМ НОМЕР ДАТЧИКА
MOVWF SC ;В РЕГИСТР ИНДИКАЦИИ.
IDZ
TSTF SC ;ЕСЛИ
SKPNZ ;РЕГИСТР НУЛЕВОЙ,
GOTO ID0I ;ИДЕМ НА ЗАВЕРШЕНИЕ.
DECF SC,1 ;ВЫЧТЕМ 1 ИЗ РЕГИСТРА.
BSF PORTA,3 ;ВКЛЮЧИМ ВЫХОД.
CALL ID21 ;ОТРАБОТАЕМ ПАУЗУ, РАВНУЮ ДЛИТЕЛЬНОСТИ ЕДИНИЦЫ.
BCF PORTA,3 ;ВЫКЛЮЧИМ ВЫХОД.
CALL ID2O ;ОТРАБОТАЕМ ПАУЗУ, РАВНУЮ ДЛИТЕЛЬНОСТИ НОЛЯ.
GOTO IDZ ;НАЧНЕМ СНАЧАЛА.
ID0I
CLRWDT
BCF PORTA,4 ;ВЫКЛЮЧИМ НЕСУЩУЮ.
BSF FLAG,0 ;ВКЛЮЧИМ ФЛАГ ВЫКЛЮЧЕНИЯ НЕСУЩЕЙ.
BTFSC FLAG,1 ;ЖДЕМ ПОКА ВКЛЮЧИТСЯ ФЛАГ ВКЛЮЧЕНИЯ НЕСУЩЕЙ.
GOTO ID0I ;ХОДИМ ПО КРУГУ.
GOTO KEY ;ПРОВЕРИМ ДАТЧИКИ.
;=========
; 5. ПАУЗА.
;=========
ID2O
MOVLW.2 ;ПАУЗА 2,69 МИЛЛИСЕКУНДЫ.
MOVWF COU ;ОБЩАЯ ДЛИНА-22 ТАКТА.
PAUSA
DECF COU,1 ;ВЫЧТЕМ 1.
TSTF COU ;ПРОТЕСТИРУЕМ НА НОЛЬ.
SKPZ ;ЕСЛИ НЕ РАВНО НУЛЮ,
GOTO PAUSA ;ПОВТОРИМ.
RETURN
ID21
MOVLW.2 ;ПАУЗА 2,69 МИЛЛИСЕКУНДЫ.
MOVWF COU ;ОБЩАЯ ДЛИНА-22 ТАКТА.
PAUSA1
DECF COU,1 ;ВЫЧТЕМ 1.
CLRWDT
NOP
NOP
TSTF COU ;ПРОТЕСТИРУЕМ НА НОЛЬ.
SKPZ ;ЕСЛИ НЕ РАВНО НУЛЮ,
GOTO PAUSA1 ;ПОВТОРИМ.
RETURN
;===========
; 3. ОПРОС ДАТЧИКОВ.
;===========
KEY
CLRWDT
BTFSS FLAG,1 ;ЕСЛИ НЕСУЩАЯ ВЫКЛЮЧЕНА,
GOTO KEY ;ОПРОС ДАТЧИКОВ НЕ ПРОИЗВОДИТСЯ.
BTFSC PORTB,0 ;ЕСЛИ ДАТЧИК РАЗОРВАН,
GOTO ID1 ;ИДЕМ ФОРМИРОВАТЬ ИМПУЛЬС МОДУЛЯЦИИ.
BTFSC PORTB,1
GOTO ID2
BTFSC PORTB,2
GOTO ID3
BTFSC PORTB,3
GOTO ID4
BTFSC PORTB,4
GOTO ID5
BTFSC PORTB,5
GOTO ID6
BTFSC PORTB,6
GOTO ID7
BTFSC PORTB,7
GOTO ID8
BTFSC PORTA,0
GOTO ID9
BTFSC PORTA,1
GOTO ID10
BTFSC PORTA,2
GOTO ID11
BCF FLAG,0
GOTO KEY ;ЕЩЕ РАЗ ПРОВЕРИМ ДАТЧИКИ.
;== ============
; 6. СОХРАНЕНИЕ И ВОССТАНОВЛЕНИЕ ЗНАЧЕНИЙ РЕГИСТРОВ ПРИ ПРЕРЫВАНИИ.
;==================
CONST
MOVWF W_TEMP ;СОХРАНЕНИЕ ЗНАЧЕНИЙ РЕГИСТРОВ W И
MOVFW STATUS ;STATUS,
MOVWF STATUS_TEMP ;
MOVFW FSR ;FSR.
MOVWF FSR_TEMP ;
CALL S1 ;ПРИБАВИМ 1 В СЧЕТЧИК.
RECONST ;ВОССТАНОВЛЕНИЕ СОХРАНЕННЫХ ЗНАЧЕНИЙ.
BCF INTCON,2 ;СБРОС ФЛАГА (T0IF) ПЕРЕПОЛНЕНИЯ ТАЙМЕРА.
MOVFW STATUS_TEMP ;ВОССТАНОВЛЕНИЕ РЕГИСТРОВ:
MOVWF STATUS ;STATUS,
MOVFW FSR_TEMP ;
MOVWF FSR ;FSR,
MOVFW W_TEMP ;W.
RETFIE ;ВОЗВРАТ ИЗ ПРЕРЫВАНИЯ.
;==========
; 7. ВКЛЮЧЕНИЕ НЕСУЩЕЙ.
;==========
S1
BTFSC FLAG,1 ;ЕСЛИ НЕСУЩАЯ БЫЛА ВКЛЮЧЕНА,
GOTO S10 ;ТО ИДЕМ ВЫКЛЮЧАТЬ.
BSF PORTA,4 ;ВКЛЮЧИМ НЕСУЩУЮ,
BSF FLAG,1 ;ПОСТАВИМ ФЛАГ ВКЛЮЧЕНИЯ.
BTFSC FLAG,0 ;ЕСЛИ НЕСУЩАЯ ВЫКЛЮЧАЛАСЬ ПО ДАТЧИКУ,
RETURN ;ИМПУЛЬС НЕ ФОРМИРУЕТСЯ.
CALL ID2O ;ПАУЗА, РАВНАЯ НУЛЮ.
BSF PORTA,3 ;ВКЛЮЧИМ ВЫХОД.
CALL ID21 ;ОТРАБОТАЕМ ПАУЗУ, РАВНУЮ ДЛИТЕЛЬНОСТИ ЕДИНИЦЫ.
BCF PORTA,3 ;ВЫКЛЮЧИМ ВЫХОД.
CALL ID2O ;ПАУЗА, РАВНАЯ НУЛЮ.
BCF PORTA,4 ;ВЫКЛЮЧИМ НЕСУЩУЮ.
RETURN
S10
BCF FLAG,1 ;СБРОСИМ ФЛАГ ВКЛЮЧЕНИЯ НЕСУЩЕЙ.
BTFSC FLAG,0 ;ЕСЛИ НЕСУЩАЯ ВЫКЛЮЧАЛАСЬ ПО ДАТЧИКУ,
RETURN ;ИМПУЛЬС НЕ ФОРМИРУЕТСЯ.
BSF PORTA,4 ;ВКЛЮЧИМ НЕСУЩУЮ,
CALL ID2O ;ПАУЗА, РАВНАЯ НУЛЮ.
BSF PORTA,3 ;ВКЛЮЧИМ ВЫХОД.
CALL ID21 ;ОТРАБОТАЕМ ПАУЗУ, РАВНУЮ ДЛИТЕЛЬНОСТИ ЕДИНИЦЫ.
BCF PORTA,3 ;ВЫКЛЮЧИМ ВЫХОД.
CALL ID2O ;ПАУЗА, РАВНАЯ НУЛЮ.
BCF PORTA,4 ;ВЫКЛЮЧИМ НЕСУЩУЮ.
RETURN
;====
; 2. ИНИЦИАЛИЗАЦИЯ.
;====
INIT
BSF STATUS,RP0 ;ПЕРЕХОДИМ В БАНК 1.
MOVLW B'00000100';ПРЕДДЕЛИТЕЛЬ ПЕРЕД ТАЙМЕРОМ, К=32...100,
MOVWF OPTION_REG^80H;ПОДТЯГИВАЮЩИЕ РЕЗИСТОРЫ ВКЛЮЧЕНЫ.
MOVLW B'10100000' ;РАЗРЕШЕНИЕ ПРЕРЫВАНИЯ = ПРИ ПЕРЕПОЛНЕНИИ ТАЙМЕРА.
MOVWF INTCON ;
MOVLW B'00000111' ;RA3,RA4-НА ВЫХОД, RA0-RA2-ВХОД.
MOVWF TRISA^80H
MOVLW B'11111111' ;RB0-RB7-НА ВХОД.
MOVWF TRISB^80H
BCF STATUS,RP0 ;ПЕРЕХОДИМ В БАНК 0.
CLRF TMR0 ;ВСЕ ОБНУЛЯЕМ И УСТАНАВЛИВАЕМ
CLRF FLAG
CLRF PORTA
CLRF COU
GOTO KEY ;ИДЕМ НА ОПРОС ДАТЧИКОВ.
;==========
END
;