湖工单片机实验报告

更新时间:2023-04-22 16:30:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

厚德博学 和而不同

单片机与应用技术实验

学 院: 电气与信息工程学院 专 业: 电气工程及其自动化 年 级: 学 号:

学生姓名: 指导教师:

二〇一三 年 一 月 四 日

实验一 存储器读写

一、实验目的:

1、掌握寄存器、存储器读写等汇编指令; 2、掌握编程软件编辑、编译、调试等基本操作; 3、学习简单程序的基本调试方法。

二、实验内容:

将70H-7FH16个字节单元的数据复制到片外存储器2000H开始的地址单元中,程序清单如下:

ORG 0000H

SJMP START ORG 0030H START:MOV R1,#10H MOV R0,#70H MOV DPTR,#2000H MOV 70H,#01H MOV 71H,#02H MOV 72H,#03H MOV 73H,#04H MOV 74H,#05H MOV 75H,#06H MOV 76H,#07H MOV 77H,#08H MOV 78H,#09H MOV 7AH,#0AH MOV 7BH,#0BH

MOV 7CH,#0CH MOV 7DH,#0DH MOV 7EH,#0EH MOV 7FH,#0FH LOOP:MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ R1,LOOP END

三、实验报告

(1)、说明实验操作的基本步骤;

1.打开伟福或者Keil,本报告中使用的是伟福。进行相关参数的设置,选择仿真器。

2.选择文件菜单下新建命令,在新建页面的空白处输入程序,输入完毕后选择文件菜单下的保存命令,文件的后缀名需要保存为 “.ASM ”格式。

3

.选择项目菜单下编译指令,软件下方会出现

“ .BIN ”和“ .HEX ”文件,如有错误,下方会出现Error字样,双击该处,相应的程序会变成红色,修改之后重新进行编译,知道没有错误。

4.单击左侧对话框中的Watch中可以添加观察项,选择执行菜单下,添加观察项的命令,填入2000H,缺省方式前面的勾取消,存储区域选择XDATA。再选择执行菜单下的全速运行,观察左侧对话框中XDATA选项卡的变化,如果出现问题也可选择但不运行,每次按下F8会运行一步,便于检查错误。

5、为每一条汇编指令写出中文注释;

ORG 0000H ;伪指令

SJMP START ;跳转到START处 ORG 0030H ;伪指令

START:MOV R1,#10H ;寄存器R1送入10 MOV R0,#70H ;寄存器R0送入70 MOV DPTR,#2000H ;DPTR中送入2000 MOV 70H,#01H ;给70H地址中送数01 MOV 71H,#02H ;71H地址中送入02

. . .

. . .

MOV 7FH,#0FH ;71H地址中送入0F

LOOP:MOV A,@R0 ;将70H地址中的数送给A

MOVX @DPTR,A ;将A的数送到片外2000H中 INC R0 ;R0内容加一 INC DPTR ;DPTR内容加一 DJNZ R1,LOOP ;R1不为0就转到LOOP END ;结束

3、记录下程序单步运行时,寄存器(R0、R1)、累加器(A)、程序状态字(PSW)、内部存储器(70H—7FH单元)、外部存储器(2000H—200FH单元)的数据变化。 R1的值从10减到0;R0的值从70加到7F;A的值从1到F;内部存储器70H到7FH单元中的内容被复制到片外以2000H为首地址的单元中。

四、配分、评分标准(参考)

实验二 数据排列

一、实验目的

熟悉单片机汇编指令系统,掌握汇编程序设计方法。

二、实验内容

编写并调试一个排序子程序,其功能为用冒泡法将内容RAM中几个单字节无符号的正整数,按从小到大的次序重新排列。

三、实验程序框图

实验参考程序; ORG 09B0H

7B50 QUE: MOV R3,#50H

EB QUE1: MOV A,R3 ;指针送R0 F8 MOV R0,A

7F0A MOV R7,#0AH ;长度送R7 C200 CLR 00H ;标志位为0 E6 MOV A,@R0 08 QL2: INC R0 FA MOV R2,A C3 CLR C 8622 MOV 22H,@R0

B52201 CJNE A,22H,QL3 ;相等吗? D3 SETB C EA QL3: MOV A,R2

