起初我没有设置PCON |= 0x80; CKCON |= 0x10;
TH1 = 256 - SYSCLK / UART0BAUDTATE / 32 / 12;
后来设置了PCON |= 0x80; CKCON |= 0x10;
TH1 = 256 - SYSCLK / UART0BAUDTATE / 16;
按照数据手册上说的:
当定时器1被选为波特率源时,SMOD位(PCON.7)选择是否将定时器溢出率除以2。复位后SMOD位为逻辑0,因此缺省情况下选择低速波特率;
定时器1溢出率由系统时钟源(T1CLK)和重载值(TH1)决定。T1CLK的频率可以在SYSCLK、SYSCLK/12和外部振荡源中选择。
也就是说我不设置PCON 和 CKCON时TH1应该等于256 - SYSCLK / UART0BAUDTATE / 32 / 12;
为什么会出现误码呢?
而设置以后TH1的值为256 - SYSCLK / UART0BAUDTATE / 16;就对了呢? | |
|