jkts.net
当前位置:首页 >> 不明白单片机的串口通信的PCON |= 0x80... >>

不明白单片机的串口通信的PCON |= 0x80...

不是每位相与,而是相或。| 是或的符号,0x80也就是1000 0000,pcon 执行或运算 后,肯定是1。

PCON是电源控制及波特率选择寄存器,单元地址是87H 其结构格式如下: PCON电源管理寄存器结构 PCON D7 D6 D5 D4 D3 D2 D1 D0 位符号 SMOD - - - GF1 GF0 PD IDL SMOD是串行口波特率倍增位,当SMOD=1时,串行口波特率加倍。系统复位默认SMOD=0。 ...

//代码来自 单片机小精灵v1.3//波特率9600 11.0592晶振 方式2#include void InitUART(void){ TMOD = 0x20; SCON = 0x50; TH1 = 0xFD; TL1 = TH1; PCON = 0x00; EA = 1; ES = 1; TR1 = 1;}void SendOneByte(unsigned char c){ SBUF = c; while(!T...

PCON一般只有在使用串口时设置,要设置也只设置它的最高位SMOD。SMOD是串口波特率倍增位,设为1串口波特率就加倍,为0就不变。PCON不能位寻址,所以说初值就00H和80H两种。

这种内容,教材或有关单片机的书上都有详细讲解的,看看书就成了。这种事情,也来提问。

TR1 = 0; //无奈的我想关掉一切,但是还是不行 ES = 0; // EA = 0; 上面的语句放在 while 内试试吧

12M晶振不能输出9600的波特率; 12M晶振只能输出1200的波特率,有少量误差,不过不影响使用。 #include #include void Uart0_transmit(unsigned char i) //向串口发送一个字节 { ES=0; TI=0; SBUF=i; // 发送数据到uart0 while (!TI); / 等待发...

#include #include unsigned char ch; bit read_flag= 0 ; void init_serialcom( void ) //串口通信初始设定 { SCON = 0x50 ; //UART为模式1,8位数据,允许接收 TMOD |= 0x20 ; //定时器1为模式2,8位自动重装 PCON |= 0x80 ; //SMOD=1; TH1 = 0...

[image]10 普中 51单片机 串口通讯

这个是stc-isp软件生成的串口初始化函数: void UartInit(void) //115200bps@22.1184MHz { PCON |= 0x80; //使能波特率倍速位SMOD SCON = 0x50; //8位数据,可变波特率 AUXR |= 0x40; //定时器1时钟为Fosc,即1T AUXR &= 0xFE; //串口1选择定时器1...

网站首页 | 网站地图
All rights reserved Powered by www.jkts.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com