指令寄存器

C51学习笔记

筅森魡賤 提交于 2019-12-15 21:03:36
一, C51内存结构深度剖析 二, reg51.头文件剖析 三, 浅淡变量类型及其作用域 四, C51常用头文件 五, 浅谈中断 六, C51编译器的限制 七, 小淡C51指针 八, 预处理命令 一,C51内存结构深度剖析 在编写应用程序时,定义一个变量,一个数组,或是说一个固定表格,到底存储在什么地方; 当定义变量大小超过MCU的内存范围时怎么办; 如何控制变量定义不超过存储范围; 以及如何定义变量才能使得变量访问速度最快,写出的程序运行效率最高。以下将一一解答。 1 六类关键字(六类存储类型) data idata xdata pdata code bdata code: code memory (程序存储器也即只读存储器)用来保存常量或是程序。code memory 采用16位地址线编码,可以是在片内,或是片外,大小被限制在64KB 作用:定义常量,如八段数码表或是编程使用的常,在定义时加上code 或明确指明定义的常量保存到code memory(只读) 使用方法: char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; 此关键字的使用方法等同于const data data memory (数据存储区)只能用于声明变量,不能用来声明函数,该区域位于片内,采用8位地址线编码

28335GPIO及外部中断配置介绍

ぐ巨炮叔叔 提交于 2019-12-13 03:20:06
本文转载连接: https://blog.csdn.net/E_ROAD_BY_U/article/details/53083151 弄了两周终于把28335的启动流程、寄存器及中断向量表的映射方法、内存的划分等有了一个全面的了解,今天看到久违的LED灯的闪烁,顿扫阴霾。特在此总结下28335GPIO及外部中断配置介绍。其实对于一个微控制器,只要能够独立实现这两个功能,也算是入门了。 一、GPIO口介绍 外界二进制信息(数字量)要被CPU处理,要给存储器存放,就需要外界信息源与两者之间的交换接口,这样的交换接口若用来进行通用目的数字量的输入输出,就被称为通用数字量输入/输出接口,简称GPIO。F28335 DSP有多达88个GPIO口,对应着芯片引出的88个引脚,随着芯片的封装与尺寸的确定,引脚数目是有限的,所以这88个引脚多数都是功能复用的,即可以灵活配置为输入引脚,也可以灵活配置为输出引脚,即可以作为通用I/O引脚,也可以作为特殊功能口(如SCI、SPI、ECAN等),非常灵活,用户根据需要,可以通过GPIO MUX(输入输出多路选择器,复用开关)寄存器来进行相关配置。 F28335DSP将这88个GPIO口分成了A、B、C三大组,A组包括GPIO0至GPIO31,B组包括GPIO32至GPIO63,C组包括GPIO64至GPIO87,每个引脚都复用了多个功能,同一时刻

CPU

不问归期 提交于 2019-12-12 10:36:07
CPU 1. CPU是什么? 2.CPU 实际做什么? 3.CPU 的内部结构 4.CPU 是寄存器的集合体 5.计算机语言 6.汇编语言 7.程序计数器 8.条件分支和循环机制 9.标志寄存器 10.函数调用机制 11.通过地址和索引实现数组 12.CPU 指令执行过程 13.总结 1. CPU是什么? CPU 的全称是 Central Processing Unit ,它是你的电脑中最硬核的组件,这种说法一点不为过。CPU 是能够让你的计算机叫计算机的核心组件,但是它却不能代表你的电脑,CPU 与计算机的关系就相当于大脑和人的关系。 它 是一种小型的计算机芯片 ,它嵌入在台式机、笔记本电脑或者平板电脑的主板上。通过在单个计算机芯片上放置数十亿个微型晶体管来构建 CPU。 这些晶体管使它能够执行运行存储在系统内存中的程序所需的计算,也就是说 CPU 决定了你电脑的计算能力。 2.CPU 实际做什么? CPU 的核心是从程序或应用程序获取指令并执行计算。 此过程可以分为三个关键阶段: 提取,解码和执行 。 CPU从系统的 RAM 中提取指令,然后解码该指令的实际内容,然后再由 CPU 的相关部分执行该指令。 RAM : 随机存取存储器 (英语:Random Access Memory,缩写:RAM),也叫主存,是与 CPU 直接交换数据的内部存储器。它可以 随时读写 (刷新时除外)

STM32开发 -- 低功耗模式详解

