1.ROM:只读存储器,单片机的只读存储区大多用于存储程序固又称程序存储器。
51单片机是EPROM,所谓的EPROM是可擦除的只读存储器。可以把原来的程序擦除了,再写一个新的进去。
断电后是可以保存的,数据存储器(RAM)是不能保存的。
RAM只能在程序执行的时候不断地重新存储定义的变量。如int x,int y
可以通过code这个指令来将定义的变量放在ROM,而不是RAM中,节省RAM资源
2.RAM:随机存取存储器,用于存储定义的变量等,速度快
51单片机的RAM存储容量远小于ROM,但是速度非常之快
内部详细图示
内部的结构看似十分复杂,但是大致上可以分为两个部分:运算器(红色框)和控制器(蓝色框)。
运算器:主要作用是进行加减乘除和逻辑运算
内部的结构可以上网查询
控制器:控制单片机的各种操作
程序执行过程
1.程序地址
程序开始的时候,要先知道第一条程序的地址,这个通过PC(程序计数器)知道。
比如刚开始的时候地址是0000H,这个是16进制的。
当这个地址送给地址寄存器后,即取出第一条指令后,PC自动加1,准备取出下一条指令。
2.程度读取
地址寄存器知道指令的地址后,就从ROM(只读存储器)里面取出地址所指向的一条指令。
并把取出来的指令放到指令寄存器中,经过指令编码器编译
3.数据处理
指令有可能要用到加减乘除和赋值语句的判断。经过指令编码器,就知道要取出那些定义的数据或者哪些赋值语句。
通过总线来调取我们要用到的数据。并通过运算器来运算。
比如说我们定义了int x和int y,这两个数据放在RAM中。
当我们取出了一个a = x + y 的指令后,需要x和y的值来计算。
那么通过上一张图的取数据的过程后取出了x和y的数据
通过运算器来运算。
如图,取出x和y进入黑色框(运算器)中来的到最终结果
最终的结果还会通过a这个变量存储在数据存储器(RAM)中
4.操作器件
当然,除了计算这种步骤外,还有一种情况就是来直接控制IO口的高低电平或者其他的器件了。
关键字:单片机 结构 运行过程
引用地址:
8051单片机的内部的结构及运行过程解析
推荐阅读最新更新时间:2024-11-10 15:07
自制AVR单片机ISP下载线
单片机编程器的作用是将调试好的程序烧写到单片机的存储器中。本文介绍的AVR单片机ISP下载线的成本只有10元左右,非常适合初学者自制。 AVR单片机的程序可以使用串行在线编程(ISP)方式下载写入,即可直接在电路板上进行程序的烧写和修改,所需的装置就是一根ISP下载线。 本文介绍的ISP下载线使用计算机的并口对单片机编程.不仅支持AVR单片机,也支持对51单片机中AT89S系列单片机的编程。 一、下载线电路 下载线的电路见图1。该下载线是STK200/300型的下载线。74HC244是8缓冲器电路,用来作计算机并口和单片机的缓冲隔离。图1中的LPT连接到计算机的并口,作计算机上的下载软件和单片机进行通信的接口。LPT的④
[单片机]
单片机系统过程通道中防止干扰的探讨
1 引言 干扰一般是以随机出现的脉冲形式进入 单片机 系统的,主要来自电网上和系统内负载突变形成的交变磁场和电场耦合系统内部,形成尖峰脉冲电势或电流叠加到某些芯片的数据线、地址线或控制线上,从而扰乱输入信号,破坏某些器件的工作状态。干扰窜入单片机系统的渠道主要有两条:空间场干扰 (通过电磁波感应窜入系统)和过程通道干扰。一般来讲,空间干扰在强度上远小于过程通道干扰,而且空间干扰可用良好的屏蔽、正确的接地方法以及采取必要的软硬件滤波加以解决。这里只就过程通道的防止干扰设计进行探讨。 2 过程通道的抗干扰设计 就过程通道而言,由于它直接与外部设备相连,因此无论是数字量的输入输出通道,还是模拟量的输入输出通道,都是干扰窜入渠道。要
[单片机]
MCS_51单片机与8255A的接口设计
所谓可编程的接口芯片是指其功能可由微处理机的指令来加以改变的接口芯片,利用编程的方法,可以使一个接口芯片执行不同的接口功能。目前,各生产厂家已提供了很多系列的可编程接口,MCS-51单片机常用的两种接口芯片是8255以及8155。 8255和MCS-51相连,可以为外设提供三个8位的I/O端口:A口、B口和C口,三个端口的功能完全由编程来决定。 1. 8255的内部结构和引脚排列 下图7为8255的内部结构和引脚图。 (1)A口、B口和C口。A口、B口和C口均为8位I/O数据口,但结构上略有差别。A口由一个8位的数据输出缓冲/锁存器和一个8位的数据输入缓冲/锁存器组成。B口由一个8位的数据输出缓冲/锁存器和一个8位的
[单片机]
基于51单片机的蓝牙密码锁
原理图: PCB图: 程序运行图: 部分程序: #include reg52.h #include intrins.h #include math.h #include 12864.h #define uchar unsigned char #define uint unsigned int uchar receive=0; uchar mima ={0x01,0x02,0x03,0x04,0x05,0x06}; uchar receive_LY ={0x00,0x02,0x03,0x04,0x05,0x05}; uchar send=0xff; sbit out1=P1^0; sbit out2=P1^1; s
[单片机]
51单片机MLX90614非接触红外测温程序
这个模块采用I2C通讯,只需要接两个上拉电阻,就可以了,还是很好用的。 单片机源程序如下: #include at89x52.h #include intrins.h //************************************ #define uint unsigned int #define uchar unsigned char #define Nack_counter 10 //************** 端口定义************** //LCD 控制线接口 uchar flag1; sbit RS=P0^7; sbit RW=P0^6; sbit LCDE=P0^5;
[单片机]
使用C51单片机的一些误区和注意事项
1) C忌讳绝对定位。 常看见初学者要求使用_at_,这是一种谬误,把C当作ASM看待了。在C中变量的定位是编译器的事情,初学者只要定义变量和变量的作 用域,编译器就把一个固定地址给这个变量。怎么取得这个变量的地址?要用指针。比如unsigned char data x;后,x的地址就是&x, 你只要查看这个参数,就可以在程序中知道具体的地址了。所以俺一看见要使用绝对定位的人,第一印象就是:这大概是个初学者。 2) 设置SP的问题。 原因和1差不对,编译器在把所有变量和缓冲区赋予地址后,自动把最后一个字节开始的地方,作为SP的开始位置,所以初学者是不必 要去理会的。这体现C的优越性,很多事情C编译时候做了。 3) 用C的主程序结构
[单片机]
51单片机累计中断次数使LED灯闪烁
一、使用proteus绘制简单的电路图,用于后续仿真 二、编写程序 /******************************************************************************************************************** ---- @Project: LED ---- @File: main.c ---- @Edit: ZHQ ---- @Version: V1.0 ---- @CreationTime: 20200505 ---- @ModifiedTime: 20200505 ----
[单片机]
C51/C52单片机的中断(EXTI)介绍(一)
一、什么是中断 打断:打断当前做的事情,去执行中断函数里的程序,执行完过后回来接着执行原来未执行完的程序。如下图所示: 二、中断源及中断号 注意:写中断服务函数时,中断源与中断号要一一对应,否则不能进入中断服务函数,比如: void Timer0IRQ(void) interrupt 1 //1就是中断号,默认工作组0 格式如下: void 函数名(void) interrupt 中断号 using 工作组 { 中断服务函数内容; } 三、中断相关寄存器介绍 1、中断允许控制寄存器IE 2、扩展中断控制寄存器XICON(STC89C52RC) 四、中断优先级
[单片机]