下面是我的一个程序,想要使用Atmega162进行通讯,但在调试过程中UCSR0C一直没有反映,就是程序无法对其进行设置。不道问题在什么地方。
.include "m162def.inc" .def COM_DATA =r10 .org 0x0000 rjmp RESET .org 0x0080 RESET: ldi r16,high(RAMEND) ;设atmega162堆栈指针 out SPH,r16 ;见器件配置文件"m162def.inc " ldi r16,low(RAMEND) out SPL,r16 ldi r17,0x0 ldi r16,0x5f ;baud rate=4800 (Freq=7.327800) rcall USART0_Init SEND: ldi r16,0x55 rcall USART0_Transmit rjmp send ;串口发送子程序 USART0_Transmit: ;Wait for empty transmit buffer sbis UCSR0A,UDRE0 rjmp USART0_Transmit out UDR0,r16 ret ;串口接收子程序 USART0_Receive: ;Wait for data to be received sbis UCSR0A,RXC0 rjmp USART0_Receive ;get an d return received data from buffer in r16,UDR0 ret ;串口初始化 USART0_Init: ;set baud rate out UBRR0H,r17 out UBRR0L,r16 ;enable Receiver and Transmitter ldi r16,(1<<RXEN0)|(1<<TXEN0) OUT UCSR0B,r16 ;Set frame format:8data,1stop bit ldi r16,(1<<URSEL0)|(1<<UCSZ1)|(1<<UCSZ0) ;Frame=8,n,1 ;out UCSR0C,r16 ;访问UCSR0C方法一 out 0x20,r16 ;访问UCSR0C方法二 ret
上面的USART0_Init子程序中,对UCSR0C的两种访问,在Studio中都没有反映, 除此之外,我在gcc中调试的情况一样,不知道是我使用有问题,还中162自身有什么我还不清楚的地方,请各位大虾帮一把。
|