[an error occurred while processing this directive]
|
P_CHA, P_CHB - ноги МК, к которым подключены выходы энкодера, причем P_CHA - на внешнее прерывание 1
Extint1:
Push Psw
Push Acc
Mov A,#10
Int1_1:
Jb P_CHA,Int1_0
Djnz A,Int1_1 ;пока не обнулиться счетчик
Sjmp Int1_2 ;ждем установления низкого уровня
Int1_0:
Inc A ;уровень высокий - откат счетчика
Cjne A,#15,Int1_1 ;'ждем слишком долго - выход
Pop Acc
Pop Psw
Reti
Int1_2:
Jb {P_CHB},Int1_3 ;Определим направление вращения
Inc {NcInc} ;Вправо - увеличим счетчик увеличивающих щелчков
Sjmp Int1_4
Int1_3:
Inc {NcDec} ;Вправо - увеличим счетчик уменьшающих щелчков
Int1_4:
Setb {NewNC} ;Ставим бит "Было врашение"
Pop Acc
Pop Psw
Reti
E-mail: info@telesys.ru