一些关于单片机的问题,求高手解答

5、访问外部 RAM 单元可以采用哪些寻址方式? 6、访问外部程序存储器可以采用哪些寻址方式?7、对于 80C52 单片机内部 RAM 还存在高 128 字节,应采用何种 方式访问?

第1个回答  2012-09-26
5.......数组指定了外部ram地址后,把定义数组和赋初值语句分成两个语句写就可以了:
exp:
unsigned char xdata Data0[48]_at_ 0x0000;
Data0[0]=x;Data0[1]=x;Data0[2]=x;Data0[3]=x;
个人觉得完全没有必要赋初值,需要写入数据的时候直接写入就可以了,如果是作为常量使用那就不用这种声明了。
6.....存储器一般都有WR,RD,CS线以及地址端口、数据端口,有些数据地址端口复用,有些分开。看这些存储器的datasheet就会明白如何访问他们内部的数据。例如读出外部ram地址为0x0001里的数据(假设有这个地址),那么就WR置高,CS置低,地址线上输出0x0001,那么CPU的数据线就可以等到需要的数据了,这种情况下CPU的I/O只是做普通的I/O口。但是一般单片机和ARM都能够把I/O选择作为外部存储器的访问口,这时只要根据datasheet里的说明,把相应的线连上,CPU就能够根据你的指令自动在时序上配合,使得访问外部设备就像访问内部ram一样,这样做的好处就是节省CPU时间。
7...................................
unsigned char 后面加 idata 就可以了
第2个回答  2012-09-26
5、访问外部 RAM 单元可以采用哪些寻址方式?
寄存器间接寻址。
寄存器可用:DPTR、R0、R1。
指令格式:
MOVX A, @DPTR
MOVX @DPTR, A
MOVX A, @Ri
MOVX @Ri, A

----------------------
6、访问外部程序存储器可以采用哪些寻址方式?
变址寻址。
指令格式有两种:
MOVC A, @A + PC
MOVC A, @A + DPTR
----------------------
7、对于 80C52 单片机内部 RAM 还存在高 128 字节,应采用何种 方式访问?
对于单片机内部 RAM 的高 128 字节,应采用寄存器间接寻址方式。

指令格式:

MOV A, @Ri
MOV @Ri, A本回答被网友采纳
第3个回答  2012-09-26
5.访问片外RAM只有寄存器间接寻址MOVX A,@DPTR,MOV A,@RI,MOV @DPTR.A,MOV @RI,A,只有这四个指令
6.
1. MOV AX, ES:[1000H]源操作数的寻址方式是? 直接寻址
2. MOV AX, BAH[DI]源操作数的寻址方式是? 寄存器相对寻址
3. MOV AX, COUNT[BX]源操作数的寻址方式是? 寄存器相对寻址
4. MOV AX, COUNT[AX]源操作数的寻址方式是?
MOV AX, COUNT[BX]寄存器相对寻址,MOV AX, COUNT[AX]是错的

5. MOV [AX], COUNT[BX][DI]源操作数的寻址方式是? 相对基址变址寻址
6. MOV [BX], COUNT[BX][DI]源操作数的寻址方式是? 相对基址变址寻址
7. MOV AX, COUNT[BX][BP]源操作数的寻址方式是? 错的
8. MOV AX, COUNT[BX][SI]源操作数的寻址方式是?相对基址变址寻址

7.必须采用寄存器间接寻址
第4个回答  2012-09-26
5. 访问外部 RAM 单元可以采用以下几种寻址方式
MOVX A,@R0
MOVX A,@R1
MOVX A,@DPTR
MOVX @R0,A
MOVX @R1,A
MOVX @DPTR,A

6. 访问外部程序存储器可以采用以下几种寻址方式
MOVC A, @A+DPTR
MOVC A, @A+PC

7. 对于 80C52 单片机内部 RAM 还存在高 128 字节,应采用以下几种方法
MOV A,@R0
MOV A,@R1
MOV @R0,A
MOV @R1,A
MOV @R0,#data 立即数到R0
MOV @R1,#data
MOV @R0,direct 直接地址单元中的数据到R0
MOV @R1,direct
相似回答