.include "m8def.inc" .def Temp0=R16 .def Temp1=R17 .def Temp2=R18 .def Temp3=R19 .def Temp4=R20 .def Temp5=R21 .def Temp6=R22 .dseg .cseg .org 0 rjmp RESET ; Reset Handler reti ;rjmp EXT_INT0 ; IRQ0 Handler reti ;rjmp EXT_INT1 ; IRQ1 Handler reti ;rjmp TIM2_COMP ; Timer2 Compare Handler reti ;rjmp TIM2_OVF ; Timer2 Overflow Handler reti ;rjmp TIM1_CAPT ; Timer1 Capture Handler reti ;rjmp TIM1_COMPA ; Timer1 CompareA Handler reti ;rjmp TIM1_COMPB ; Timer1 CompareB Handler reti ;rjmp TIM1_OVF ; Timer1 Overflow Handler reti ;rjmp TIM0_OVF ; Timer0 Overflow Handler rjmp SPI_STC ; SPI Transfer Complete Handler reti ;rjmp USART_RXC ; USART RX Complete Handler reti ;rjmp USART_UDRE ; UDR Empty Handler reti ;rjmp USART_TXC ; USART TX Complete Handler reti ;rjmp ADC_CC ; ADC Conversion Complete Handler reti ;rjmp EE_RDY ; EEPROM Ready Handler reti ;rjmp ANA_COMP ; Analog Comparator Handler reti ;rjmp TWSI ; Two-wire Serial Interface Handler reti ;rjmp SPM_RDY ; Store Program Memory Ready Handler RESET: ldi Temp0,high(RAMEND) out SPH,Temp0 ldi Temp0,low(RAMEND) out SPL,Temp0 ldi Temp0,0b00101100 ; 2-SS(CS), 3-MOSI(SDI), 4-MISO(SDO)вход, 5-SCK(SCL) out DDRB,Temp0 sbi PORTB, 2 // Вывод SS на +5 sbi PORTB, 4 // На MISO подключаем подтягивающий резистор ldi temp0, 0b11010001 // Настраиваем SPI, SPIE и SPE = 1 это разрешит прерывания и протокол; out SPCR, temp0 // MSTR = 1 говорит что мы руководим посылкой, SPR = 01 предделитель SPI sei cycle: rjmp cycle SPI_STC: cli sbis SPSR, SPIF rjmp SPI_STC sei reti