武汉大学计算机学院 嵌入式实验报告

  • 格式:doc
  • 大小:259.00 KB
  • 文档页数:25

下载文档原格式

  / 25
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

武汉大学计算机学院

课程实验(设计)报告

课程名称:嵌入式实验

专业、班: 08级

姓名:

学号:

学期:2010-2011第1学期

成绩(教师填写)

实验一80C51单片机P1口演示实验

实验目的:

(1)掌握P1口作为I/O口时的使用方法。

(2)理解读引脚和读锁存器的区别。

实验内容:

用P1.3脚的状态来控制P1.2的LED亮灭。

实验设备:

(1)超想-3000TB综合实验仪 1 台

(2)超想3000仿真器1 台

(3)连线若干根

(4)计算机1台

实验步骤:

(1)编写程序实现当P1.3为低电平时,发光管亮;P1.3为高电平时,发光管灭。

(2)修改程序在执行读P1.3之前,先执行CLR P1.3,观察结果是否正确,分析在第二种情况下程序为什

么不能正确执行,理解读引脚和读锁存器区别。

实验结果:

(1)当P1.3为低电平时,发光管亮;P1.3为高电平时,发光管灭。

(2)不正确。因为先执行CLR P1.3之后,当读P1.3的时候它的值就一直是0,所以发光管会一直亮而不

会灭。单片机在执行从端口的单个位输入数据的指令(例如MOV C,P1.0)时,它需要读取引脚上的数据。此时,端口锁存器必须置为‘1’,否则,输出场效应管导通,回拉低引脚上的高输出电平。

系统复位时,会把所有锁存器置‘1’,然后可以直接使用端口引脚作为输入而无需再明确设置端口锁存器。但是,如果端口锁存器被清零(如CLR P1.0),就不能再把该端口直接作为输入口使用,除非先把对应的锁存器置为‘1’(如 SETB P1.0)。

(3)而在引脚负载很大的情况(如驱动晶体管)下,在执行“读——改——写”一类的指令(如CPL P1.0)

时,需要从锁存器中读取数据,以免错误地判断引脚电平。

实验二 80C51单片机RAM存储器扩展实验

实验目的:

学习RAM6264的扩展

实验内容:

往RAM中写入一串数据,然后读出,进行比较

实验设备:

(1)超想-3000TB综合实验仪 1 台

(2)超想3000仿真器1 台

(3)连线若干根

(4)计算机1台

实验步骤:

(1)根据流程图设计程序。

(2)RAM_CS插孔连到译码输出P2.7插孔,P1.0连接到L0。

(3)调试运行程序RAM.ASM。对62256进行读写。若L1灯闪动,表示62256RAM读写正常。一直亮说明扩

展数据存储器有损坏。

(4)读写正确数码管显示“6264—0”。若读写错误,数码管显示“6264—E”。

实验结果:

程序框图:

连线图案:

程序解读:

ORG 0000H

AJMP START ;;无条件跳转到START

ORG 0030H ;;START的首地址

START:

MOV SP,#60H ;;设置堆栈段,是个过程化语句,因为堆栈的前端一般有其他内容,

; ;此程序用不到。

MOV DPTR,#0000H ;;DPTR是数据指针寄存器。扩展数据存储器62256的地址,

;;从0000H开始测试,共32K ,但下面语句只测试了前4K

MOV R6,#0FH

MOV A,#55H ;;测试字,本实验只用了55H

;;/////////////////

RAM1: MOV R7,#0FFH

RAM2: MOVX @DPTR,A ;;MOVX读写数据存储器,把55H写到0000H

CLR P1.0 ;;清零,即为暗状态

INC DPTR ;;

DJNZ R7,RAM2 ;;R7减1,如不为零则跳转,内循环!!256

DJNZ R6,RAM1 ;;R6减1,如不为零则跳转,外循环!!16

;;共测试4K

MOV DPTR,#0000H ;;从新给地址0000H ,下步读

MOV R6,#0FH ;;写多少,读多少

;;////////////////////////

RAM3: MOV R7,#0FFH

RAM4: MOVX A,@DPTR

CJNE A,#55H,RAM6 ;;比较前两个操作数,不相等则跳转

SETB P1.0 ;;亮

INC DPTR

DJNZ R7,RAM4

DJNZ R6,RAM3

;;////////////////////

RAM5: CLR P1.0

CALL DELAY ;;延迟, 实现闪烁!!

SETB P1.0

CALL DELAY

SJMP RAM5 ;;是个死循环

;;////////////////////

DELAY: MOV R5,#0FFH

DELAY1: MOV R4,#0FFH

DJNZ R4,$

DJNZ R5,DELAY1

RET

RAM6: SETB P1.0 ;;1.0口常亮,相当于设置了一个错态!!

SJMP RAM6 ;;短转移,无限循环!!

END

思考与改进:

改进程序清单:

OUTBIT equ 0e101h

CLK164 equ 0e102h ; 段控制口(接164时钟位)

DAT164 equ 0e102h ; 段控制口(接164数据位)

LEDBuf equ 40h

IN equ 0e103h

ORG 0000H

mov sp,#60h

MOV DPTR,#0e100H ;8155初始化

MOV A,#03H

MOVX @DPTR,A

START: MOV DPTR,#8000H ;往6264的8000H-9FFFH单元送入#55H MOV A,#55H