Вращение бинарного изображения вокруг своей оси на произвольный угол. Освоение предметной области ВИСУ на примере практической задачи работы с визуальными сценами, страница 9

; адрес устройства для записи в регистры

lcall send_byte

lcall rec_ack   ; прием ACK бита от камеры

; посылка адреса регистра

mov a,reg_adr

lcall send_byte

lcall rec_ack   ; прием ACK бита от камеры

; посылка значения регистра

mov a,reg_val

lcall send_byte

lcall rec_ack   ; прием ACK бита от камеры

lcall stop                     ; окончание обмена

lcall delay                   ; необходима задержка между повторными обращениями

ret

; процедура чтения значения регистра камеры

rd_proc:   

lcall start                    ; начало обмена по шине

; посылка адреса устройства

mov a,#c0h     ; c0h - назначенный камере по умолчанию

; адрес устройства для записи в регистры.

lcall send_byte           ; двухбайтовая операция записи

lcall rec_ack   ; необходима для сообщения камере

mov a,reg_adr ; адреса регистра, который требуется считать

lcall send_byte           ; при выполнении операции чтения

lcall rec_ack

lcall stop                     ; старт/стоп процедура

lcall delay

lcall start

mov a,#c1h     ; c1h - назначенный камере по умолчанию

; адрес устройства для чтения  регистров

lcall send_byte

lcall rec_ack   ; прием ACK бита от камеры

lcall rec_byte  ; прием значения регистра

mov reg_val,a ; принятое значение из аккумулятора записываем в reg_val

setb c

lcall send_bit  ; подтверждение приема значения регистра камере

lcall stop                     ; процедура остановки

lcall delay                   ; задержка между повторными обращениями к камере

ret

set_up:      clr p3.4                       ; снимаем RST

clr p3.5                       ; снимаем PWDN

lcall delay

lcall delay

setb p1.5                     ; устанавливаем высокий уровень

setb p1.6                     ; на линиях шины I2C

ret

; процедура start - начало обмена по шине I2C

start:        

clr p1.5

lcall del_s

clr p1.6

lcall del_s

ret

; процедура stop - окончание обмена по шине I2C

stop:          clr p1.5

lcall del_s

setb p1.6

lcall del_s

setb p1.5

ret

; посылка бита по шине I2C

send_bit:  

mov p1.5,c

lcall del_s

setb p1.6

lcall del_s

clr p1.6

lcall del_s

ret

; прием бита по шине I2C

rec_bit:     setb p1.6

lcall del_s

mov c,p1.5

lcall del_s

clr p1.6

lcall del_s

ret

; прием бита ACK

rec_ack:    setb p1.5

setb p1.6

lcall del_s

mov c,p1.5

clr p1.6

lcall del_s

ret

; процедура посылки байта на шину I2C

send_byte:

push 0

mov r0,#8

$cycle:      rlc a

lcall send_bit

djnz r0,$cycle

pop 0

ret

; процедура приема байта по шине I2C

rec_byte:

push 0

mov r0,#8

clr a

$cycle:      lcall rec_bit

rlc a

djnz r0,$cycle

pop 0

ret

; процедура задержки

delay:        push 0

push 1

mov r0,#5

$dly1:       mov r1,#0

djnz r1,$

djnz r0,$dly1

pop 1

pop 0

ret

del_s:        push 0

mov r0,#5

djnz r0,$

pop 0

ret

файл upl_inc.asm

xptr:          equ 50h

yptr:          equ 51h

upload:     mov dptr,#frame

mov yptr,#144

cycle0:      mov xptr,#176

cycle1:      jnb ri,$

mov a,sbuf

clr ri

movx a,@dptr

inc dptr

jnb ti,$

mov sbuf,a

clr ti

djnz xptr,cycle1

djnz yptr,cycle0

ret

файл cap_inc.asm

v_data:      equ 31h

strt:           equ 7eh

capture:    clr p3.4

clr p3.5

ccl2:          jnb p3.3,ccl2

setb it1            ; настройка прерываний INT1 (VSYN) срезом

mov dptr,#frame        ; адрес начала кадра

setb strt          

setb ex1                      ; разрешение прерываний по VSYN

setb p3.3

setb ea

jb ex1,$                      ; ожидаем завершения съемки кадра

clr ea

clr it1

mov 60h,dph

mov 61h,dpl

ret

org 8013h                   ;обработчик VSYN

jbc strt,ok                   ;для попадания на начало следующего кадра

clr b8h.5                     ;в случае, если запуск программы пришеля на время передачи кадра

clr ex1

sjmp exit

ok: setb b8h.5                   ; разрешение прерываний по PCLK

exit:          reti

org 806bh                   ; обработчик PCLK  

mov v_data,e8h

mov a,v_data

movx @dptr,a

inc dptr

reti