4006 JC QL1 ;大于交换位置 D200 SETB 00H C6 XCH A,@R0 18 DEC R0 C6 XCH A,@R0

08 INC R0 ;大于交换位置 E6 QL1: MOV A,@R0 DFEB DJNZ R7,QL2

2000E1 JB 00H,QUE1 ;一次循环中有交换继 80FE LOOP: SJMP LOOP ;无交换退出

四、实验步骤

把用keil软件将单片机RAM 50H~5AH中放入不等的数据,并通过keil软件的数据观察窗口观察运行本实验程序后50H~5AH中内容是否按从小到大排列。

1、实验程序汇编指令及中文注释; ORG 0000H ;程序开始地址 MOV 50H,#12H ;随机生成10个数

MOV 51H,#15H MOV 52H,#2H MOV 53H,#8h MOV 54H,#56H MOV 55H,#51H MOV 56H,#33H MOV 57H,#21H MOV 58H,#14H MOV 59H,#22H MOV 5AH,#18H CLR 00H

;清交换标志位 SETB PSW.3 ;工作寄存器选择

SETB PSW.4

SUB: MOV R3,#0AH ;11个数据循环次数 mov R0,#50H ;数据存放区首址 MOV A,@R0 ;取前数

L2: INC R0 ;取下一地址中的值 MOV R2,A ;保存前数 SUBB A,@R0 ;相邻两数相减 MOV A,R2 ;恢复前数 JC L1 ;顺序则继续比较 SETB 00H ;逆序则建立标志位 XCH A,@R0 ;前数与后数交换 DEC R0 ;长度减1 XCH A,@R0

INC R0 ;仍指向后数单元 L1: MOV A,@R0

DJNZ R3,L2 ;依次重复比较 JB 00H,SUB ;交换后重新比较 RET END

;结束

2、排序结果(抓图)。

程序开始前数据

程序执行后数据

六、配分、评分标准(参考)

实验三 I/O端口操作

一、实验目的:

1、掌握I/O端口读写等基本汇编指令;

2、掌握单片机最小系统硬件电路设计及仿真软件PROTEUS仿真、调试等基本操作方法。

二、实验仪器设备

1、PC机,1台 2、WAVE软件开发系统 3、仿真软件PROTEUS

三、实验内容:

编写一段汇编程序,使与单片机P0.3口相连的发光二极管循环点亮,亮灭时间必须大于0.5秒(肉眼能清晰分辨二极管的亮灭变化)。要求用PROTEUS软件完成仿真电路设计,并进行功能验证。

四、实验步骤:

1、使用Protues完成硬件仿真电路的绘制。

2、用WAVE软件完成发光二级管亮灭程序,用延时子程序设计一段时间延时,编译通过后生成16进制文件(.HEX),加载到PROTEUS中仿真验证。

五、实验报告

1、PROTEUS仿真效果图;

2、实验程序汇编指令及中文注释;

ORG 0000H ;伪指令 LJMP START ;跳转到START ORG 0030H ;伪指令

START : SETB P0.3 ;P0.3置1

ACALL DELAY ;调用延时 CLR P0.3 ;P0.3清零 ACALL DELAY ;调用延时 LJMP START ;跳转到START

DELAY: MOV R0,#05H ;延时程序 R0赋值5,下面程序走5遍就是0.5秒 LOOP1: MOV R1,#200 ;0.1秒的延时程序 LOOP2: MOV R2,#126 LOOP3: DJNZ R2,LOOP3 DJNZ R1,LOOP2 DJNZ R0,LOOP1

RET ;调用结束返回

SJMP $ ;死循环,防止程序跑飞 END ;结束

六、思考题:

单片机晶振设为12MHZ,试计算自己编写的延时子程序的精确延时时间?

实验四 定时中断

一、实验目的:

1、熟悉单片机定时器工作原理; 2、掌握定时器定时控制的编程方法。

二、实验基本原理

1、定时/计数器工作原理

INT1 引脚

图2.11 定时/计数器原理图

(1)定时时间的求取。

例:设单片机晶振频率为12MHZ,定时时间为1ms,求时间常数?

