;Начинает преобразование ADC по внешнему прерыванию 1 ;по окончании преобразования результат пересылается через UART ; .include "8535def.inc" .def status=r0 .def led1=r16 .def led2=r17 .def led3=r18 .def led4=r19 .def temp=r20 .def cnt1=r21 .def cnt2=r22 ;****************************************************************** .org 0 rjmp reset ;RESET handler reti ; .org INT1addr ;External Interrupt1 handler rjmp intr1 ; reti ; .org ADCCaddr rjmp adcint ; reti ; intr1: in status, SREG ; cli ;global interrupt disable ldi led1, $04 ; out PORTC, led1 ; ldi led2, $00 ; ldi led3, $00 ; ldi temp, 0b11001110; out ADCSR, temp ; sei ; out SREG, status ; reti adcint: in status, SREG ; cli ; in led2, ADCL ; in led3, ADCH ; out PORTC, led2 ; out UDR, led2 ; out UDR, led3 ; sei ; out SREG, status ; reti reset: ldi led1,low(RAMEND) ;$DF out SPL,led1 ldi led1,high(RAMEND) ;$DF out SPH,led1 ldi led1,$FF out DDRC,led1 ; set portb as outputs ldi led1,$00 out DDRA,led1 ; set portA as inputs for ADC ldi temp, 0b10000000; out GIMSK, temp ;external int1 enable ldi temp, 0b00000000;int1 on falling edge out MCUCR, temp ; ldi temp, 51 ;configure baud rate 9600 out UBRR, temp ; ldi temp, 0b10011000;configure UART out UCR, temp ; ldi temp, 0b00000010; out DDRD, temp ;configure PORTD ldi temp, 0b00000111; out ADMUX, temp ; sei ; loop: rjmp loop ; ret