; кварц на 16 мгц ; внутренний делитель отключен ; не работает .include "tn2313adef.inc" ; используем tiny2313a .def Temp=R16 .def Temp1=R17 .def Temp2=R18 .def Temp3=R19 .def Temp4=R20 ; регистр сохранения регистра SREG .def Temp5=R21 .def Temp6=R22 ; флаг .def Temp7=R23 ; .def Temp8=R24 .def Temp9=R25 ;****************************************************************************** ; оперативка ;****************************************************************************** .dseg ; оперативка ch_count: .byte 1 ; номер импульса // 0,1,2 каналы ; если = 3, то это синхроимпульс ; если = 4, то это рассинхронизация или старт МК ;****************************************************************************** ; константы ;****************************************************************************** .EQU Chastota_const=0x9C40 ; вершина ШИМ для серопривода ( частота 50 Гц ) ; 50Гц=0,02сек ; 1 тик таймера = 0,0000005 сек ; 0,02/0,0000005=40000 ( 0x9C40 ) ;****************************************************************************** ; программный сегмент ;****************************************************************************** .cseg .org 0 rjmp RESET ; External Pin, Power-on Reset, Brown-out Reset, and Watchdog Reset .org ICP1addr ; = 0x0003 Timer/Counter1 Capture Event ( прерывание по захвату ) rjmp ICP1_interruption .org INT_VECTORS_SIZE ;****************************************************************************** ; старт *********************************************************************** ;****************************************************************************** reset: ; включение микроконтроллера cli ; глобальный запрет на прерывания ldi Temp,low(RamEnd) ; инициализации стека out SPL,Temp ; ldi Temp,0b11111111 ; настроили порт "В" (0-ввод, 1-вывод) out DDRB,Temp ; ldi Temp,0b00000000 ; выводим лог_0 out PortB,Temp ; ldi Temp,0b00111111 ; настраиваем порт "D" (0-ввод, 1-вывод) out DDRD,Temp ; 0х000000 - вход с приемника (ICP) ldi Temp,0b00000000 ; выводим лог_0 out PortD,Temp ; ; RCALL LCD_INIT ; инициализация дисплея ;****************************************************************************** ; настраиваем таймер_1 ;****************************************************************************** ; ШИМ для сервы ( аппаратный ) ; ICP для измерения длительности импульса. ldi Temp,(0<