датчик к контролеру я подключаю через резистор и диод, я так и раньше подключал такой же датчик, все нормально работает. В програме при инициализации разрешаю внешнее прерывание по int1 CLR RIN LDI rin,1<<ISC10 OUT MCUCR,RIN в п/п просто перехожу на метку М2: cnt_int1:
push rin in rin,sreg ; çàïîìíèòü ðåãèñòð ñîñòîÿíèÿ push rin
rjmp M2 С этой метки у меня начинается рабочий цикл.
В конце цикла ухожу на метку start, где вновь разрешаю прерывание start: clr radr sbr radr,1<<int1 out gicr,radr
ser ind ; cbr reg_flgs,0b00010000 ; stt2: sbrs reg_flgs,4 ; rjmp stt2 ;
ldi radr,dvig_0 ; îòêëþ÷èòü äâèãàòåëü rcall Decod ;
rcall pnev_off ; Îòêëþ÷èì âñå ìåõàíèçìû sei ; stt1: sbrs ind,PROG ; åñëè íàæàòà "ÏÐÎÃ" rcall Obrab_key
пробовал в конце рабочего цикла запретить прерывание по int1, все равно срабатывает при втором замыкании
|