хотелось бы понять его,ибо тяжко очень с пониманием того,что здесь происходит, не имея комментариев к каждой строчке)))
- Код: Выделить всё • Развернуть
- .include "m8def.inc" ;
 .org 0 //
 rjmp RESET
 ; reti ; reti
 ; reti
 ; reti
 .equ DD_MOSI = DDB3
 .equ DD_MISO = DDB4
 .equ DD_SCK = DDB5
 .equ DDR_SPI = DDRB
 RESET:
 ;
 ldi r16,high(RAMEND) ;
 out SPH,r16 ;
 ldi r16,low(RAMEND)
 out SPL,r16
 SPI_MasterInit: //
 
 ldi r17,(1<<DD_MOSI)|(1<<DD_SCK)
 out DDR_SPI,r17
 
 ldi r17,(1<<SPE)|(1<<MSTR)|(1<<SPR0)
 out SPCR,r17
 ret //
 SPI_MasterTransmit:
 
 out SPDR,r16
 Wait_Transmit:
 sbis SPSR,SPIF
 rjmp Wait_Transmit
 
 ret
 SPI_SlaveInit:
 
 ldi r17,(1<<DD_MISO)
 out DDR_SPI,r17
 
 ldi r17,(1<<SPE)
 out SPCR,r17
 ret
 SPI_SlaveReceive:
 
 sbis SPSR,SPIF
 rjmp SPI_SlaveReceive
 
 in r16,SPDR
 ret
 timer:
 ldi r18,9
 loop: ; prescaler Fosc/1
 ldi r16, (0<<ICNC1 | 0<<ICES1 | 0<<WGM13 | 0<<WGM12 | 0<<CS12 | 0<<CS11 | 1<<CS10)
 ; == ldi r16, 0x07 ; == 00000100b
 out TCCR1B, r16
 ldi r16, (0<<COM1A1 | 0<<COM1A0 | 0<<COM1B1 | 0<<COM1B0 | 0<<FOC1A | 0<<FOC1B | 0<<WGM11 | 0<<WGM10)
 ; == ldi r16, 0x00
 out TCCR1A, r16
 in r16, TIMSK
 ori r16,1<<TOIE1 ; == 0000 0100 == 7
 ; andi r16,~(1<<TOIE1) ; == 1111 1011 == 0xFB
 out TIMSK, r16
 dec r18
 breq SPI_MasterInit
 rjmp loop




 . За вас никто из нас курсовик не напишет, но помочь мы можем. Нужно только чтобы вы дело делали, а тут задавали конкретные вопросы. Первое, что от вас нужно - это кратко сформулировать, что от вас требуется. Программа пишется под конкретное железо - значит надо привести схему вашей железки. Начнете делать - вопросов будет много. Только не спрашивайте КАК делать. На такой вопрос нельзя ответить кратко. Спрашивайте лучше: могу так сделать, могу эдак. Как лучше?
 . За вас никто из нас курсовик не напишет, но помочь мы можем. Нужно только чтобы вы дело делали, а тут задавали конкретные вопросы. Первое, что от вас нужно - это кратко сформулировать, что от вас требуется. Программа пишется под конкретное железо - значит надо привести схему вашей железки. Начнете делать - вопросов будет много. Только не спрашивайте КАК делать. На такой вопрос нельзя ответить кратко. Спрашивайте лучше: могу так сделать, могу эдак. Как лучше?