数据传送实验

   开始学习单片机了,主要用汇编语言书写代码,这是一些学习中的实验,与大家一起分享,还望高人多多指教。


数据传送实验

一、上机目的及内容

1、熟悉KeilC51 Uvision的使用方法。

2、掌握89C51内部RAM和外部RAM的数据操作,了解这两部分RAM存贮器的特点和应用。

3、内容:将8051内部RAM30H3FH置初值A0HAFH,然后把30H3FH单元内容传送到外部RAM1800H180FH1800H180FH内容传送到8051内部RAM40H4FH

二、实验原理及本技术路线图(方框原理图或程序流程图)

89C51单片机具有极丰富的数据传送指令,能够实现多种数据传送操作,给程序设计带来了极大方便。

1、内部RAM数据传送

89C51内部RAM128字节(00H7FH)包含四个工作寄存器区(00H1FH)、位地址空间(20H2FH)、堆栈区,可用的传送指令多达16条。因此,数据在内部128字节里传送就显得灵活方便。

内部RAM 031个单元可作通用工作寄存器ROR7,被划分为四个寄存器块,由程序状态字PSW中的RSIRSO选择,其对应关

RSI           RSO

0           0       0区,OOHO7H被看是ROR7

0                1              1区,08H0FH被看是ROR7

1                 0              2区,10H17H被看是ROR7

1                 1              3区,18H1FH被看是ROR7

89C51单片机上电复位后自动选0区,此后可通过修改PSW中的RSIRSO来选择其它寄存器区。

数据在内部RAM128字节内传送指令共16条,它们是:

MOV    ARn

MOV    A,  direct

MOV    A,  @Ri

MOV    A,  #data

MOV      Rn, A

MOV      Rn, direct

MOV      Rn, #data

MOV      direct, A

MOV      direct, Rn

MOV      direct1, direct2

MOV      direct, @Ri

MOV     direct, #data

MOV     Ri, A

MOV     Ri, direct

MOV     Ri, #data

2、外部RAM的数据传输

89C51单片机采用当前工作寄存器的R0R1作间接寻址寄存器。可寻址256个单元,8位的地址和数据均由P0口分时输入/输出。采用16位数据指针DPTR间址,最多可寻址片外64K字节的RAMI/O,低8位地址(DPL)由P0口进行分时使用,P2口输出高8位地址,当P2口输出高8位地址时,P2口专用寄存器保存其原内容不变。

在有些情况下,可混合使用上述寻址方法。可用数据指针通过P2口来寻址大容量外部RAM,也可先由P2口输出高字节地址,R0R1内容作为8位地址由P0口输出。

    对外部RAM仅有6条数据传送指令,它们是:

MOVX   A ,  @R0

MOVX   A,  @R1

MOVX  @R0,  A

MOVX   A,  @DPTR

MOVX   @DPTR, A

 

 

三、所用仪器、材料(设备名称、型号、规格等或使用软件)

KeilC51 Uvision89C51单片机

四、实验方法、步骤(或:程序代码或操作过程)

   1.程序代码:

   mov r4,#16

   mov r0,#30h

   mov a,#0d0h

s:    mov @r0,a

   inc a

   inc r0

   djnz r4,s

   mov r4,#16

   mov r0,#30h

   mov dptr,#1800h

s1:    mov a,@r0

   movx @dptr,a

   inc dptr

   inc r0

   djnz r4,s1

   mov r4,#16

   mov dptr,#1800h

   mov r0,#40h

s2:    mov @r0,a

   movx a,@dptr  

   inc dptr

   inc r0

   djnz r4, s2

   jmp $

 

   end

五、实验过程原始记录( 测试数据、图表、计算等)

数据传送实验

数据传送实验

六、实验总结

在这次实验中,熟悉了KeilC51 Uvision软件的使用,在编程时要注意各个步骤间的逻辑关系,使用正确的指令,熟悉了MOVX,INC,DJNZ等指令的用法。

七.思考

实验程序最后一条指令HERESJMP HERE用意何在?

答:程序在该指令处暂停,起到延时的作用。