怎么给网站的照片做超级链接,柚子皮wordpress,新网站建设特色,廊坊兼职网站建设一、功能实现
1.电脑通过串口发送数据#xff1a;0F 2.点亮4个LED 二、注意事项
1.发送和接受数据的文本模式 2.串口要对应
3.注意串口的波特率要和程序中的波特率保持一致
4.有无校验位和停止位
三、如何使用串口波特率计算器
1.以本程序为例 2.生成代码如下
void Uar…一、功能实现
1.电脑通过串口发送数据0F 2.点亮4个LED 二、注意事项
1.发送和接受数据的文本模式 2.串口要对应
3.注意串口的波特率要和程序中的波特率保持一致
4.有无校验位和停止位
三、如何使用串口波特率计算器
1.以本程序为例 2.生成代码如下
void Uart1_Init(void) //9600bps11.0592MHz
{SCON 0x50; //8位数据,可变波特率AUXR | 0x40; //定时器时钟1T模式AUXR 0xFE; //串口1选择定时器1为波特率发生器TMOD 0x0F; //设置定时器模式TL1 0xE0; //设置定时初始值TH1 0xFE; //设置定时初始值ET1 0; //禁止定时器中断TR1 1; //定时器1开始计时
}3.需要手动配置中断系统
根据原理图 配置代码 //手动配置中断系统ES1;EA1;PS0; 四、如何理解软件生成的波特率
void UART_Init()
{//由软件自动生成SCON0x50; //STC89C52操作手册P235方式1PCON 0x7F; //波特率不倍速TMOD 0x0F; //设置定时器1模式TMOD | 0x20; //设置定时器1模式TL1 0xFA; //设置定时初始值TH1 0xFA; //设置定时重载值ET1 0; //禁止定时器中断TR1 1; //定时器1开始计时//需要手动配置中断系统ES1;EA1;PS0;
}
以上述代码为例子进行分析 由于配置是8位自动重载TL1TH10xFA ,0xFA250; 总计八位那么数据范围0~255(256溢出) 256-2506 那么每计6个数溢出一次 晶体振荡器的输出经12 分频后得到输入的时钟脉冲 一个机器周期内有12 个振荡周期。故其频率为晶振频率的1/12。 此设备是11.0592M 的晶振1.085μs为一个输入脉冲的时间 则6.51μs溢出一次 1/6.51则0.1536098MHz就是定时器的溢出率 再看PCON0111 1111 可知SMOD0(参考串口模式图) 那么波特率0.1536098MHz /2 /16 波特率为0.00480030625MHz约等于4800Hz 约等于没有误差
串口模式图 五、如何计算波特率
参考STC89C52手册P235 六、串口中断函数
中断函数函数可自由命名但是要加上中断号interrupt 4
void UART_Routine(void) interrupt 4
{if (TI1) //检测串口1发送中断{//功能......TI 0; //清除串口1发送中断请求位}if (RI1) //检测串口1接收中断{//功能......RI 0; //清除串口1接收中断请求位}
}
中断函数查询表P166 七、模块化代码
1.main.c
#include REGX52.H
#include UART.hunsigned char Sec0;void main()
{UART_Init();while(1){}}/*** brief 中断函数查询P166函数命名可自由但是要更上中断号interrupt 4* param 无* retval 无*/
void UART_Routine(void) interrupt 4
{if(RI1){P2~SBUF;RI0;}
}
2.UART.c
#include REGX52.H/*** brief 串口初始化//4800bps11.0592MHz* param 无* retval 无*/void UART_Init()
{SCON0x50; //STC89C52操作手册P235方式1PCON 0x7F; //波特率不倍速TMOD 0x0F; //设置定时器1模式TMOD | 0x20; //设置定时器1模式TL1 0xFA; //设置定时初始值TH1 0xFA; //设置定时重载值ET1 0; //禁止定时器中断TR1 1; //定时器1开始计时//补上中断系统ES1;EA1;PS0;
}/*** brief 串口发送一个字节的数据* param Byte 要发送的一个字节数据* retval 无*/void UART_SendByte(unsigned char Byte)
{SBUFByte;while(TI0); //TI0数据完整发送出去TI1,跳出循环TI0; //TI0使用软件复位}
3.UART.h
#ifndef __UART_H__
#define __UART_H__void UART_Init();void UART_SendByte(unsigned char Byte);#endif