私はatmega8515のそのようなコードを持っています
.nolist
.include "m8515def.inc"
.list
.equ fCK = 8000000
.equ BAUD = 9600
.equ UBRR_value = (fCK/(BAUD*16))-1
.cseg
.org 0
main:
rcall init_USART
LDI R16, 0xFF
OUT DDRC, R16
rcall USART_recieve
OUT PORTC, R16
LDI R16, 0x00
OUT DDRA, R16
in R16, PINA
OUT PORTC, R16
rcall USART_send
init_USART:
ldi R16, high(UBRR_value)
out UBRRH, R16
ldi R16, low(UBRR_value)
out UBRRL, R16
ldi R16, (1<<RXEN)|(1<<TXEN)|(0<<RXCIE)|(0<<TXCIE)|(0<<UDRIE)
out UCSRB, R16
ldi R16, (1<< URSEL)|(1<<UPM1)|(1<<UPM0)|(1<< UCSZ1)|(1<< UCSZ0)
out UCSRC, R16
ret
USART_send:
out UDR, R16
sending:
sbis UCSRA, TXC
rjmp sending
ret
USART_recieve:
sbis UCSRA, RXC
rjmp USART_recieve
in R16, UDR
ret
このコードをプロテウスで実行すると、次のエラーが循環します
PC=0x0030。[AVR USART] RX パリティ エラー。[U1]
PC=0x0024。[AVR MEMORY] インターフェイスが有効になっていない (SRE=0) 場合の外部メモリ読み取り: [0x0260]。[U1]
PC=0x0000。[AVR MEMORY] インターフェイスが有効になっていない (SRE=0) 間の外部メモリ読み取り: [0x0261]。[U1]
PC=0x0000。[AVR CPU] RET アドレス = 0x0000 [U1]
PC=0x0002。[AVR MEMORY] インターフェイスが有効でない場合 (SRE=0) の外部メモリ書き込み: [0x0261]=01。[U1]
PC=0x0002。[AVR MEMORY] インターフェイスが有効でない場合の外部メモリ書き込み (SRE=0): [0x0260]=00。[U1]**
PC=0x0024。[AVR MEMORY] インターフェイスが有効になっていない (SRE=0) 場合の外部メモリ読み取り: [0x0260]。[U1]**
PC=0x0002。[AVR MEMORY] インターフェイスが有効になっていない (SRE=0) 間の外部メモリ読み取り: [0x0261]。[U1]**
理解を深めるためにプロテウススキーマも含めます