当前位置: 首页 > news >正文

微网站设置爱企业查询

微网站设置,爱企业查询,推广小说赚钱平台,创意网页设计题库串口工作方式 方式0方式0输出方式0输入 方式1方式1输出方式1输入 方式2或方式3输出输入 串口使用方法如何计算波特率串口初始化步骤串口回传实验模拟printf实验串口接收数据不丢失实验 方式0 方式 0 时#xff0c;串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输 入… 串口工作方式 方式0方式0输出方式0输入 方式1方式1输出方式1输入 方式2或方式3输出输入 串口使用方法如何计算波特率串口初始化步骤串口回传实验模拟printf实验串口接收数据不丢失实验 方式0 方式 0 时串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输 入或输出口。 数据由 RXDP3.0引脚输入或输出同步移位脉冲由 TXDP3.1 引脚输出。发送和接收均为 8 位数据低位在先高位在后。波特率固定为 fosc/12 方式0输出 方式0输入 方式1 方式 1 是 10 位数据的异步通信口。TXD 为数据发送引脚RXD 为数据接收引 脚传送一帧数据的格式如下所示。其中 1 位起始位8 位数据位1 位停止位。 方式1输出 方式1输入 用软件置 REN 为 1 时接收器以所选择波特率的 16 倍速率采样 RXD 引脚电 平检测到 RXD 引脚输入电平发生负跳变时则说明起始位有效将其移入输入 移位寄存器并开始接收这一帧信息的其余位。接收过程中数据从输入移位寄 存器右边移入起始位移至输入移位寄存器最左边时控制电路进行最后一次移 位。当 RI0且 SM20或接收到的停止位为 1时将接收到的 9 位数据的前 8 位数据装入接收 SBUF第 9 位停止位进入 RB8并置 RI1向 CPU 请求中断。 方式2或方式3 输出 方式 2 或方式 3 时为 11 位数据的异步通信口。TXD 为数据发送引脚RXD 为 数据接收引脚。 发送开始时先把起始位 0 输出到 TXD 引脚然后发送移位寄存器的输出位 D0到 TXD 引脚。每一个移位脉冲都使输出移位寄存器的各位右移一位并由 TXD 引脚输出。第一次移位时停止位“1”移入输出移位寄存器的第 9 位上 以后每次移位左边都移入 0。当停止位移至输出位时左边其余位全为 0检 测电路检测到这一条件时使控制电路进行最后一次移位并置 TI1向 CPU 请求中断。 输入 接收时数据从右边移入输入移位寄存器在起始位 0 移到最左边时控制 电路进行最后一次移位。当 RI0且 SM20或接收到的第 9 位数据为 1时 接收到的数据装入接收缓冲器 SBUF 和 RB8接收数据的第 9 位置 RI1向 CPU 请求中断。如果条件不满足则数据丢失且不置位 RI继续搜索 RXD 引脚 的负跳变。 串口使用方法 如何计算波特率 256 - TH1 11.0592M/12169600所以TH1TL1250 串口初始化步骤 如何使用串口大家可以按照以下几个步骤配置。 ①确定 T1 的工作方式TMOD 寄存器②确定串口工作方式SCON 寄存器③计算 T1 的初值设定波特率装载 TH1、TL1④启动 T1TCON 中的 TR1 位⑤如果使用中断需开启串口中断控制位IE 寄存器。 串口回传实验 //功能串口回传实验PC通过串口通讯工具发送字符a或字符串helloMCU回复相同内容#include reg52.htypedef unsigned int u16; typedef unsigned char u8; typedef unsigned long u32;//以毫秒为单位的延时 void delay_ms(unsigned int ms){unsigned int i,j;for(ims;i0;i--)for(j123;j0;j--); } //以10微秒为单位的延时 void delay_10us(u16 ten_us) {while(ten_us--); }void Uart1_Init(void); //串口1的初始化void main() {Uart1_Init();while(1) //保持应用程序不退出{} }void Uart1_Init(void)//配置串口为工作方式1定时器1工作方式为28位自重载 {//串口模块寄存器PCON | 0x80; //使能波特率倍速位SMODSCON | 0x50; //配置串口工作方式1允许接收数据//定时器1相关寄存器TMOD 0x0F; //使用定时器1TMOD | 0x20; //配置工作方式28位自重载TL1 0xFA; //设置定时计数器的低8位TH1 0xFA; //设置定时计数器的高8位TR1 1; //开启定时器1//中断相关寄存器ES 1; //串行口中断允许位EA 1; //CPU 中断允许总允许位 }void Uart1_Isp(void) interrupt 4 {u8 u8RecData 0;if(RI) //检测串口接收完成中断{u8RecData SBUF; //将串口模块缓存寄存器中的数据读到用户内存 SBUF u8RecData; //将用户数据传输到串口缓存寄存器中准备发送while(TI0); //用户在等待串口发送单元发送完成RI 0; //用户清除接收数据完成标志TI 0; //用户清除发送数据完成标志} }模拟printf实验 //功能实现printf的输出重定向#include reg52.h #include stdio.htypedef unsigned int u16; typedef unsigned char u8; typedef unsigned long u32;//定义LED的引脚 sbit LED1 P2^0;//以毫秒为单位的延时 void delay_ms(unsigned int ms){unsigned int i,j;for(ims;i0;i--)for(j123;j0;j--); } //以10微秒为单位的延时 void delay_10us(u16 ten_us) {while(ten_us--); }void Uart1_Init(void); //串口1的初始化 void Uart1_SendData(u8 u8data); //串口1的发送数据void main() {u16 i 0;Uart1_Init();while(1) //保持应用程序不退出{i;delay_ms(1000);printf(i %03d,hello world!\r\n,i);} }void Uart1_Init(void)//配置串口为工作方式1定时器1工作方式为28位自重载 {//串口模块寄存器PCON | 0x80; //使能波特率倍速位SMODSCON | 0x50; //配置串口工作方式1允许接收数据//定时器1相关寄存器TMOD 0x0F; //使用定时器1TMOD | 0x20; //配置工作方式28位自重载TL1 0xFA; //设置定时计数器的低8位TH1 0xFA; //设置定时计数器的高8位TR1 1; //开启定时器1//中断相关寄存器ES 1; //串行口中断允许位EA 1; //CPU 中断允许总允许位 }void Uart1_Isp(void) interrupt 4 {u8 u8RecData 0;if(RI) //检测串口接收完成中断{u8RecData SBUF; //将串口模块缓存寄存器中的数据读到用户内存 switch(u8RecData){case 0x10: LED1 1;break;case 0x11: LED1 0;break;default:break;}RI 0; //用户清除接收数据完成标志} }char putchar (char dat) //标准C的输出重定向 {Uart1_SendData(dat);return dat; }void Uart1_SendData(u8 u8data) {SBUF u8data; //串口输出单元开始工作while(TI 0) //等TI为高电平输出完成{}TI 0; //清除发送标志 }串口接收数据不丢失实验 //功能串口接收长字符50以内不丢失数据通过printf发送给PC#include reg52.h #include stdio.htypedef unsigned int u16; typedef unsigned char u8; typedef unsigned long u32;u8 u8Uart_Buffer[50]{0}; //串口缓存池 u8 u8Uart_Rx_STA 0; //串口接收状态标志 //bit7 0:表示没有接收完成 1反之 //bit6 0:表示没有接收到\r, 1反之 //bit5--bit0 表示接收到的有效数据长度//以毫秒为单位的延时 void delay_ms(unsigned int ms){unsigned int i,j;for(ims;i0;i--)for(j123;j0;j--); } //以10微秒为单位的延时 void delay_10us(u16 ten_us) {while(ten_us--); }void Uart1_Init(void); //串口1的初始化 void Uart1_SendData(u8 u8data); //串口1的发送数据 void Uart1_RecvData(void);void main() {u8 len 0;Uart1_Init();while(1) //保持应用程序不退出{if(u8Uart_Rx_STA 0x80) //串口数据接收完成{len u8Uart_Rx_STA 0x3f;u8Uart_Buffer[len] 0;printf(%s\r\n,u8Uart_Buffer);u8Uart_Rx_STA 0; //清除状态标志}} }void Uart1_Init(void)//配置串口为工作方式1定时器1工作方式为28位自重载 {//串口模块寄存器PCON | 0x80; //使能波特率倍速位SMODSCON | 0x50; //配置串口工作方式1允许接收数据//定时器1相关寄存器TMOD 0x0F; //使用定时器1TMOD | 0x20; //配置工作方式28位自重载TL1 0xFA; //设置定时计数器的低8位TH1 0xFA; //设置定时计数器的高8位TR1 1; //开启定时器1//中断相关寄存器ES 1; //串行口中断允许位EA 1; //CPU 中断允许总允许位 }void Uart1_Isp(void) interrupt 4 {u8 u8RecData 0;if(RI) //检测串口接收完成中断{Uart1_RecvData();RI 0; //用户清除接收数据完成标志} }char putchar (char dat) //标准C的输出重定向 {Uart1_SendData(dat);return dat; }void Uart1_SendData(u8 u8data) {SBUF u8data; //串口输出单元开始工作while(!TI); //等TI为高电平输出完成TI 0; //清除发送标志 }void Uart1_RecvData(void) {u8 r SBUF;if((u8Uart_Rx_STA 0x80) 0)//没有接收完成{if(u8Uart_Rx_STA 0x40){if(r!\n){u8Uart_Rx_STA 0; //将状态清0}else{u8Uart_Rx_STA | 0x80; //标记数据接收完成}}else //还没有接收过\r{if(r \r){u8Uart_Rx_STA | 0x40; //标记数据接收到\r}else{if((u8Uart_Rx_STA 0x3f)48){u8Uart_Buffer[u8Uart_Rx_STA] r;}else{u8Uart_Rx_STA 0;}}}} }
http://www.sczhlp.com/news/237761/

