Собственно вопрос в теме)Был бы пример простой программы в proteus -сам бы разобрался.Два контроллера mega48 передатчик и приемник,две программы для них - неделю мучаюсь

)
Нету даже прерывания
передатчик:
.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\m48def.inc"
.list
.nolist
.list
.equ XTAL = 8000000
.equ baudrate = 9600
.equ bauddivider = XTAL/(16*baudrate)-1
;
.def temp =r16;
.def delay =r17;
.def delay1 =r18;
.def delay2 =r19;
.def delay3=r20;
.org 0x000
rjmp unit;
.org 0x0014
rjmp txc; настраиваем прерывание TXC на передачу
unit :
ldi temp,0b11111110;
out DDRD,temp;
LDI R16, 0x51; скороcсть 9600
sts UBRR0L,R16
ldi temp,0b11011000;(rxcie0<<1) |(txcie0<<1)|(rxeb0<<1) прерывание по передачи
sts UCSR0a, temp;
ldi temp,0b00000110; (ucsz01<<1) | (ucsz00<<1) 8битное слово
sts UCSR0c, temp;
sei
start:
inc temp;
ldi delay1,0x05; просто задержка
ldi delay3,0x05;
;задерка
loop4:
subi delay3,1;
sbci delay1,0;
brcc loop4;rjmp start;
txc:
ldi temp,UCSR0A; почемуто sbis UCSR0A,5 неработает(
sbrs temp,5;
RJMP txc ;
sts udr0,temp;
reti
приемник:
;
.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\m48def.inc"
.list
.nolist
.list
.equ XTAL = 8000000
.equ baudrate = 9600
.equ bauddivider = XTAL/(16*baudrate)-1
;
.def temp =r16;
.org 0x000
rjmp unit;
.org 0x0012
rjmp RXC; настраиваем прерывание RXC на прием
unit :
ldi temp,0b11111111;
out DDRB,temp;
ldi temp,0b11111101;
out DDRD,temp;
LDI R16, 0x51; скороcсть 9600
sts UBRR0L,R16
ldi temp,0b11011000;(rxcie0<<1) |(txcie0<<1)|(rxeb0<<1) прерывание по приему
sts UCSR0a, temp;
ldi temp,0b00000110; (ucsz01<<1) | (ucsz00<<1) 8битное слово
sei
clr temp;
start:
out portB,temp;
rjmp start;
RXC:
lds temp,udr0;
reti
зачем это пишется? это на чтонибудь влияет?
.equ XTAL = 8000000
.equ baudrate = 9600
.equ bauddivider = XTAL/(16*baudrate)-1