定时器计数周期=12/fosc=1us,1ms/1us=1000, 因此,计数初值=65535+1-1000=64536=FC18H (2)定时/计数器初始化

三、实验内容:

编写一段汇编程序,使单片机P1.0口输出一段时钟周期为2ms的方波。要求采用T1中断方式,工作方式1。用PROTEUS软件完成仿真电路设计,并用软件中自带的示波器观察输出结果。

四、实验操作步骤:

1、硬件电路设计

图2.12 硬件电路设计

2、单片机晶振频率为12MHZ,用WAVE软件编写P1.0引脚上输出周期为2ms的方波程序。编译通过后生成16进制文件(.HEX),加载到PROTEUS中仿真验证。

3、PROTEUS仿真验证。

五、实验报告

1、PROTEUS仿真效果图;

2、实验程序汇编指令及中文注释;

ORG 0000H SJMP START ORG 0013H LJMP IOP0 ORG 0030H START: MOV SP,#60H MOV TMOD ,#10H START

T1计时器中断入口地址 ;跳转到IOP0 ;伪指令

;将堆栈指针放到60H处

;T1计时器工作方式1

;伪指令 ;跳转到 ;伪指令,

MOV TH1 ,#0FCH ;赋初值 MOV TL1 ,#18H SETB P1.0

;P1.0置1

SETB EA ;打开中断允许总控制位 SETB TR1 ;启动计时器T1

SETB ET1 ;打开定时器1的中断允许控制位

IOP0: CLR EA ;关闭中断

MOV TH1 ,#0FCH ;重新赋初值 MOV TL1 ,#18H

CLR P1.0 ;P1.0清零 SETB EA ;打开中断开关 RETI ;调用结束 END ;结束

六、配分、评分标准(参考)

实验五 十字路口交通灯

一、实验目的:

1、掌握ISP在线调试的方法; 2、掌握硬件实验箱的使用方法; 3、熟悉汇编程序基本格式与编程方法。

二、实验仪器设备:

1、PC机

2、PROTEUS仿真环境。

三、实验内容:

编写十字路口交通灯控制程序,控制红、黄、绿交通指示灯的亮灭,模拟十字路口交通灯控制。参考程序如下:

PORT EQU 0CFA0H ;片选地址CS0 CSEG AT 0000H LJMP START CSEG AT 4100H

START: MOV A,#11H ;两个红灯亮,黄灯、绿灯灭 ACALL DISP

;调用273显示单元(以下雷同)

ACALL DE3S ;延时3秒

LLL: MOV A,#12H ;东西路口绿灯亮;南北路口红灯亮 ACALL DISP

ACALL DE10S ;延时10秒

MOV A,#10H ;东西路口绿灯灭;南北路口红灯亮 ACALL DISP

MOV R2,#05H ;R2中的值为黄灯闪烁次数

TTT: MOV A,#14H ;东西路口黄灯亮;南北路口红灯亮 ACALL DISP

ACALL DE02S ;延时0.2秒

MOV A,#10H ;东西路口黄灯灭;南北路口红灯亮 ACALL DISP

ACALL DE02S ;延时0.2秒

DJNZ R2,TTT MOV A,#11H ACALL DISP

ACALL DE02S MOV A,#21H ACALL DISP

ACALL DE10S MOV A,#01H ACALL DISP

MOV R2,#05H GGG: MOV A,#41H ACALL DISP

ACALL DE02S MOV A,#01H ACALL DISP

ACALL DE02S DJNZ R2,GGG MOV A,#03H ACALL DISP

ACALL DE02S JMP LLL ;返回TTT,使东西路口;黄灯闪烁五次 ;两个红灯亮,黄灯、绿灯灭 ;延时0.2秒

;东西路口红灯亮;南北路口绿灯亮 ;延时10秒

;东西路口红灯亮;南北路口绿灯灭 ;黄灯闪烁五次

;东西路口红灯亮;南北路口黄灯亮 ;延时0.2秒

;东西路口红灯亮;南北路口黄灯灭 ;延时0.2秒

;返回GGG,使南北路口;黄灯闪烁五次 ;两个红灯亮,黄灯、绿灯灭 ;延时0.2秒 ;转LLL循环

本文来源:https://www.bwwdw.com/article/9v2q.html

Top