.db 83h, 75h, 68h, 5Ah, 4Ch, 3Eh, 2Fh, 21h, 12h, 03h
.db F4h, E5h, D5h, C6h, B6h, A7h, 97h, 87h, 77h, 66h
.db 56h, 46h, 35h, 24h, 14h, 03h, F2h, E1h, D0h, BFh
.db AEh, 9Ch, 8Bh, 7Ah, 69h, 57h, 46h, 34h, 23h, 11h
org 8E00h
tan_h:
.db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
.db 00h, 00h, 00h, 00h, 01h, 01h, 01h, 01h, 01h, 01h
.db 01h, 01h, 01h, 01h, 01h, 01h, 01h, 02h, 02h, 02h
.db 02h, 02h, 02h, 02h, 02h, 02h, 02h, 03h, 03h, 03h
.db 03h, 03h, 03h, 03h, 03h, 04h, 04h, 04h, 04h, 04h
.db 04h, 05h, 05h, 05h, 05h, 05h, 06h, 06h, 06h, 06h
.db 07h, 07h, 07h, 08h, 08h, 08h, 09h, 09h, 0Ah, 0Ah
.db 0Bh, 0Ch, 0Ch, 0Dh, 0Eh, 0Fh, 10h, 12h, 14h, 16h
.db 18h, 1Bh, 1Fh, 25h, 2Ch, 37h, 4Ah, 6Fh, DFh, FFh
org 8F00h
tan_l:
.db 11h, 23h, 34h, 46h, 57h, 69h, 7Bh, 8Dh, 9Eh, B0h
.db C2h, D5h, E7h, F9h, 0Ch, 1Fh, 32h, 45h, 58h, 6Ch
.db 80h, 94h, A8h, BDh, D2h, E8h, FEh, 14h, 2Ah, 41h
.db 59h, 71h, 89h, A3h, BCh, D7h, F2h, 0Dh, 2Ah, 47h
.db 65h, 84h, A5h, C6h, E8h, 9Ch, 30h, 57h, 7Eh, A8h
.db D3h, 00h, FFh, 60h, 94h, CBh, 04h, 40h, 80h, C4h
.db 0Ch, 59h, ABh, 02h, 61h, C6h, 34h, ABh, 2Dh, BBh
.db 58h, 06h, C7h, 9Fh, 94h, ABh, EBh, 61h, 19h, 27h
.db AAh, CBh, D0h, 2Ah, A6h, DDh, 89h, DCh, CAh, FFh
org 9C00h
frame:
Подпрограмма умножения r2r0*r3r2=r7r6r5r4
umnogeni:
mul42:
mov a, #16
mov r7, #0
mov r6, #0
mov r5, #0
mov r4, #0
mul42_1:
push acc
mov a, r2
rrc a
jnc mul42_2
mov a, r6
add a, r0
mov r6, a
mov a, r7
addc a, r1
mov r7, a
mul42_2:
mov a, r7
rrc a
mov r7, a
mov a, r6
rrc a
mov r6, a
mov a, r5
rrc a
mov r5, a
mov a, r4
rrc a
mov r4, a
mov a, r3
rrc a
mov r3, a
mov a, r2
rrc a
mov r2, a
pop acc
djnz acc, mul42_1
ret
Подпрограмма деления r7r6r5r4/r1r0=r5r4
;delenie 4b/2b=2b
div42:
mov a, #16
dclk_42:
push acc
clr c
mov a, r4
rlc a
mov r4, a
mov a, r5
rlc a
mov r5, a
mov a, r6
rlc a
mov r6, a
mov a, r7
rlc a
mov r7, a
push psw
per1_42:
clr c
mov a, r6
subb a, r0
mov r6, a
mov a, r7
subb a, r1
mov r7, a
jc per2_42
pop psw
per3_42:
inc r4
sjmp per4_42
per2_42:
pop psw
jc per3_42
mov a, r6
add a, r0
mov r6, a
mov a, r7
addc a, r1
mov r7, a
per4_42:
pop acc
djnz acc, dclk_42
ret
7. Методика использования программного обеспечения
Входными переменными в программе являются координаты точки, которую нужно передвинуть, и, соответственно, угол, на который она передвигается. За координату х отвечает переменная new_coord_x, за координату у – new_coord_y. А вот за угол отвечают несколько переменных: если требуется повернуть угол в пределах 90 градусов, то нужно записать константу угла в переменную alpha. Если же угол поворота больше 90 градусов, – к примеру, 110, то нужно записать 1 в переменную chetvg и 20 в alpha. Таким образом, увеличивая на 1 chetvg, мы увеличиваем угол поворота на 90 градусов.
Для корректного выполнения программы необходимо совершить следующие действия:
а) Обнулить область памяти фрейма, откомпилировав и запустив на МК эту программу
org 8100h
mov dph, #9Ch
mov dpl. #00h
m1: mov a, #0
movx @dptr, a
inc dptr
mov a, dph
cjne a, #FFh, m1
б) Рассчитать по формуле (3) местоположение в памяти исходной точки и записать этот адрес в регистр dptr участка программы “Задание точки”, находящейся по адресам 8460h;
в) Откомпилировать программу и запустить её на МК;
г) Открыть инструментальную среду MK-Vision и нажать кнопку “Порт”, которая установит связь между МК и PC;
д) Задать адрес 8400h в поле “Вкл. камеру” и нажать соответствующую кнопку;
е) Задать адрес 8480h в поле “Задать режим” и нажать соответствующую кнопку;
ж) Задать адрес 8460h в поле “Снять кадр” и нажать соответствующую кнопку – с помощью этого действия начальная точка запишется в область памяти фрейма;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.