您好我一直在尝试使用 Atmel studio 6.1 和 ATMEGA32 单片机实现串行通信。我阅读了数据表和帖子: ATMEGA32 UART Communication
我想我或多或少地知道它应该如何设置,但我无法做到。我将 URSEL 的值设置为 1 以便写入它,但是当我运行模拟时,它似乎没有写入它,当我向它写入 0 并写入 UBRRH 时,我可以看到 UCSRC 和UBRRH 写入相同的值。
这是代码的副本...
jmp RESET
RESET:
ldi r16, $12
out UCSRA, r16
ldi r17, $00
ldi r16, $47
out UBRRL, r16
out UBRRH, r17
; Enable receiver and transmitter
ldi r16, (1<<RXEN) | (1<<TXEN)
out UCSRB, r16
; Set frame format: 8 data, 1 stop bit
ldi r16, (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1)
out UCSRC, r16
ldi r16, $80
ldi r17, (0<<URSEL)
out UBRRH, r17
loop:
ldi r16, $41
jmp TX
TX:
sbis UCSRA, UDRE
rjmp TX
;move data to the buffer
out UDR, r16
jmp loop
谢谢您的帮助!