1. 单片机编程中存10个数,要求存在片外RAM,第一个序号为30如何编程
MEM:
MOVR0,#30H
MOVR1,#40H
MOVR2,#10
LOP:
MOVA,@R1
MOVX@R0,A
INCR0
INCR1
DJNZR2,LOP
RET
2. (单片机程序编写)试编写程序,找出外部ram2000H~200FH数据区中的最小值,并放入R2中。
ORG 0000H
LJMP STA
ORG 0050H
STA:
MOV R0,#30H
MOV R1,#50H
MOV R2,#10H
MOV R3,#16
MOV DPTR,#2000H
LOOP1:
MOV A,R2
MOV @R0,A ;10H~1FH分别赋值给30H~3FH
MOV A,@R0 ;
MOVX @DPTR,A ;30H~3FH分别传送到2000H~200FH
MOVX A,@DPTR ;
MOV @R1,A ;2000H~200FH分别传给50H~5FH
INC R0
INC R1
INC R2
INC DPTR
DJNZ R3,LOOP1
SJMP $
END
3. 单片机编程:将存于外部RAM 1000H单元的字节二进制数(小于64H)转换为十进制数,以两位BCD码的形式存于内R
unsigned char *P1;
unsigned int *P2;
unsigned char x,y;
P1=0x1000;
P2=0x20;
if((*P1)<64)
{
x=*P1/10;
y=*P1%10;
*P2=x*16+y;
}
4. 单片机对外部RAM的操作
不需要。
P2.7是地址信号,根据地址范围确定。
通常的做法应该把P2.3到P2.7的信号用逻辑芯片处理后生成唯一的芯片选择信号(CE),这样6116在64K的地址范围内有唯一的地址。如图这种做法,则忽略了P2.3到P2.6,那么同一个RAM单元在64K地址范围内,会有多个地址与其对应,这些地址的特点就是P2.7,即16位地址的最高位是0,中间5位忽略。
5. 一个具有外扩RAM的单片机系统,怎么编写ROM和RAM的自检程序.
我觉得首先应该检RAM(内部通用寄存器(不包括SFR——有些不可写)、内部RAM、外部RAM );然后检测ROM;最后检测EEPROM。
一. RAM检测:
首先检测未使用的RAM区;
检测正常后,再把使用的RAM区数据全部复制到未使用区,再检测使用区是否正常;
如正常,从新将数据复制回来;
再对比两个数据区的数据,如果一致,则RAM检验完毕;
二. ROM检测:
计算ROM区的CRC校验值和ROM内烧录芯片时的CRC比较,一致则通过;
三. EEPROM检测:参照RAM检测。
6. 单片机: 编写程序,把外部RAM的1000H~10FFH区域内的数据逐个搬到从2000H单元开始的区域。
START:MOV R0 , #2000H
MOV DPTR, #1000H
MOV R7 , #0FFH
LOOP: MOVX A , @DPTR
MOV @R0 , A
INC R0
INC DPTR
DJNZ R7 , L00P
SJMP $
END
7. 把单片机外部RAM4800H-480FH单元内容转移到片外RAM5800H-580FH中,该如何用汇编语言编程
嘿嘿 可以采用2种方式 来实现。
1 可以先将外部RAM4800H-480FH单元内容转移到单片机片内数据存储器的缓冲区;
再片内数据存储器的缓冲区内容传送给片外RAM5800H-580FH单元。
(可以使用双指针 DPRT做片外数据存储器指针 R0做片内数据存储器指针)
优点是编程实现起来比较容易。
2 直接将单片机外部RAM4800H-480FH单元内容转移到片外RAM5800H-580FH中;
只能使用单指针DPRT,即DPRT既要做片外数据存储器的源操作数指针 同时也要
做片外数据存储器目的操作数的指针;要来回切换,源操作数地址和目的操作数都
需要保存。
缺点:编程实现起来比较复杂,但不占用单片机的内部数据缓冲器。
呵呵 满意 就选满意回答 具体还有不清楚的 可以找我
8. 单片机编程:将外部RAM0700H高低四位相互交换
MOV DPTR .#0700H ;把地址赋值给指针
MOVX A,@DPTR;地址的内容赋值给A
SWAP A ;高低四位交换
MOVX @DPTR,A ;把结果送回0700H
9. 单片机原理 编写程序将外部RAM1009H单元内容加6后存储到外部RAM1010H中
ORG 0000H
MOV DPTR,#1009H
MOVX A,@DPTR
ADD A,#06H
MOV DPTR,#1010H
MOVX @DPTR,A
SJMP $
END