相关文章:

  • 网站建设合同怎么写大伙房水库输水工程建设局网站
  • 做网站使用什么软件的免费咨询师心理医生
  • gdb调试常用命令
  • 为什么大型网站能“秒回”你的用户名?揭秘毫秒级响应背后的“守门人”艺术
  • 文件同步备份:为什么说“同步盘”是比“普通网盘”更高效、更安全的选择?
  • 基于C#的停车场管理系统实现
  • 广州工程建设信息网站.网站链接策略
  • 国内企业网站模板做网站的费用是多少
  • 秦皇岛庆云网站建设廊坊永清网站建设
  • 青岛推广网站四川建设安全监督管理局网站
  • 成品短视频网站源码搭建免费温州 网站建设公司
  • 哪些网站是动态的网站建设以及seo
  • 外贸网站如何推广优化自己做h5网站
  • 个人主页图网站seo案例
  • 手机网站建设效果虚拟专用网络
  • 教育网站 php网站建设费用摊销多少年
  • 廊坊网站网站建设重庆的公司
  • 怎么用视频做网站首页绿派网站建设
  • 上饶做网站建设微小店网站建设费用
  • 陆川建设局网站wordpress做小程序商城
  • 专门教人做点心的网站网络经营范围包括哪些
  • 诸城网站做的好的网站上传视频怎么做
  • 想在意大利做购物网站企业网站需求文档
  • 木门行业网站该怎么做wordpress 优化
  • 垂直网站怎么做长泰建设局网站
  • 网站建设基本步骤包括哪些无锡手机网站建设方案
  • h5做的网站建设一个网站需要哪方面的费用
  • 网站建设好与管理在哪就业机械加工信息
  • 柳州网站建设哪里有做企业网站的流程
  • 南京制作公司网站做淘宝客网站要不要备案