Zdar.
Takže to bude na mne. Vkládám ti neúplnou část svého kódu.
Je to jen pro ilustraci.
[code]//**************************************************************************************
//*** DEFINOVÁNÍ PROCESORU ********
//**************************************************************************************
.NOLIST
.INCLUDE “can32def.inc” ;procesot AT90CAN32
.DEVICE AT90CAN32
.LIST
//**************************************************************************************
//*** DEFINICE KONSTANT ********
//**************************************************************************************
.CSEG
.DEF RR=R16 ;IN OUT registr
.EQU SPCNT=0x10 ;Velikost Stacku
//**************************************************************************************
//*** Reservace paměti ********
//**************************************************************************************
.DSEG
.ORG RAMEND-SPCNT ;Na konec paměti
STACK: .BYTE SPCNT ;reservuj paměť pro Stack
.ORG SRAM_START ;A teď klasicky na začátek
BUFR: .BYTE 1
//**************************************************************************************
//*** DEKLARACE REGISTRŮ (takhle si vedu přehled o tom, ktrý registr používám a k čemu) ********
//**************************************************************************************
// R0 -
// R1 -
// R2 -
// R3 -
// R4 -
// R5 -
// R6 -
// R7 -
// R8 -
// R9 -
// R10 -
// R11 -
// R12 - uložiště příkazu pro AD převodník
// R13 - uložiště příkazu pro AD převodník
// R14 - uložiště příkazu pro AD převodník
// R15 - pomocný latch pro blikání LED
// R16 - UNIVERSÁLNÍ REGISTR RR (náhrada za acc 
// R17 - sekundární UNI registr (náhrada za bcc 
// R18 - prozatímní uložiště vstupu z AD převodníku
// R19 - časovač
// R20 - časovač
// R21 - časovač
// R22 -
// R23 -
// R24 - aktuální CANPAGE (0-1) 2 a výše není použita
// R25 -
// R26 -
// R27 -
// R28 -
// R29 -
// R30 - Adresace paměti
// R31 - Adresace paměti
//**************************************************************************************
//*** VEKTORY PŘERUŠENÍ ********
//**************************************************************************************
.CSEG
.ORG 0 ; Vektor resetu
RJMP START
.ORG OC1Aaddr
rjmp INT01
.ORG OC0addr ; vektor č/č 0
RJMP INT00
.ORG OVF0addr
RJMP INT00
//**************************************************************************************
//*** ZAČÁTEK PROGRAMU ********
//**************************************************************************************
.ORG INT_VECTORS_SIZE
//**************************************************************************************
//*** VLOŽENÍ SOUBORŮ ********
//**************************************************************************************
.INCLUDE “MyMacros.asm”
START: // Nastavení portů
HiImps A //Toto jsou má makra z knihovny MyMacros.asm
Totems1 B // Nahraď je tímto:
Totems1 C // clr r16
HiImps D // out DDRA, r16
Totems1 E // out PORTA, r16
HiImps F
HiImps G
//STACK
ldi RR,LOW(RAMEND) ; Nastavení SP - stack point na RAMEND
OUT SPL,RR
ldi RR,HIGH(RAMEND)
OUT SPH,RR
//SPI
ldi RR,(1<<SPE)|(1<<MSTR) ; dělička /8 ;Mastr ; H->L
out SPCR,RR
ldi RR,(1<<SPI2X)
out SPSR,RR
ldi RR,0b00000001
mov r12,RR
ldi RR,0b10100000
mov r13,RR
clr r14
clr r15
inc r15
//Timer0
ldi RR,(5<<CS00)
OUT TCCR0A,RR
LDI RR,(1<<TOIE0)
STS TIMSK0,RR
//Timer1
ldi RR,0x00
sts OCR1AH,RR
ldi RR,0x38
sts OCR1AL,RR
ldi RR,(1<<WGM12)|(2<<CS10)
sts TCCR1B,RR
CLR RR
STS TCNT1H,RR
STS TCNT1L,RR
ldi RR,(1<<OCIE1A)
sts TIMSK1,RR
sei
CCKL: ldi RR,0b00001000 ; Rozviť LED4
… Další kód
rjmp CCKL
INT01: …přerušení
…
reti
INT00: …přerušení
…
reti
[/code]