constx: equ 42h ; константа оси х
consty: equ 43h ; константа оси y
const_dph: equ 47h ; старший адрес начала фрейма
const_dpl: equ 48h ; младший адрес начала фрейма
x_coord: equ 4Bh ; координата точки по х
y_coord: equ 4Ch ; координата точки по у
new_coord_x: equ 44h ; координата точки по х
new_coord_y: equ 45h ; координата точки по у
cyc: equ 4Dh ; количество проходов цикла по tg
tg_h: equ 4Fh ; значение тангенса начального угла
tg_l: equ 41h ; значение тангенса начального угла
alpha: equ 65h ; начальный угол
kolvopovt: equ 58h ; количество повторяющихся значений tg_h
beta: equ 59h ; угол поворота
gamma: equ 5Ah ; конечный угол
sin_g_h: equ 5Ch ; синус конечного угла
sin_g_l: equ 5Dh ; синус конечного угла
cos_g_h: equ 5Eh ; косинус конечного угла
cos_g_l: equ 5Fh ; косинус конечного угла
sin_a_h: equ 60h ; синус начального угла
sin_a_l: equ 61h ; синус начального угла
cos_a_h: equ 62h ; косинус начального угла
cos_a_l: equ 63h ; косинус начального угла
funk: equ 64h ; текущая функция(tg=0, ctg=1)
chetvg: equ 66h ; добавляет 90 градусов(1-90,2-180,3-270 и т.д.)
org 8400h
lcall tune ; Настройка камеры
ret
;------------------------------------------; кнопка "Задать режим"
org 8480h
ret
;-------------------------------------------
; Задание точки
org 8460h
mov dpl, #F8h ;первая четверть
mov dph, #FDh ;первая четверть
push a
mov a, #FFh
movx @dptr, a
pop a
ret
;------------------------------------------; Загрузка кадра в окно
; кнопка "Загрузить кадр"
org 8490h
lcall upload ; Передача кадра в ЭВМ
ret
;------------------------------------------;кнопка "Снять кадр" (поворот картинки)
org 8500h
push a
push b
push psw
mov new_coord_x,#60
mov new_coord_y,#1
mov consty, #72
mov constx, #88
mov x_coord,new_coord_x
mov y_coord,new_coord_y
mov funk,#0
mov beta, #0
mov chetvert, #1
mov chetvg, #1
mov alpha, #0
mov cyc, #12
lcall opred_tg
lcall get_gamma
lcall get_new_coords_x
pop psw
pop b
pop a
;------------------------------------------opred_tg:
clr c
mov r1, #0
mov a, new_coord_x
mov r0, new_coord_x
mov r2, new_coord_y
subb a, new_coord_y
jc $no
mov r0, new_coord_y
mov r2, new_coord_x
$no: mov a,r2
push a
mov r2, #E8h ;домножаем на 1000
mov r3, #03h
lcall mul42
pop a
mov r0,a
mov r1, #0
lcall div42
mov tg_h,r5
mov tg_l,r4
;Определение угла
opr_ygla:
mov a, funk
cjne a, #0, ctg_h
mov dph,#8Eh
mov dpl, #00h
alpha_h: movx a, @dptr
mov tg_h,r5
cjne a, tg_h, m1
jmp kol_povt
m1: inc dptr
inc alpha
mov a, alpha
cjne a, #76, alpha_h
ost_ygli: inc dptr
movx a, @dptr
mov b, a
inc alpha
mov a, tg_h
clr c
subb a, b
jc m2
jmp ost_ygli
ctg_h: mov dph,#90h
mov dpl, #00h
alfa_h: movx a, @dptr
inc dptr
mov b, a
inc alpha
mov a, tg_h
clr c
subb a, b
jnc m2
djnz cyc, alfa_h
ost_ygl: movx a, @dptr
mov tg_h,r5
cjne a, tg_h, $m1
jmp kol_povt
$m1: inc dptr
inc alpha
mov a, alpha
jmp ost_ygl
kol_povt: mov tekush, a
m: cjne a, tekush, m2
inc dptr
mov tekush, a
movx a, @dptr
inc kolvopovt
push a
mov a,kolvopovt
add a, alpha
subb a,#89
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.