[an error occurred while processing this directive]
╙ ьхэ  с√ыю яЁшьхЁэю Єръ... (Єюы№ъю схч тюяЁюёют - єцх эх яюьэ■)
(л╥хыхёшёЄхь√╗: ╩юэЇхЁхэЎш  л╠шъЁюъюэЄЁюыыхЁ√ ш шї яЁшьхэхэшх╗)

ьшэшрЄ■Ёэ√щ рєфшю-тшфхюЁхъюЁфхЁ mAVR

╬ЄяЁртыхэю CE 25 ёхэЄ сЁ  2002 у. 17:56
┬ юЄтхЄ эр: ╬ЄтхЄ: юЄяЁртыхэю dimapp 24 ёхэЄ сЁ  2002 у. 10:52


delay
transm movlw 12 ; "movlw Timer05T-12"
subwf Timer05T,W ; передача в компьютер ( до 05T-200uS )
subwf TMR0,W ; с нечувствительностью 0..(0.5T-200uS)
btfsc STATUS,C
jmp contdly ; время вышло
btfss Flags,ToTransm
jmp transm ; нечего передавать
btfsc Flags,MyBUSY ; Уже идет своя передача ?
jmp Sendata ; Да - передача дальше
btfsc Flags,OldBusy ; Стоит флажок занятости в этом так
jmp transm ; Да - ждем время
btfsc ctrport,BUSY ; Нет - проверить занято-ли
jmp TX2PC ; Свободно - передача
bsf Flags,OldBusy ; Занято - ждать освобождения
jmp transm ; в следующем такте
TX2PC movlw INITB ; T=
tris ctrport
bcf ctrport,BUSY ; поставить занятость
movlw SENDA
tris DatPort ; Подготовить на вывод
bsf Flags,MyBUSY ; признак своего
movlw Out3
movwf FSR
sendata movf INDF,W
call Xmtr
decf FSR ; переместить указатель
movlw Numb-1 ; запредельный адрес
xorwf FSR,W
btfss STATUS,Z ; достигли его?
jmp transm ; нет - продолжим передачу
movlw HIGHA ; закончили - линии в Z состояние
tris Datport
bcf Flags,ToTransm ; все вывели - нет на передачу
bcf Flags,MyBUSY ; все вывели очистить признак своего
movlw INITB | BUSYB ; освободить BUSY
tris ctrport
jmp transm ; очередная проверка времени
;
contdly clrf BX ; счетчик значений входных бит
bcf Flags,PrevBit ; и нечуствительность в течении 0.4Т
btfsc ctrport,RXIN
bsf Flags,PrevBit ; текущее состояние ввода
chktmr movlw 12 ; "movlw Timer05T+12"
addwf Timer05T,W ; таймер на (0.5T+200uS) с пров
subwf TMR0,W ; на изменение входного сигнала
btfsc STATUS,C
jmp nochng ; время вышло
btfsc Flags,PrevBit
jmp dch10
dch01 btfss ctrport,RXIN ; изменение с 0 в 1
jmp chktmr
jmp dchange
dch10 btfsc ctrport,RXIN ; изменение с 1 в 0
jmp chktmr
dchange movf Timer05T,W ; есть изменение, задержка 0.5Т
movwf TMR0 ; с нечуствительностью к входу 0.25T
nochng movf Timer02T,W ; нечувств. ..0.75T
subwf TMR0,W
btfss STATUS,C
jmp nochng
enddly movf TMR0,W ; последняя задержка 0.25Т с накопле
btfsc STATUS,Z ; входных бит и проверкой на большее
jmp exitdly ; время вышло - выход
btfsc ctrport,INV ; Инверсный приемник?
jmp posdata
btfss ctrport,RXIN ; Инверсный
incf BX ; для 0 - увелич. счетчик
btfsc ctrport,RXIN
decf BX ; для 1 - уменьш. счетчик
jmp alldata
posdata btfss ctrport,RXIN ; Прямой
decf BX ; для 0 - уменьш. счетчик
btfsc ctrport,RXIN
incf BX ; для 1 - увелич. счетчик
alldata movlw 80h ; установить CF в соответствии со входом
addwf BX,W
jmp enddly
exitdly movf Timer10T,W
movwf TMR0 ; запуск таймера на новый такт
bcf Flags,OldBusy ; предположить освобождение линии
retlw 0


╤юёЄртшЄ№ юЄтхЄ  |||  ╩юэЇхЁхэЎш   |||  └Ёїшт

╬ЄтхЄ√



╧хЁхщЄш ъ ёяшёъє юЄтхЄют  |||  ╩юэЇхЁхэЎш   |||  └Ёїшт  |||  ├ыртэр  ёЄЁрэшЎр  |||  ╤юфхЁцрэшх  |||  ┴хч ърфЁр

E-mail: info@telesys.ru