精华内容
下载资源
问答
  • 1.PCMAR寄存器位数对应的是存储单元的个数 eg:若MAR为10位,则对应2**10=1024个存储单元,记为1K.也即像2M,1K,3G等表示的都是存储单元的个数.当其后加上B表示的是字节个数.例如:2MB表示2M个字节.

    1.PC和MAR寄存器的位数对应的是存储单元的个数

    eg:若MAR为10位,则对应2**10=1024个存储单元,记为1K.也即像2M,1K,3G等表示的都是存储单元的个数.当其后加上B表示的是字节个数.例如:2MB表示2M个字节.
    
    展开全文
  •  基本上引脚就是如此,两块级联的方法是,第一块的9脚(串行输出)接到第二块的14脚(串行输入),ST_CP(latch)SH_CP(clock)两块板分别对应接在一起 2.数码管 一位数码管每段的编号一般如下图,如果...

    一.相关芯片

    1.74HC595N * 2

    2. Arduino Uno

    3. 4位8段数码管

    二.关于引脚

    1.74HC595N引脚

      基本上引脚就是如此,两块级联的方法是,第一块的9脚(串行输出)接到第二块的14脚(串行输入),ST_CP(latch)和SH_CP(clock)两块板分别对应接在一起

     

     

    2.数码管

    一位数码管每个段的编号一般如下图,如果不知道如何测引脚, 见引用1

    4位数码管

    引脚图基本如下所示,dp指的是右下角的点,因为数码管是共阴极的,所以如果要显示多个位数的话,需要使用多路复用的技术

    三.代码

    程序实现从9999一直减少到0,刚测试的时候发现对于没有亮的段,时常随机莫名的闪动弱光,后来发现原来是电压不够的原因,之前用的电压是3.3V,后来改用5V就就没问题了,

    #include <TimerOne.h>
    
    #define NUM_0   B11111100
    #define NUM_1   B01100000
    #define NUM_2   B11011010
    #define NUM_3   B11110010
    #define NUM_4   B01100110
    #define NUM_5   B10110110
    #define NUM_6   B10111110
    #define NUM_7   B11100000
    #define NUM_8   B11111110
    #define NUM_9   B11100110
    
    #define NUM_NULL   B0
    
    int nLatchPin = 8;
    int nClockPin = 12;
    int nDataPin = 13;
    
    int nCurInt = 9999;
    void setup()
    {
      pinMode(nLatchPin, OUTPUT);
      pinMode(nClockPin, OUTPUT);
      pinMode(nDataPin, OUTPUT);
    
      Timer1.initialize(10000);
      Timer1.attachInterrupt( Update ); // attach the service routine here
    }
    
    void Update()
    {
      LightUpInt(nCurInt, 10);
    }
    
    void loop()
    {
      delay(100);
      
      if (nCurInt > 0)
        nCurInt--;
    }
    
    byte GetNumberDefine(byte nNumber0_9)
    {
      switch(nNumber0_9)
      {
        case 0: return NUM_0;
        case 1: return NUM_1;
        case 2: return NUM_2;
        case 3: return NUM_3;
        case 4: return NUM_4;
        case 5: return NUM_5;
        case 6: return NUM_6;
        case 7: return NUM_7;
        case 8: return NUM_8;
        case 9: return NUM_9;
      }  
      return 0;
    }
    
    // Light Up an integer, It can be more than 9, such as 123, but must less than 999
    void LightUpInt(int nNumbers, int nMicrosecond)
    {
      int nLow = 0;
      int nCount = 1;
      do{
        nLow = nNumbers % 10;
        nNumbers = nNumbers / 10;
        LightUpNumberOffset(GetNumberDefine(nLow), nCount);
        if (nMicrosecond > 0)
          delayMicroseconds(nMicrosecond);
        nCount++;
      }while(nNumbers > 0 && nCount < 5);
      
      if (nMicrosecond > 0)
        LightUpNumberOffset(NUM_NULL, 0);
    }
    
    void LightUpNumberOffset(byte dataOut, byte offset/*0 if light off, 1 - 4 if light up*/)
    {
      digitalWrite(nLatchPin, LOW);  
      if (offset == 0)
      {
        LightUpOneDigital(0);
        LightUpOneDigital(dataOut);
      }
      else
      {
        LightUpOneDigital(~(1 << (3 + offset)));
        LightUpOneDigital(dataOut);
      }
      digitalWrite(nLatchPin, HIGH);
    }
    
    void LightUpOneDigital(byte dataOut)
    {
      digitalWrite(nDataPin, LOW);
      digitalWrite(nClockPin, LOW);
      
      boolean bStatePin;
      
      for (int i=0; i<=7; i++)
      {        
        if (dataOut & (1 << i))
          bStatePin = HIGH;
        else
          bStatePin = LOW;
        
        digitalWrite(nClockPin, LOW);
        digitalWrite(nDataPin, bStatePin);
        digitalWrite(nClockPin, HIGH);
        
        //digitalWrite(nDataPin, LOW);
      }
      
      digitalWrite(nClockPin, LOW);
    }

     

    引用:

    1.数码管、LED点阵的测试方法,http://v.youku.com/v_show/id_XMTI1Nzc3OTUy.html

    转载于:https://www.cnblogs.com/leaveswave/p/3618047.html

    展开全文
  • 寄存器

    2020-01-28 23:40:50
    CPU由运算器,寄存器,控制器组成(主要部件是 寄存器) 关于寄存器 ...指令的两操作对象的位数应相同,下列错误如: mov ax,bl mov bh,ax mov al,20000(8位寄存器最大存放值为255) add al...

    CPU由运算器,寄存器,控制器组成(主要部件是 寄存器)

     

    关于寄存器


    以通用寄存器 AX 为例:由  低8位AL   和   高8位AH   构成的16位寄存器

    写汇编指令时寄存器名称不区分大小写(如 ax,AX等价)

    指令的两个操作对象的位数应相同,下列错误如:

    • mov ax,bl
    • mov bh,ax
    • mov al,20000(8位寄存器最大存放值为255)
    • add al,100h

    CPU通过地址总线送入存储器的,必须是一个内存单元的物理地址

     

                                                          8086 CPU小专题

    对于常用的 8086 CPU是16位机(字节为16位),也就是在 8086的内部 能够处理,传输,暂时储存的信息最大长度是16位

    1. 运算器一次最多处理16位数据
    2. 寄存器的最大宽度是16位
    3. 寄存器与运算器之间通路是16位

     

    8086CPU 有20位地址总线,可以传送20位地址,达到1MB(2^20=1024*1024)的寻址能力

    但刚刚提到的 8086CPU如果从内部将地址简单的从内部发出,那么表现出的寻址能力只有64KB(1024*64),大大降低了硬件利用率

     


    解决方法,如下图所示:

     

     

    真正的物理地址由地址加法器经过(段地址*16(基础地址)+偏移地址)的计算方法合成了一个20位的  物理地址

    特别注意:段地址并不是内存被分段,其实每一个段都有一个段地址

    段地址干货,干货,干货(重要的事情……嗯嗯)

     

    • 偏移地址16位
    • 变化范围0~FFFFH(1111 1111 1111 1111(2进制2^16的表达形式))
    • 仅用偏移地址来寻址最多是64KB(1024*64)个内存单元

     

    • 数据存在2000:1F60单元    或    数据存在内存的2000段的1F60单元中(正确)
    • 数据在21F60H 内存单元(emmm,显得有点门外汉,很委婉了(不要这样说))

    好啦,干货上完了(放松一下紧张的神经 >_<)

     

    8086CPU有4个段寄存器:CS  DS  SS  ES

    • CS和IP是 8086CPU 中两个最关键的寄存器(CS是代码段寄存器,IP是指令指针寄存器)

    重要到什么成度呢?

    • 大概就是:8086机(不是CPU)中,任意时刻,CPU将CS:IP指向的内容当作指令执行
    • 举个例子:CS中内容为M,IP内容N,8086CPU 将从内存 M*16+N单元开始,读取指令并执行(关于 ” CS:IP “ 表达详述,请看上述干货)

    与 CS、IP 相关的指令

    我们知道:在CPU中,程序员能够用指令读写的部件只有寄存器(通过改变寄存器实现对CPU的控制)

    之前提到的 传送指令 mov 并不能用于设置CS、IP 的值,因为8086CPU 没有提供这样的指令

    • 若想同时修改 CS、IP的内容

    但是我们可以通过 jmp 指令(例如:“ jmp 段地址:偏移地址 ”)来完成

    • 如果想单独对 IP 进行修改

    “ jmp 某一合法寄存器 ” 即可实现类似 mov IP,ax 的指令(虽然此指令真的并不存在,但可以在适当的时候来这样描述)

     

                                                               代  码  段

    对于 8086PC 机,在编程时,我们可以将一组内存单元定义为一个段

    就像   将长度为 N (N<=64KB)的一组代码,存在一组地址连续,起始地址为 16 的倍数(段地址*16=基础地址)的内存单元中,这样就定义了一个代码段, 但内存中数据与指令是不被区分的,那……

    如果

    想让 CPU 执行放在代码段里的指令,就必须将 CS :IP 指向所定义代码段的第一条指令的首地址

     


                                                                                                                      这大过年的…………武汉加油!!!

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 移位寄存器

    2020-12-09 01:57:52
    一、特点分类 从逻辑结构上看,移位寄存器有以下两显著特征:(1)移位寄存器是由相同的寄存单元所组成。一般说来,寄存单元的个数就是移位寄存器位数。为了完成不同的移位功能,每寄存单元的输出与其相邻的...
  • 1.为7.1.1的DUT建立寄存器模型...不是有效宽度,而是这个寄存器总共的位数。 2)另一参数是是否加入覆盖率的支持。这不支持。 3)派生自uvm_reg的类都有一build 函数。build_phase不同,他不会自动执行,需要

    1.为7.1.1的DUT建立寄存器模型。只有一个寄存器invert。首先从uvm_reg 派生一个invert 类:


    1)new函数中,invert 的宽度作为参数传给super.new。不是有效宽度,而是这个寄存器总共的位数。

    2)另一个参数是是否加入覆盖率的支持。这个不支持。

    3)派生自uvm_reg的类都有一个build 函数。和build_phase不同,他不会自动执行,需要手工调用。都是在这里例化,之后调用data.configure配置。意义如下:


    4)第四个参数表示此字段的存取方式。UVM提供如下25种:



    2.第一好寄存器后,需要在由reg_block 派生的类中将其例化:


    1)每个由uvm_reg_block 派生的类也要定义一个build 函数,在其中实现所有寄存器的例化。

    2)一个uvm_reg_block 对应一个uvm_reg_map,default_map系统已经声明,只需在build中例化,调用create_map。

    第一个参数是名字。

    第二个参数是基地址。

    第三个是系统总线宽度,单位是byte。

    第四个是大小端。

    第五个是是否按照byte寻址。

    3)例化invert 并调用invert.configure。指定后门访问时的路径。

    第一个是此寄存器所在uvm_reg_block 的指针,这里是this。

    第二个是reg_file的指针。

    第三个是此寄存器后门路径。

    4)需要受到build,将invert中的field 例化。

    5)将此寄存器加入default_map中。uvm_reg_map 作用是存储所有寄存器地址,因此必须加入,否则无法前门操作。

    第一个是要加入的寄存器。

    第二个是寄存器地址。

    第三个是存取方式。

    展开全文
  • 处理器位数

    2011-11-13 14:56:34
    因为一般处理器中的算术逻辑单元(Arithmetic and Logic Unit)ALU是通过总线与寄存器相连的,微处理器中的位就决定了总线和寄存器位数,所以可以从寄存器、数据总线的位数来看这处理器的位数。 这里之所以...
  • 寄存器详解

    千次阅读 2012-12-07 18:09:14
    AX/EAX: 累加器,算术通用寄存器,与端口的通讯也用这个寄存器. ...累加器结合表示双字长的,其中累加器用于存低位数. [From]http://blog.csdn.net/huangwei1024/archive/2007/01/29/1496560.aspx 2
  • 计算机的容量对于存储单元个数乘以存储字长。 存储单元个数。就相当于存储体的行数。 存储字长。就相当于存储体的列数。 计算机的容量其实就是求它的总的位数。能够存放一零的个数。 要注意还有一个说法。 就是...
  • CPU内部结构和寄存器32b64b系统区别寄存器vs缓存vs内存汇编 32b64b系统区别 说的就是总线位数 8b寄存器为A/B/C/D;这四个寄存器的名字并非只是四字母而已,而是各...只用注意缓存和寄存器不是一东西就行了 汇
  • 寄存器-笔记

    2020-07-31 17:27:41
    累加器结合表示双字长的,其中累加器用于存低位数. 寄存器是CPU内部重要的数据存储资源,是汇编程序员能直接使用的硬件资源之一。由于寄存器的存取速度比内存快,所以,在用汇编语言编写程序时,要尽可能充分...
  • USART的寄存器

    千次阅读 2019-01-26 17:28:36
    波特率也就是串口每秒传输的二进制位数,波特率的控制主要由波特率寄存器 USART_BRR,波特率寄存器(USARTDIV)由整数部分小数部分构成 收发控制 收发控制主要由三控制寄存器CR1,CR2,CR3以及一状态寄存器SR ...
  • 计算机位数

    2012-12-01 21:55:11
    位数指的是CPU通用寄存器的数据宽度为64位,即运行64位数据的指令,处理器一可以运行64BIT的数据。而32为运行的数据宽度则为32.所以64位可以进行更大范围的整数运算,支持更大的内存  32位处理器64位处理器的...
  • 思考PC的位数设计

    千次阅读 多人点赞 2016-11-22 16:10:54
    思考PC的位数设计@(组成原理)前面专门讨论过PC的自增长问题...采用32位定长指令格式,若指令按照字边界对齐存放,则程序计数器PC指令寄存器IR的位数至少分别是:B A. 30, 30 B. 30, 32 C. 32, 30 D. 32, 32分析:
  • 初学者打出来的代码,可能不“美观”,希望大家点评,多多留下意见,话不多说上代码……下面为8位数码管全部显示#include "Arduino.h"void set(int x);void setup();void loop();void shu();int SH_CP = 12;//595_SH...
  • 寄存器:用以存放二进制代码的电路,下图为由维特阻塞D触发器组成的4位数寄存器: 逻辑功能分析: 1.异步端CR置0时,输出置0; 2.同步并行置:D0~D3为4输入代码,当CP上升沿到达时,D0~D3被同时并行置入。 3....
  • AVR汇编语言实现 10!为什么不对? ldi r17 $1 ldi r18 $1 ldi r16 $11 loop:mul r17,r18 mov r17,r0 inc r18 ...求汇编完整成将AX寄存器中的16位数分成4组每组4位然后把这四组分别放在AL BL CL
  • 116-CPU所含有的寄存器

    2020-12-25 21:39:31
    1.4数据寄存器(EAX、EBX、ECXEDX),也叫通用寄存器 数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作所需占用总线访问存储器的时间。 寄存器AXAL通常称为累加器,用累加器进行的操作可能...
  • 我们知道,在拨号是,每拨一位数字,前边拨的数字就要向左挪一位,我们可以用一一位数组,通过移动数组中数字的移动8位数码管的动态扫描来实现位置的移动。 代码如下: #include "reg52.h" //此...
  • 处理器位数的概念

    2017-05-19 15:26:10
    今天看借的书时候发现一模糊的概念,处理器的处理位数即字长,也就是我们平时...它决定着计算机内部寄存器、ALU数据总线的位数,直接影响着机器的硬件规模造价。字长直接反映了一台计算机的计算精度,为适应不同
  • CPUOS的位数解惑

    2010-06-21 08:57:00
     受虚拟实际内存尺寸的限制,目前主流的32位CPU在性能执行模式方面存在一严重的缺陷:当面临大量的数据流时,32位的寄存器(注:为了处理数据,暂时储存结果,或者做间接寻址等等动作,每处理器都具备...
  • 汇编Day02通用寄存器

    2019-02-11 14:34:42
    学汇编不是为了用汇编写代码,而是用汇编来深入理解CC++你死记硬背的地方,学汇编...寄存器的大小取决于CPU的位数 32位CPU:能提供3种类型的寄存器:8bit 16bit 32bit 62位CPU:能提供4种类型的寄存器:8bit 1...
  • Intel x86 CPU寄存器总结

    2014-12-08 10:36:33
    4通用寄存器: EAX(Accumulator,累加寄存器):可用于乘、...ECX(Count,计数寄存器):用来保存计数值,如在移位指令、循环指令串处理指令中用作隐含的计数器(当移多位时,要用CL来指明移位的位数)。低16位为
  • 汇编学习_寄存器1

    2019-04-04 08:13:53
    典型的CPU由运算器、控制器、寄存器等器件构成,这些器件靠...在进行数据传送或运算时,要注意指令的两操作对象位数应当是一致的 不同的CPU可以有不同的物理地址形成方式;8086CPU在内部用段地址偏移地址移位...
  • 字在寄存器中存储

    2015-03-30 14:12:55
    注意,此时是作为一独立的8位寄存器来使用,ah没有关系,CPU在执行这条指令时认为 ah al 是两不相干的寄存器。 在写程序的时候,在进行数据传送或运算时,要注意指令的两操作对象的位数应当是一致的。...
  • 譬如说接有外部 RAM 而且要求有 16 以上的按键,8 位数码管以上的显示。而且还不包括其它的外围器件。这时整个系统的 I/O 资源就很吃紧了。系统的扩展性也不好。这时我们就需要考虑对单片机的 I/O 进行扩展了。  ...
  • 当CPU的位数达到32位,速度达到100M以上时,要在一指令周期内对32位的数据进行32 位内任意移位,以前的设计方法已经很难达到要求。曾经有过对32位桶形移位寄存器的行为级描述 [1],但其只适用于RISC指令集,并且...
  • *56.段寄存器

    2020-05-04 12:10:19
    为什么会有段寄存器的存在: 一开始的因特尔8086cpu的数据总线宽度地址总线宽度不一致,数据总线较低位,地址总线宽度可以做到比较大。 地址总线我们知道,如果位数少,那寻址范围就很小,所以会考虑比较大的地址...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 360
精华内容 144
关键字:

寄存器位数和个数