£可爱£侵袭症+ 提交于 2019-12-12 10:08:48
很多单片机都有低功耗模式,STM32 也不例外。当 CPU 不需继续运行时,可以利用多个低功耗模式来节省功耗。 这部分不是我负责,但是也是有必要看一下的。 参看: STM32F1开发指南-库函数版本_V3.2.pdf STM32中文参考手册_V10.pdf 一、低功耗模式 在系统或电源复位以后,微控制器处于运行状态。当CPU不需继续运行时,可以利用多种低功耗模式来节省功耗,例如等待某个外部事件时。用户需要根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。 STM32有三种低功耗模式: ● 睡眠模式 (Cortex™-M3内核停止,所有外设包括Cortex-M3核心的外设,如NVIC、系统时钟(SysTick)等仍在运行) ● 停止模式 (所有的时钟都已停止) ● 待机模式 (1.8V电源关闭) 此外,在 运行模式 下,可以通过以下方式中的一种降低功耗: ● 降低系统时钟 在运行模式下,通过对预分频寄存器进行编程,可以降低任意一个系统时钟(SYSCLK、 HCLK、 PCLK1、 PCLK2)的速度。进入睡眠模式前,也可以利用预分频器来降低外设的时钟。 ● 关闭APB和AHB总线上未被使用的外设时钟。 在运行模式下,任何时候都可以通过停止为外设和内存提供时钟(HCLK和PCLKx)来减少功耗。为了在睡眠模式下更多地减少功耗

实模式到保护模式:第11章读书笔记

无人久伴 提交于 2019-12-11 21:03:45
在这一章的主要任务就是从实模式进入保护模式 - 首先创建几个初始化描述符,确保在进入保护模式之后程序能够正常运行, - 将初始化描述符的内容放到GDT表中,此时虽然将GDT表的基地址和大小加载到GDT寄存器中,但是GDT表所在位置已经定义好了 - 接下来将GDT表所在位置和大小全部加载到GDT寄存器中 - 接下来开启第21根地址线,禁止中断,将cr0寄存器的PE位的值置为1,进入保护模式,但是此时还是处于16位的保护模式 2. 什么是GDT表? - 在保护模式中,内存访问方式与实模式不同,在实模式中,寻址方式是 段寄存器*16+偏移量 在32处理器中,段寄存器的结构发生了变化,结构如下 - 在保护模式下的内存访问的方式 - 段寄存器中存储的值为段描述符的索引,也就是0-15位可见部分 - 当将索引加载到寄存器中,处理器会自动到GDT表中根据索引找到对应的描述符,然后将描述符的内容加载到描述符高速缓冲器部分 - 内存访问的方式是根据段寄存器的高速缓冲器中的基地址的内容加上指令的偏移值(描述符的内容在将索引加载到寄存器时,会将描述符的值加载到寄存器的不可见部分),最终得到物理地址 - GDT表其实是对应了一块内存区域,GDT寄存器保存了GDT表的基地址和表的最大偏移量(GDT表的大小 - 1),所有的全局描述符都存储在这块内存区域中,便形成了GDT表 - GDT寄存器的格式如下: -

基础常用arm汇编指令

