Есть конечно. Вот она
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено 14 декабря 2004 г. 17:18
В ответ на: Некрасиво без форматирования:( А как тут табуляцию задействовать? Или в shtml ее нет? отправлено POV 14 декабря 2004 г. 16:03

;---------------------------------------------------------------------
; головная функция чтения и обработки состояний всех датчиков
read_sensors:
mov count0,#14
rs00: mov a,count0
mov dptr,#tbportsbit
movc a,@a+dptr
lcall read_bit
mov a,count0
lcall save_bit
djnz count0,rs00
ret

; сохранение в памяти состояния бита (1...32) с учетом признака защелки
save_bit:
mov _carry,c
dec a
push acc

mov b,#8
div ab
add a,#_port
mov r0,a
inc b
mov count0,b

pop acc
mov a,_trigger
mov b,#8
div ab
add a,#_trigger
mov r1,a
mov a,@r1
mov b,a ; флаг защелки

clr a
mov c,_carry

sv00: rlc a ; перемещение состояния датчика
xch a,b
rr a ; перемещение флага триггера
xch a,b
clr c ; чтобы в состояние датчика ничего лишнего не попало
djnz count0,sv00

jnb b.7,sv01
jnz sv01 ; устанока в состояние 1
ret ; упали в 0, так что никакой реакции
; просто делаем текущее состояние
sv01: push acc
cpl a
anl a,@r0
mov @r0,a
pop acc
orl a,@r0
mov r0,a
ret

; чтение бита порта (Но! - номера 1...32) с заданным в acc номером
read_bit:
dec a ; т.к. вход 1...32, а надо 0...31
mov b,#8
div ab
inc b ; остаток 1...8
jz rd00
dec a
jz rd01
dec a
jz rd02
dec a
jc rd03
clr c ; неверный номер бита
ret
rd00: ; обращение к p0
mov a,p0
rrc a
djnz b,$-1
ret
rd01: ; обращение к p1
mov a,p1
rrc a
djnz b,$-1
ret
rd02: ; обращение к p2
mov a,p2
rrc a
djnz b,$-1
ret
rd03: ; обращение к p3
mov a,p3
rrc a
djnz b,$-1
ret

; таблица пинов (1...32)
tbportsbit: db 0, s1, s2, s3, s4, s5, s6, s7 ; и т.д. до s32



Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru