状态寄存器

PLC:学习笔记(西门子)2

戏子无情 提交于 2020-03-28 13:26:26
传统的工业控制系统:继电器-接触器 PLC(programmable logic controller) PLC特点: 1、plc可靠性高(软件代替复杂线路、抗干扰的CPU、电源采用多级滤波并用集成稳压块稳压、IO采用光电隔离技术) 2、丰富IO口(交流、直流、开关量、模拟量、电压、电流、脉冲、电位、强电、弱电都有相应的IO模块和工业现场的设备) 3、模块化结构(plc辅助触点不受次数的限制,只需考虑输入、输出点个数即可) 4、编程简单(梯形图)、安装简单、设计施工周期短 PLC工作方式:采用循环扫描的工作方式其输入/输出存在响应滞后 PLC基本组成:中央处理单元(大型的多采用冗余系统或三CPU表决式系统)、存储器、输入/输出接口(现场常用输入接口:按钮开关、行程开关、接触器的触点、传感器输出的开关量或模拟量(DAC后输入进plc)输入一般接光电耦合电路和微电脑输入接口电路(输入数据寄存器、选通电路、中断请求电路) 现场常用输出:电磁阀、接触器、继电器、信号灯、电动机等 其电路组成和输入相近:输出接口电路和功率驱动电路(继电器方式输出、晶闸管方式输出、晶体管方式输出)) 4、电源 5、底板和机架 6、PLC的外部设备(编程设备(RS232、RS422)、监控设备、存储设备、输入/输出设备) 7、PLC的通信网络(各厂家均在向标准通信协议靠拢) PLC编程语言:因为厂家和机型不同

进入保护模式

与世无争的帅哥 提交于 2020-03-26 15:04:05
全局描述符   和一个段有关的信息需要 8 个字节来描述,所以称为 段描述符(Segment Descriptor) ,每个段都需要一个描述符。为了存放这些描述符,需要在内存中开辟出一段空间。在这段空间里,所有的描述符都是挨在一起,集中存放的,这就构成一个 描述符表 ,最主要的描述符表是 全局描述符表(Global Descriptor Table,GDT) 。   为了跟踪全局描述符表,处理器内部有一个 48 位的寄存器,称为 全局描述符表寄存器(GDTR) 。该寄存器分为两部分,分别是 32 位的线性地址和 16 位的边界。32 位的处理器具有 32 根地址线,可以访问的地址范围是 0x00000000 到0xFFFFFFFF,共 232字节的内存,即 4GB 内存。所以,GDTR的 32 位线性基地址部分保存的是全局描述符表在内存中的起始线性地址,16 位边界部分保存的是全局描述符表的边界(界限),其在数值上等于表的大小(总字节数)减一。   因为 GDT 的界限是 16 位的,所以,该表最大是 2 16 字节,也就是 65536 字节(64KB)。又因为一个描述符占 8 字节,故最多可以定义 8192 个描述符。   由于在实模式下只能访问 1MB 的内存,故 GDT 通常都定义在 1MB 以下的内存范围中。当然,允许在进入保护模式之后换个位置重新定义 GDT。

关于MAX30100心率的编程

我的梦境 提交于 2020-03-23 07:02:18
  MAX30100是能够读取心率、血氧的传感器,通信方式是通过IIC进行通信。   其工作原理是通过红外led灯照射,能够得到心率的ADC值。       图为MAX30100的寄存器。   可以分为五类,状态寄存器、FIFO、控制寄存器、温度寄存器、ID寄存器。   温度寄存器是读取芯片的温度值,以矫正因为温度而产生的偏差。   ID寄存器是读取芯片的ID号。      重点在于另外三类寄存器。 STATUS寄存器   其中,STATUS寄存器有两个,一个是中断状态寄存器,一个是中断使能寄存器。        例如,当你使能了心率中断,当心率转换结束时,其状态位就会置1。    FIFO寄存器   数据存储在FIFO_DATA寄存器,我们主要去读取他就可以了。其余三个是溢出次数以及读写指针。   DATA存的数据是每次读到的ADC值。每一次会读四次,依次是IR的高低数据、RED的高低数据。       Configured寄存器        Mode寄存器中 SHDN是低功耗控制位、RESET是复位、TEMP_EN是温度检测使能,MODE是模式选择。     SPO2设置寄存器 主要是设置血氧浓度相关的参数的,以及LED_PW的功率。     LED寄存器是设置两颗灯的脉冲时间。 程序编写      首先要对max30100进行初始化配置。 max30100_write

modbus-tcp协议讲解

谁都会走 提交于 2020-03-23 06:18:12
MODBUS功能码简介   代码 中文名称 位操作/字操作 操作数量 01h 读线圈状态 位操作 单个或多个 02h 读离散输入状态(只能读到0或1) 位操作 单个或多个 03h 读保持寄存器(保持寄存器可以通过06h功能写入) 字操作 单个或多个 04h 读输入寄存器(输入寄存器只能读取,不能通过06h功能写入) 字操作 单个或多个 05h 写单个线圈(线圈表示用来控制输出IO控制) 位操作 单个 06h 写单个保持寄存器 字操作 单个 0Fh 写多个线圈 位操作 多个 10h 写多个保持寄存器 字操作 多个 Modbus TCP介绍 示例-通过03功能码读寄存器(从寄存器00开始,读取两个值,读到01寄存器结束) 客户端发送 01 02 00 00 00 06 01 03 00 00 00 02 01 02 00 00 00 06 (固定报文头) 01 02: 客户端发出的检验信息, server端会将这两个字节内容复制到回应的报文第一二位.一般我们会将第一二位进行不停递加,然后根据服务器返回的相应内容, 来验证服务器回应信息的时效性 00 00: 表示tcp/ip 的协议的modbus的协议 00 06: 表示客户端发送的后面带了多少字节. 01 03 00 00 00 02(用户数据) 01: 表示设备地址 03: 表示读保持寄存器功能码 00 00:

20145205 《信息安全系统设计基础》第5周学习总结

喜你入骨 提交于 2020-03-23 03:17:00
教材学习内容总结 程序编码 GCC将源代码转化为可执行代码的步骤: C预处理器——扩展源代码-生成.i文件 编译器——产生两个源代码的汇编代码-——生成.s文件 汇编器——将汇编代码转化成二进制目标代码——生成.o文件 链接器——产生可执行代码文件 机器级代码 1.机器级编程的两种抽象 (1)指令集结构ISA 是机器级程序的格式和行为,定义了处理器状态、指令的格式,以及每条指令对状态的影响。 (2)机器级程序使用的存储器地址是虚拟地址 看上去是一个非常大的字节数组,实际上是将多个硬件存储器和操作系统软件组合起来。 2.几个处理器: 程序计数器(CS:IP) 整数寄存器(AX,BX,CX,DX) 条件码寄存器(OF,SF,ZF,AF,PF,CF) 浮点寄存器 一条机器指令只执行一个非常基本的操作。 程序编码 书上107页的代码,需要用到反汇编器。在Linux系统中,带‘d’命令行标志的程序OBJDUMP可以充当这个角色。 数据格式 数据传送指令的三个变种: movb 传送字节 movw 传送字 movl 传送双字 访问信息 一个IA32中央处理单元(CPU)包含8个存储32位置的寄存器 操作数指示符 立即数 寄存器 存储器 寻址方式 (1)立即数寻址方式 格式:$后加用标准c表示法表示的整数,如 $0xAFF (2)寄存器寻址方式 如%eax,与汇编中学过的AX寄存器类比。 (3

基于51单片机的CAN通讯协议C语言程序

♀尐吖头ヾ 提交于 2020-03-22 09:39:21
//-----------------------函数声明,变量定义-------------------------------------------------------- #include <reg52.h> sbit int0 = P3^2; //-----------------------定义寻址的基址-------------------------------------------------------- #define base_Adr 0x00 //-----------------------定义总线定时寄存器的值-------------------------------------------------------- #define SJA_BTR0 0x00 //该值需要用户根据实际需要的波特率进行计算 #define SJA_BTR1 0x16 //具体计算见文章说明 //-----------------------设置接收报文类型(标示符)-------------------------------------------------------- //该值需要用户根据实际需要重新配置 #define SJA_ACR 0x00 //验收代码寄存器的值 #define SJA_AMR 0x16 //验收屏蔽寄存器的值 //-------

寄存器基本原理介绍(上篇)

╄→гoц情女王★ 提交于 2020-03-20 16:36:01
存储器被划分为多个存储单元,从零开始编号,就像是一条街上的门牌号一样,那么 CPU 要读取这些数据,就像是在这一条街里找这个门牌号一样,先要确定在哪里住。 由此可见,CPU 要相对数据进行读写,必须和芯片进行下面 3 类交互: 存储单元的地址(地址信息) 器件的选择,读或者写命令(控制信息) 读或写的数据(数据信息) 那么,CPU 是如何让将这些新词传输到存储器的芯片中的,这就涉及到一个概念,我们都知道,计算机能够处理的信息都是电信号,也就是高低电平,电信号当然是由导线来传送。在计算机中,由专门连接 CPU 和其他芯片的导线,我们通常称为总线,总线从物理的概念来讲,就是一根根导线的集合。根据传出信息的不同,总线从逻辑上讲主要分为 3 类:地址总线,控制总线以及数据总线。 分析上图,三个基础导线首先 CPU 通过地址线将信息发出,然后通过控制线发出内存读写任务,选中存储器芯片,并命令从中读取数据,最后通过数据线将数据送入 CPU。 接下来,详细介绍一下。 地址总线 现在,我们知道 CPU 是通过地址总线来指定存储单元的,那么可见地址总线上能传递多少不同的信息,就能对多少个存贮单元进行寻址。 现在假设,一个 CPU 有 10 根地址线,一根导线能传递的状态只有两种,一种是高电平,一种是低电平,就是二进制的 0 和 1,那么 10 根导线就是 10 位 2 进制数据,那么 10

【华为云技术分享】如何将90%的代码自动迁移到鲲鹏平台上

荒凉一梦 提交于 2020-03-19 13:25:05
主讲人:华为云云享专家 张老师 大家好,今天要讲的主题是关于软件迁移,这是一个久远的话题,因为但凡牵扯到切换平台、CPU架构的变化,甚至一些语言版本的升级,都可能会面临到软件迁移的问题。今天我们就探讨一下软件移植过程的原理,以及如何进行软件迁移。 在软件移植的过程当中,如何帮助开发者提升效率,如何把华为沉淀下来的软件开发以及移植的经验反馈给开发者,帮助开发者加速软件开发的进度,降低成本,这是我们一直关注的问题,为此,我们还推出了鲲鹏的开发套件,帮助用户做软件的移植,以及做基于鲲鹏平台的性能加速。 其实一提到软件移植,如果是做了比较底层软件的话,大家可能会用到一些 汇编这样的底层语言 。 它和机器的硬件架构强相关 ,当你在从一个平台切换到另外一个平台的时候,这些强相关的语言势必要 进行一次代码移植, 跟我们所采用的编程语言以及移植的平台环境强相关。当我们用汇编代码或者是用这种编译型语言的时候,就会面临着一些移植的问题和挑战,有些问题通过编译器能解决, 有些问题特别是一些低阶的代码或者比较底层的代码, 就要手工去查手册 , 然后去把它相应的转换成新平台所使用的机器码。 上图列出了鲲鹏处理器和x86处理器的指令差异,列了一个简单的两个数相加,两个int型相加的这样一个简单程序。通过GCC编译完之后,通过OMGD,就能看到指令的具体的格式形式以及相应的对应的汇编代码。可以看出

关于单片机中断控制

左心房为你撑大大i 提交于 2020-03-17 22:07:54
1 .对于 STM32 讲,外部中断通道位置 28 ( 35 号优先级)是给外部设备 TIME2 的,但 TIME2 本身能够引起中断的中断源或事件有好多个,比如更新事件(上溢 / 下溢)、输入捕获、输出 匹配、 DMA 申请等。所有 TIME2 的中断事件都是通过一个 TIME2 的中断通道向 STM32 内核提 出中断申请,那么 STM32 中如何处理和控制 TIME2 和它众多的、不同的、中断申请呢? (题外话: STM32 中的一个通用定时计数器,就比 8 位控制器(如 AVR , MCS-51 就更不必说了)中 TIME 要复杂多了。学过 AVR 的,可能对输入捕获、输出匹配等还有概念,但如果你学的标准架构的 MCS-51 ,那 么上手 32 位可能困难就更多了。所以我一直推荐学习 8 位机应该认真的从 AVR 开始。尽管 51 有很大的市 场,价格也相对便宜,但从长远的眼光看问题,从后续掌握 32 位的使用,考虑到学生的可持续发展, AVR 应该是比较好的选择。) 2 . cortex_m3 内核对于每一个外部中断通道都有相应的控制字和控制位,用于单独的和总 的控制该中断通道。它们包括有: z 中断优先级控制字: PRI_n (上面提到的) z 中断允许设置位:在 ISER 寄存器中 z 中断允许清除位:在 ICER 寄存器中 z 中断悬挂 Pending (排队等待

《嵌入式系统》 |(六) 定时器(计数器) 知识梳理

自古美人都是妖i 提交于 2020-03-17 09:44:19
系列索引 《嵌入式系统》 | 嵌入式系统 重点知识梳理 目录 嵌入式系统中延时实现的方式及其优缺点 STM32 F103中的基本定时器、通用定时器及高级定时器的区别(包括所在总线及功能区别) 定时器的时钟源有哪些? 定时器的工作模式 PWM的作用及其实现方式 定时器中预分频、自动重装载、捕获/比较寄存器的初始值的设置 定时器延时时间的计算 定时器相关库函数的使用(arr,psc及ccr值的设置,定时器中断的使用) 嵌入式系统中延时实现的方式及其优缺点 嵌入式系统中延时的实现 1. 完全硬件实现 使用 电容及电阻 即可完成特定的 振荡延时 作用 延时时间无法改变 2. 纯软件方式(不精确,占用CPU) 3. 微控制器中的可编程定时/计数器 STM32 F103中的基本定时器、通用定时器及高级定时器的区别(包括所在总线及功能区别) 功能: 计数 = 基本定时器 + 输入输出,捕获 = 通用定时器 + 刹车信号输入,7路信号互补输出 = 高级定时器 定时器的时钟源有哪些? 内部时钟(系统时钟),来自于输入为APB1或APB2的一个倍频器 外部时钟模式 1: 外部输入引脚 ;2:外部触发输入ETR 内部引脚 其他定时器 定时器的工作模式 计数模式(以普通定时器为例) 输出比较模式 输入捕获模式 先设置输入捕获为上升沿检测,记录发生上升沿时TIMx_CNT的值。然后配置捕获信号为下降沿捕获