单片机:

 STC单片机采取EEPROM的模式而不采用FLASH.
裸机程序指令就在Flash(Flash memory)中存放,而数据就放在了RAM中(flash的写入次数有限制,同时它的速度和RAM还是差很多)。更广泛说,在单片机上RAM存放data段、bss段、堆栈段;ROM(EPROM、EEPROM、Flash等非易失性存储设备)存放代码,只读数据段。本质上说,这和PC上程序都在RAM中存放是一样的,PC 上是操作系统规定了可读与可写,而单片机上是依靠不同的存储设备区分了可读与可写。当然现在的Flash是可读写的,如果Flash没有写入次数限制,速度又可以和RAM相差不多,单片机上只有Flash了。
对单片机编程后,程序的代码段、data段、bss段、rodata段等都存放在Flash中。当单片机上电后,初始化汇编代码将data段、bss段、复制到RAM中,并建立好堆栈,开始调用程序的main函数。以后,便有了程序存储器,和数据存储器之分,运行时从Flash(即指令存储器,代码存储器)中读取指令 ,从RAM中读取与写入数据。RAM存在的意义就在于速度更快。
第一步:连接编程器,打开编程器电源,在编程器的计算机端软件环境中,将器件选择MCU类型,型号列表中如果有STC89C51RC,那最好,如果没有,只好建议选择ATMEL 89C51试一试,设置好后,将单片机芯片按照编程器的摆放要求(一般在编程器表面有芯片的摆放示意图),插入到管脚插中,压上管脚扣,利用软件读出器件内的程序代码(二进制),保存成HEX格式的文件。第二步:在仿真器的计算机端软件中,利用反汇编功能,打开刚才保存的HEX格式文件,如果单片机内的程序在编译时设置了允许注释,那么,您可以很快得到原程序代码(汇编语句),如果没有注释,那只好根据反汇编的出来的语句(汇编代码),去查询指令代码表,人工翻译出来,对一些跳转地址,可以自己定义成特定的标号。说明:一般来说,根据对方的硬件电路图,产品的使用说明书,即可分析出软件功能

单片机:指令寄存器IR及指令译码器ID

程序计数器(PC)
由两个8位计数器PCH\PCL组成
PC是程序的字节地址计数器,PC内容为将要执行的指令地址
改变PC内容,改变执行的流向
PC可对64KB ROM直接寻址,也可对89C51片内ROM寻址

由程序计数器(PC)中的内容指定ROM地址
取出来的指令经IR送至ID
由ID对指令译码产生一定序列的控制信号,以执行指令所规定的操作

可编程全 双工串行口(串行通信)

电源线:VCC(+5V) 40     VSS(地)20     
18 XTAL2   19 XTAL1 接晶振
复位引脚:RST  9
EA 访问程序存储控制信号  31
PSEN:外部ROM读选能信号 29
ALE:地址锁存控制信号30
P3第二功能口:P3.0 RXD  P3.1 TXD P3.2 INT0  P3.3 INT1  P3.4 T0 P3.5 T1  P3.6 WR  P3.7 RD

冯诺依曼:一套地址总线 数据总线
哈佛结构:一套地址总线 数据总线分时复用
现在的单片机:RAM ROM分离,但采用分时复用地址总线和数据总线,用movc读ROM ,用mov movx读RAM
改进的哈佛结构
片内ROM 0000H-FFFFH 片外ROM 000H-FFFH
片内RAM 0000H-FFFFH 片外RAM 00H-FFH
各类存储器分别编址
EA=1:4KB以内的地址在片内,大于4KB的地址在片外,两者共同构成64KB
EA=0:片内ROM被禁用。全部64KB地址都在片外ROM
ROM:0000H主程序跳转指令 主程序入口地址
0003H INT0中断跳转指令 中断程序入口地址
000BH T0中断跳转指令 0013H INT1中断跳转指令
001BH T1中断中转指令 0023H RI/TI中断跳转指令
0030H 主程序指令
有专门位操作指令 字节操作指令

ROM(Read Only Memory):只读存储器
内:以程序计数器PC作为16位指针,没每读一字节,(PC)+1->PC
有些指令有修改PC的功能,例如转移类指令和MOVC指令

外:从PC取出当前ROM的16位地址,分别由P0口(低8位)和P2口(高8位)同时输出。当信号有效时,外ROM将相应地址存储单元中的内容送至数据总线(P0口),CPU读入后存入指定单元

 

 

 

 

 

 

 

 

单片机读取ROM保存成TXT

posted @ 2021-08-12 21:03  myrj  阅读(408)  评论(0编辑  收藏  举报