АВТОМАТИКА
\
btfsc
_DX
call
DispSp
movlw
b'lOlOOOOl*
; "creasy char" :)
call
CharLCD
; Указатель мегагерц
djall
DispSp
movlw
0x64
; Индикация разряда
call
TestBatW
; в 5~м знакоместе
movlw
0x04
call
ReadWString
btfsc
_DX
; В режиме F2 необходимо
; умножение
call
Mpy64
call
BCD
btfss
_DX
goto
$+3
movf
BCD4, W
; Сотни МГц
call
NumLCD
movlw
BCD3
; Десятки МГц
call
DispBCD
movlw
BCD3
; Единицы МГц
call
DispBCD
movlw
BCD2
; Сотни кГц
call
DispBCD
movlw
BCD2
; Десятки кГц
call
DispBCD
call
Digitl
; Единицы кГц
call
Digit2
; Сотни Гц
call
Digit3
; Десятки Гц
call
Digit4
; Единицы Гц
movlw
0x82
; индикация частоты
call
CmdLCD
call
GetSwitch
btfss
_FX
; Если режим не изменён,
; то продолжить
goto
FLoop
call
ClrDSP
; иначе очистка и выход
btfsa
Flags,
1
; режим ожидания калибровки
goto
Main
; или главный цикл, если
goto
Meter
; калибровка уже была
Пересчет частоты с учётом внешнего делителя
Мру64
movlw
6
; Множитель 2л6-64
movwf
Countl
MLoop
bef
STATUS, C
rlf
A2, F
; Умножение на 2
rlf
Al, F
rlf
AO, F
rlf
АХ, F
deefsz Countl, F
goto
return
MLoop
;
Инкрементирование полублока В
IncB
incf
B2, F
btfsc
STATUS, Z
incf
Bl, F
goto
ShowX
;
Декрементирование полублока В
DecB
movf
B2, F
btfsc
STATUS, Z
deef
Bl, F
deof
B2, F
ShowX
movlw
BX
call
Copy__To A
call
BCD
movlw
OxBB
f
call
Char8
call
Digiti
btf*s
_DX
call
DispDot
call
Digit2
call
Digit3
call
Digit4
call
DispSP
call
Delay05sec
return
;
Копирование "по назначению" блока (4 байта) данных
;
Tempi - адрес получателя
18 |----------------------------------------------------------------
;
Temp2 — адрес источника
CEQUA
movlw
CX
; C*=A
Copy_From А
movwf
Tempi
; Xw-A
movlw
AX
movwf
Temp2
goto
Copy
BEQUA
movlw
AX
; B-A
Сору_То_В
movwf
Temp2
; B-Xw
movlw
BX
goto
Copy__B
AEQUF
movlw
FX
; A=F
Сору_То_А
movwf
Temp2
; A-Xw
movlw
AX
Сору_В
movwf
Tempi
Сору
movlw
A
; Объём блока
movwf
Countl
і Copy_Loop
movf
Temp2, W
movwf
FSR
movf
INDF, W
movwf
ТешрЗ
movf
Tempi, W
movwf
FSR
movf
Temp3, W
movwf
INDF
incf
Tempi, F
incf
Temp2, F
deefsz Countl, F
goto
Copy_Loop
return
;
Чтение данных из EEPROM в полублок В
EEPR0M_To_B
bef
STATUS, RP0
movwf
EEADR
; Адрес первого байта
call
ClrB
call
ReadEEPROM
movwf
Bl
incf
EEADR, F
call
ReadEEPROM
movwf
B2
return
;
Чтение строки из EEPROM пока не встретится 0x00 и вывод :
дисплей
ReadWString
movwf
EEADR
ReadFString
movf
EEADR, W
call
ReadEEPROM
andlw
OxFF
btfsc
STATUS, Z
return
call
CharLCD
Incf
EEADR, F
goto
ReadFString
;
Чтение EEPROM
ReadEEPROM
bsf
STATUS, RP0
bsf
EECON1, RD
; Запрос на чтение ЕЕРИОМ
bef
STATUS, RP0
movf
EEDATA, И
return
;
Сохранение данных в ЕЕPROM
Save_2_EE
movwf
EEADR
bef
STATUS, RP0
bsf
EECON1, WREN
movlw
0x55
movwf
EECON2
movlw
OxAA
movwf
EECON2
bsf
EECONI, WR
bef
EECON1, WREN
btfsc
EEC0N1, WR
goto
$-1
bef
STATUS, RP0
return
;
Очистка регистров ОЗУ с 0x0F по 0x50
ClrRegs
movlw
OxOF
movwf
FSR
movlw
.65
goto
ClrLoop-1
ClrB
movlw
BX
; Очистка блока В
goto
ClrA+1
Cl г А
movlw
AX
; Очистка блока А
movwf
FSR
movlw
4
movwf
Countl
ClгLoop
clrf
INDF
; Цикл очистки
I
Радиолюбитель - 03/2005
предыдущая страница 19 Радиолюбитель 2005-03 читать онлайн следующая страница 21 Радиолюбитель 2005-03 читать онлайн Домой Выключить/включить текст