一个人想着一个人 提交于 2019-12-11 03:55:36
内存访问指令:ldr,str,ldm,stm ldr( Load from memory into register): ldr{条件} 目的寄存器 <存储器地址> 作用: 指令从内存中读出数据到寄存器中 比如: ldr r1, [r2,#4] //将地址r2+4的内存单元的数据读取到r1中 ldr r1,[r2] //将地址r2的内存单元的数据读取到r1中。 R1<——[R2] 注意:ldr中的第二个参数为=时,表示伪指令,或者表示内存访问指令 比如 ldr r1,=4096 ; str: Store from a register into memory 把指令寄存器的值储存到内存中。 比如: str r1,[r2,#4] //将r1的数据保存到地址为r2+4的内存单元中 str r1,[r2] //将r1的数据保存到地址为r2的内存单元中 R1——>[R2] ldm: Load from memory into many register 格式如下: ldm{cond}<addressing_mode> {!} {^} <addressing_mode>表示地址变化模式,有以下4中方式 1、ia(increment after):事后递增 2、ib(increment before):事先递增 3、da(decrement after):事后递减 4、db(decrement

程序员需要了解的硬核知识之控制硬件

孤街醉人 提交于 2019-12-10 21:45:40
应用和硬件的关系 我们作为程序员一般很少直接操控硬件,我们一般通过 C、Java 等高级语言编写的程序起到间接控制硬件的作用。所以大家很少直接接触到硬件的指令,硬件的控制是由 Windows 操作系统 全权负责的。 你一定猜到我要说什么了,没错,我会说但是,任何事情没有绝对性,环境的不同会造成结果的偏差。虽然程序员没法直接控制硬件,并且 Windows 屏蔽了控制硬件的细节,但是 Windows 却为你开放了 系统调用 功能来实现对硬件的控制。在 Windows 中,系统调用称为 API ,API 就是应用调用的函数,这些函数的实体被存放在 DLL 文件中。 下面我们来看一个通过系统调用来间接控制硬件的实例 假如要在窗口中显示字符串,就可以使用 Windows API 中的 TextOut 函数。TextOut 函数的语法(C 语言)如下 BOOL TextOut{ HDC hdc, // 设备描述表的句柄 int nXStart, // 显示字符串的 x 坐标 int nYStart, // 显示字符串的 y 坐标 LPCTSTR lpString, // 指向字符串的指针 int cbString // 字符串的文字数 } 那么,在处理 TextOut 函数的内容时,Windows 做了些什么呢?从结果来看,Windows 直接控制了作为硬件的显示器。但 Windows

JVM内存模型——程序计数器

烈酒焚心 提交于 2019-12-10 17:11:00
程序计数器又称为PC寄存器,是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器(实际是指令的偏移地址。在CPU中PC寄存器存放的是下一条指令地址,在JVM中存放的是正在执行的指令地址)。程序中的分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器完成。由于多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,故该区域为线程私有的内存。当执行的是JVM的方法时,则寄存器中保存的是当前执行指令的地址;执行的是native方法,则寄存器中为空。也是唯一一块不存在溢出的区域。 特点总结: 线程私有; 生命周期随线程; 唯一没有OutOfMemoryError异常的区域。 特点分析: 程序计数器用于记录线程执行的位置,所以是每个线程私有的。由于线程在创建后运行中随时可能由于时间片耗尽而进行切换,所以程序计数器的生命周期是随线程创建而创建,随线程销毁而销毁的。程序计数器记录了线程执行的偏移量,在线程运行期间只是改变偏移量的值,不需要申请新的内存空间,所以不会出现内存溢出。 参考: https://www.jianshu.com/p/77c882f47b29 来源: CSDN 作者: saishangmingzhu 链接: https://blog.csdn.net/saishangmingzhu/article/details/102975379

Rocket - debug - Example: DMI

折月煮酒 提交于 2019-12-10 13:09:13
https://mp.weixin.qq.com/s/7suuJ7m2BKCpsHk1K2FzJQ 介绍riscv-debug的使用实例:如何使用DMI。 1. dm Debug Module实现了调试模块。 2. dmi Debug Module Interface是对Debug Module的访问接口。 3. DTM dmi包含在DTM中。DTM是硬件接口相关的,可以是JTAG DTM,也可以是USB DTM。 4. JTAG DTM Registers 1) 支持的寄存器列表 a. 这里的address实际上是要存入IR中的指令编码; b. 而这些寄存器则是数据寄存器(Data Register); c. 使用存入IR中的指令编码来选择相应的数据寄存器(Data Register): 2) dmi Register 实现调试模块(Debug Module)访问的核心寄存器,用以实现对调试模块中各个寄存器的读写: 至于dmi寄存器自身,则通过JTAG接口进行访问: a. 在IR中填入0x11,选择dmi数据寄存器; b. In Update-DR, the DTM starts the operation specified in op unless the current status reported in op is sticky. c. In Capture-DR,

单片机的组成、工作原理、分类、特点以及发展趋势

老子叫甜甜 提交于 2019-12-07 01:09:45
芯片在没有开发前,单片机只是具备功能极强的超大规模集成电路,如果赋予它特定的程序,它便是一个最小的、完整的微型计算机控制系统,它与个人电脑(PC机)有着本质的区别,单片机的应用属于芯片级应用,需要用户了解单片机芯片的结构和指令系统以及其它集成电路应用技术和系统设计所需要的理论和技术,用这样特定的芯片设计应用程序,从而使该芯片具备特定的功能。 不同的单片机有着不同的硬件特征和软件特征,即它们的技术特征均不尽相同,硬件特征取决于单片机芯片的内部结构,用户要使用某种单片机,必须了解该型产品是否满足需要的功能和应用系统所要求的特性指标。这里的技术特征包括功能特性、控制特性和电气特性等等,这些信息需要从生产厂商的技术手册中得到。软件特征是指指令系统特性和开发支持环境,指令特性即我们熟悉的单片机的寻址方式,数据处理和逻辑处理方式,输入输出特性及对电源的要求等等。开发支持的环境包括指令的兼容及可移植性,支持软件(包含可支持开发应用程序的软件资源)及硬件资源。要利用某型号单片机开发自己的应用系统,掌握其结构特征和技术特征是必须的。 单片机控制系统能够取代以前利用复杂电子线路或数字电路构成的控制系统,可以软件控制来实现,并能够实现智能化,现在单片机控制范畴无所不在,例如通信产品、家用电器、智能仪器仪表、过程控制和专用控制装置等等,单片机的应用领域越来越广泛。诚然