і
АВТОМАТИКА
І
return
; режиме частотометра
movf
Al, W
movwf
A0
call
Float
; Плавающая точка
movf
A2, W
call
BEQUA
; В=А
movwf
Al
call
Цру
; А-А*А возведение в
clrf
A2
; квадрат
bsf
то, 3
return
movf
АО, W
Проверка TMRO на переполнение
btfss
STATUS, Z
Provtmr
btfss
INTCON, TOIF
; Проверка переполнения
goto
NORM32
goto
Paus
; нет, идем на пауву.
movf
Al, W
movlw
OxFF
Проверка не равен ли
movwf
AO
bef
STATUS, Z
; ТітегН-ОхГР
cl rf
Al
subwf
TimerH, W
bef
то, 3
btfss
STATUS, Z
bsf
TO, 4
goto
No
incf
TimerHH, F
; если равен, то
movf
AO, W
; увеличиваем
btfsc
STATUS, Z
cl rf
TimerH
; ТітегНН на единицу и
goto
RES032
bef
INTCON, TOIF
; обнуляем ТітегН
goto
Ret
N0RM32
movf
T0, W
No
incf
TimerH, F
subwf
AX, F
bef
INTCON, TOIF
bef
STATUS, C
nop
goto
Rat
NORM32A
btfsc
AO, MSB
Paus
nop
goto
FIXSIGN32
goto
$+1
; Просто выравнивание
rlf
A2, F
; длительности
rlf
Al, F
goto
$+1
/ выполнения подпрограммы
rlf
AO, F
goto
$+1
; для различных вариантов
deef
AX, F
goto
$+1
; хода событий
goto
NORM32A
Rat
return
FIXSIGN32
btfss
SIGN, MSB
;
Перекодировка значения из двоичного в десятичный формат
bef
AO, MSB
BCD
movlw
0x20
retlw
0
movwf
T1
clrf
BCD0
;
Результат:
A <— INT ( A )
clrf
BCD1
Int
bsf
AO, MSB
clrf
BCD2
clrf
BCD3
movlw
EXPBIAS
clrf
BCD4
subwf
AX, F
btfss
AX, MSB
BcdLoop
rlf
A2, F
btfsc
STATUS, Z
rlf
Al, F
goto
RES032
rlf
AO, F
movf
AX, W
rlf
АХ, F
sublw
0
x
1
e
movwf
AX
rlf
BCD0, F
rlf
BCD1, F
SHIFT32
bef
STATUS, C
rlf
BCD2, F
rrf
A0, F
rlf
BCD3, F
rrf
Al, F
rlf
BCD4, F
rrf
A2, F
deefsz Tl, F
deefsz AX, F
goto
Adjust
goto
SHIFT32
return
retlw
0
Adjust
movlw
.5
RES032
call
ClrA
movwf
count2
movlw
BCD0
INT32QK
retlw
0
movwf
FSR
goto
ADloop+1
;
Результат:
A <— A * B
Мру
movf
AX, W
ADloop
incf
FSR, F
btfss
STATUS, Z
call
Adjbcd
movf
BX, w
deefsz count2, F
btfsc
STATUS, Z
goto
ADloop
goto
RES032
goto
BcdLoop
M32BNE0
movf
AO, W
Adjbed
movlw
0x03
xorwf
во, w
addwf
INDF, W
movwf
Sign
movwf
T0
btfsc
TO, 3
movf
BX, W
movwf
INDF
addwf
AX, F
movlw
0x30
movlw
EXPBIAS
addwf
INDF, W
btfss
STATUS, C
movwf
T0
goto
MTUN32
btfsc
TO, 7
addwf
AX, F
movwf
INDF
goto
MOK32
return
MTUN32
addwf
AX, F
МОК32
bsf
A0, MSB
;
32-х битная библитека с плавающей точкой
bsf
B0, MSB
EXPBIAS dqu
н*ео*
; Basa представления числа
bef
STATUS, C
clrf
A3
;
Конвертирование 24-х битного числа ив блока А в формат с
cl rf
A4
nji. точкой 32 бита в блок A
clrf
A5
Float
movlw
0x18-f EXPBIAS
movlw
0x16
movwf
AX
movwf
T0
clrf
Sign
MLOOP32
btfss
A2, LSB
;
Нормализация
goto
MNQADD32
NRM32
clrf
TO
movf
AO, W
MADD32
movf
B2, W
BTFSS
STATUS, Z
addwf
A5, F
goto
NORM32
movf
Bl, W
; clear АХ for other
* routines
I « і
I
Радиолюбитель - 03/2005
предыдущая страница 23 Радиолюбитель 2005-03 читать онлайн следующая страница 25 Радиолюбитель 2005-03 читать онлайн Домой Выключить/включить текст