1

私は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]**

理解を深めるためにプロテウススキーマも含めます プロテウス_スキーマ

4

1 に答える 1