串行通信UART和PROTEUS仿真设计
C51 跟atmega64 的串行通信。
相关理论知识这里就不多说,只提几个:
51 的UART 所用的几个寄存器
SCON:SM0 SM1 SM2 REN RB8 TX8 RI TI
PCON: SMOD -- -- -- --- ---PD IDLE
T2CON: TF2 EXF2 RCLK TCLK EXEN2 TR2 C/_T CP/_RL2
TH2,TL2
波特率为9600bps
avr:atmega64 的USART 的两个
所用到的寄存器
这里用的是uart0,所以初始化时应该设置相关的寄存器有:
UCSR0A:RXC TXC UDRE FE DOR UPE U2X MPCM
UCSR0C :-- UMSEL UPM1 UPM0 USBS UCSZ1 UCSZ0 UCPOL
UBRR0H、UBRR0L、
UCSR0B :RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8
别问我这些都是代表什么含义,不懂自己翻书去。
proteus 仿真如下图:
仿真结果如下图所示:
其中要注意的是:
因为我在仿真中只能选择atmega64 的CKSEL Fuse 中的8MHz,所以在AVR 的程序中初始化波特率是按8MHz 来计算的。
所以仿真归仿真,注意实际中应用。
51 单片机用定时器1 来产生波特率时,看书据说模式2 下,12MHz 时最高。