51单片机访问内RAM使用什么指令

作者&投稿:管婕 (若有异议请与网页底部的电邮联系)
89C51单片机访问外部数据存储器RAM、ROM,应该使用什么指令?~

汇编:
读写外部RAM用 MOVX
MOVX A,@DPTR ;读外部RAM
MOVX @DPTR,A ;写外部RAM
其中DPTR代表地址
MOVC片内片外都可以访问
MOVC A,@A+DPTR
当地址超过内部ROM地址后自动读取外部ROM
C语言:
包含
使用XBYTE读写外部RAM

XBYTE[0x001f]=0xff;//把0xff写入外部RAM 0x001f地址

unsigned char i;
i=XBYTE[0x001f];//读取外部RAM 0x001f地址的数据

使用CBYTE读写内/外部ROM
用法跟读写RAM一样

1.MOVX A,@Ri
指令名称:寄存器间接寻址外部RAM读指令
指令代码:E2H~E3H
指令功能:读外部RAM低256单元数据送累加器
字节数: 1
机器周期:2
2、MOVX A,@DPTR
指令名称:数据指针间接寻址外部RAM读指令
指令代码:E0H
指令功能:读外部RAM单元数据送累加器
操作内容:A1←((DPTR))
字节数: 1
机器周期:2
3、MOVX @Ri,A
指令名称:寄存器间接寻址外部RAM写指令
指令代码:F2H~F3H
指令功能:把累加器内容写入外部RAM低256单元
操作内容:(Ri)←(A),i=1,0
字节数: 1
机器周期:2
4、MOVX @DPTR,A
指令名称:数据指针间接寻址外部RAM写指令
指令代码:F0H
指令功能:把累加器内容写入外部RAM单元
操作内容:(DPTR)←(A)
字节数: 1
机器周期:2

内部ram分几个区
1.低128B 可以有 mov a,70h 直接寻址 取出70h地址的值

mov r0,#70 用r0或r1间址
mov a,@r0 取出70h的值
2.高128B只能用间址
mov r0,#90h 间址
mov a,@r0 取出90h的值
3.还有sfr(特殊功能寄存器)其地址与高128B重叠,为了区分只能用直接寻址
mov a,#90h 取也sfr区90h的值
其中有可位寻址的空间可以用
mov c,#20h 取也位寻址的20h的值,只是1bit


PIC单片机16f877a的端口A无法输入数字量
1. 检测按键的这条语句:if(SPEED_Button||TEMP_Button||MAX_Button||MIN_Button!=0)你写得太难理解了,或者是你写错了,不是你的本意。这条语句现在的意思就是:if(RA0||RA1||RA2||RA3!=0)描述一下就是:如果RA0,或者RA1,或者RA2,或者RA3!=0,注意4个按键之间是或逻辑关系,第4个还...

pic单片机引脚设置为ad输入时内阻很低,加了运放也不够,接上就会把电压...
给你一段寄存器配置的程序看看我用的是pic18系列 ADCON0=0x05;\/\/ 选择A\/D通道为RA1,A\/D转换器 \/\/ 处于工作状态,且使A\/D转换时钟为8tosc ADCON1=0X1D;\/\/ 转换结果右移,及ADRESH寄存器的高6位为"0"\/\/ 且把RA0(AN0)设置为模拟量输入方式 ADCON2=0XA4;TRISA1=1;\/\/ 设置RA1(AN1通道)...

pic单片机端口怎么定义
首先要设置IO可口为输出口:步骤:1.关闭所有AD\/IO复用口得AD功能(如果需要某个IO做AD口则将对应的bit置0)AD1PCFG = 0xFFFF; \/\/设置所有IO口为数字IO口,而非模拟IO口。2.设置相应的IO口为输出,这里假设用RA 的A0口来做数字输出口,RA的其他口为数字输入口。TRISA = 0xFFFE; \/\/b...

请问诸位PIC单片机高手:我有一个PIC16F877A芯片,用PICKIT2烧程序(一...
如果你是测量RA0~RA5,RE0~RE2端口出现这种情况,那么肯定是你没有在程序中对ADCON1寄存器进行初始化,因为PIC16F87X单片机的RA和RE端口默认是AD输入引脚,仅设置方向控制寄存器TRISA,TRISE是不够的

PIC单片机RA4有什么特殊性
1,RA4是作为I\/O输出的时候是没有驱动能力的,(漏极开路)如果你需要直接驱动一颗LED则把上拉电阻改为1K 2,RA4作为输出的时候需要事先设置PortA的方向寄存器TRISA,将其设置为输出 如果是汇编则事先要进入Bank1,然后再设置方向寄存器 例如:BSF STATUS, RP0 ; Select Bank1 MOVLW 0x00 ; 方向...

pic系列单片机用c语言编程时,让他执行A\/D转换的指令是什么?
在C语言里没有指令,只有语句,用C语言执行A\/D转换如下: \/\/A\/D转换初始化子程序 void adinitial(){ ADCON0=0x41; \/\/选择A\/D通道为RA0,且打开A\/D转换器 \/\/在工作状态,使A\/D转换时钟为8Tosc ADCON1=0X8E; \/\/转换结果右移,及ADRESH寄存器的高6位为"0"\/\/把RA0口设置为...

单片机 PIC16F676 用内部晶振 配置字怎么写
http:\/\/ww1.microchip.com\/downloads\/cn\/DeviceDoc\/40039C_cn.pdf 中文版手册 将rc0-2置为输出并置为高既可 TRISC=TRISC&0xf8;PORTC=TRISC|0x03;ra2置为输入,读取需要解码的电平 TRISA=TRISA|0x01;

PIC单片机中PORTA中引脚为什么以R开头 比如第一个引脚为RA0,这个R...
我觉得是这样的:早期的 I\/O 端口与内存在结构上是分开的,I\/O 口有独立的操作指令支持,所以用 PORT 的 P 起头。PIC 把 I\/O 作为 RAM 看待,所以用 R 开头。实际上 PIC 的 RAM 、I\/O 都是作为寄存器对待,R 表示寄存器 (Register) 说得通。

单片机等一些设备上的RB端口中的RB是什么意思,具体解释下
PIC单片机的输入\/输出端口由RA、RB、RC、RD、RD和RE共5个端口5个端口由33个I\/O位组成。类似于51的P0,P1,P2,P3。

pic单片机的ra4引脚怎么不输出高电平?
用c语言写的程序,不应该出这问题的,它会自动设置为I\/O模式 用汇编写,需要设置为I\/O模式

郊区15197384158: 51单片机访问内RAM使用什么指令
木倩消瘀: 内部ram分几个区 1.低128B 可以有 mov a,70h 直接寻址 取出70h地址的值 mov r0,#70 用r0或r1间址 mov a,@r0 取出70h的值 2.高128B只能用间址 mov r0,#90h 间址 mov a,@r0 取出90h的值 3.还有sfr(特殊功能寄存器)其地址与高128B重叠,为了区分只能用直接寻址 mov a,#90h 取也sfr区90h的值 其中有可位寻址的空间可以用 mov c,#20h 取也位寻址的20h的值,只是1bit

郊区15197384158: 51单片机访问不同存储器用什么指令 -
木倩消瘀: 访问内部RAM时,可以直接寻址 寄存器间接寻址,访问外部时用PC DPTR R0 R1寻址

郊区15197384158: 51单片机,使用汇编语言,访问内部数据存储单元时,使用什么指令 -
木倩消瘀: 51单片机访问内部数据存储单元指令是: 1、访问内部寄存器 MOV A,direct(比如30H) MOV direct,A MOV direct,direct MOV A,@R0 ADD A,direct ADDC A,dIrect SUBB A,direct 等等 2、访问内部扩展存储器 MOVX A,@R0 MOVX @R0,A MOVX A,@DPTR MOVX @DPTR,A

郊区15197384158: 51单片机访问片内数据存储器某单元的内容用c语言怎么写??? -
木倩消瘀: 方法1: char data *p; //定义一个指向片内RAM地址的指针 p = 0x30; //片内RAM地址为0x30 *p = 0x12; //向0x30内写入立即数0x12 方法2:#include <absacc.h> char x; x = DBYTE[0x30]; //将片内RANM地址0x30的内容赋给变量x DBYTE[0x30] = ...

郊区15197384158: 编写程序完成,51单片机片内RAM与片外RAM数据交换 -
木倩消瘀: 片内RAM的寻址的寻址方式有:立即数寻址、直接寻址、寄存器寻址、寄存器间接寻址和位寻址. 片外RAM的寻址方式只有间接寻址. 访问片外RAM只有寄存器间接寻址,MOVX A,@DPTR,MOV A,@RI,MOV @DPTR.A,MOV @RI,A,只有这四个指令,其它就没有了. 访问ROM(ROM不分片内片外)只有变址寻址了,MOVC A,@A+DPTR,MOVC A,@A+PC.其它也没有了.

郊区15197384158: 1、单片机读写外部RAM数据用( )指令 A、MOV B、MOVD C、MOVX D、MOVC
木倩消瘀: C MOV指令表示单片机内部的寄存器或者存储器之间相互传递数据(内部RAM);而MOVX则表示单片机内部的A累加器与片外的数据存储器传送数据.(这个是扩展的,51单片机只能扩展64K)(外部RAM);还有MOVC的指令,它们表示A向ROM(程序存储器)读取数据,因为程序存储器是固定的不可以写的,所以,A只能读数据,却不能向它写数据(访问ROM);换句话说MOVX和 MOVC是针对两种不同的存储器而言,一个是数据存储器,另一个却是程序存储器.由于内部和外部ROM的地址是连续的,故用MOVC一条指令即可;内部RAM和外部RAM地址有重合的,所以用MOV和MOVX加以区分.

郊区15197384158: 8051单片机内,片外存储器如何选择 -
木倩消瘀: 程序存储器通过(/EA) /Vpp引脚选择.若(/EA) =0,则允许使用片内ROM;若 (/EA)=1则允许使用片外ROM. 数据存储器通过指令区分:访问片内RAM采用MOV指令,访问片外RAM采用MOVX指令. 学习单片机必备:吴鉴鹰单片机开发板

郊区15197384158: 单片机的问题 -
木倩消瘀: 关于51单片机内存问题,一直是个疑惑大家的问题,因为51单片机是个很另类的单片机. 下面我给楼主讲解一下: 51单片机之所以另类,是因为,他寻址内存的空间,不是靠总线,是用指令的方式. 51单片机有以下几个内存模块组成: ROM...

郊区15197384158: mcs—51单片机数据存储器RAM分布情况,说明片内和片外如何区分 -
木倩消瘀: mcs—51单片机的数据存储器 RAM分布情况:片内,00H~7FH,共 128 字节; 片外,0000H~FFFFH,共 65536 字节,即 64K.如何区分:片内 RAM,是买来一片 51 单片机芯片时,里面自带的. 片外 RAM,需要另外再买几块 RAM 芯片,焊接到电路板上.用肉眼观察,立即就可以区分出来.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网