实验指导书-单片机V3 - 图文

更新时间:2024-01-28 06:00:01 阅读量: 教育文库 文档下载

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

《单片机原理及应用》

实验指导书

机械工程学院

杨大志 李 焕 邓 山

四川理工学院

2008年9月

目 录

前 言 ............................................................................................... 1 实验1 单片机数据区传送程序设计 .................................................. 2 实验2 数据排序实验 ........................................................................ 4 实验3 查找相同数个数 .................................................................... 6 实验4 P1口转弯灯实验 ................................................................... 7 实验5 工业顺序控制 ........................................................................ 9 实验6 8255控制交通灯 ................................................................. 11 实验7 A/D转换实验 ...................................................................... 14 实验8 D/A转换实验 ...................................................................... 16 实验9 电子时钟(定时器、中断综合实验) .................................. 18 附录1 DAIS-958PH+微机仿真实验系统简介 ................................. 24 附录2 MCS-51集成开发环境的使用简介 ...................................... 26 附录3 实验开发系统的字形/字位/键值表 ....................................... 27

I

前 言

单片机自20世纪70年代问世以来,已广泛地应用在各个方面。单片机技术开发和应用水平已成为一个国家工业化发展水平的标志之一。单片机课程是计算机基础课的延续,无论是对电类还是非电类专业,都是一门重要的必修的技术基础课,要求学生掌握有关单片机硬件、软件及接口设计的基本概念,使学生能够根据需求,能够设计出应用系统并为将来学习DSP、嵌入式微处理器打下良好的基础。

同时单片机属于应用设计类课程,其工程实践性很强,因此必须加强课程的实践环节。在保障必修实验的基础上,应尽量提供开放性实验和课程设计条件,给学生以实际题目,使其真正做到学以致用,提高学生的实际设计和动手能力,以适应社会对学生在单片机知识和实际设计能力方面的需求。

本书共有9个实验,前3个为软件实验,后6个为硬件实验。硬件实验须在Dais-958PH+实验箱上完成。

为达到理想的实践教学效果,务必清楚以下注意事项和要求:

一、注意事项

1. 实验前准备工作

(1) 明确实验目的、熟悉实验内容、掌握实验步骤、了解所用单片机实验开发系统及仪器设备的性能。

(2) 做好实验前预习和必要的准备(先编好程序),做到有的放矢。 2. 进入实验室后 (1) 熟悉所用的单片机实验开发系统及仪器设备,了解其外观、性能。 (2) 接线要简单、正确、明了,经老师复查后允许后才可通电。

(3) 通电瞬间,应注意仪器是否正常工作,不要只看开关,如有不正常现象,应立即断电查找原因。

3. 实验进行时

(1) 正常请况下,按规定步骤进行,读取数据,并及时记录。 (2) 各种操作要有目的进行,不可盲动。

(3) 实验完成后,经老师察看或签字,并把仪器、导线、工具清理、收拾完毕后,学生方可离开实验室。

二、实验报告内容和要求

1. 实验报告要求使用用学校统一实验报告纸。

2. 实验内容应包括:实验目的、设备、原理、步骤简述、原始数据、结果和分析以及程序清单等。

3. 每个实验后的思考题必须完成。

4. 对实验中发现的问题应加以讨论,并提出自己的改进意见和要求、希望等。

1

实验1 单片机数据区传送程序设计

一、实验目的

1. 掌握汇编语言程序设计和调试方法。

2. 熟悉Dais MCS-51 单片机实验系统使用。 3.了解单片机RAM中的数据操作。

二、实验设备

1.Dais MCS-51 单片机实验系统软件 2.PC机

一套

一套

三、实验线路

四、实验内容

1.要求:编写程序把R2、R3源RAM区首地址内的R6、R7字节数据传送到R4、R5目的地址的RAM区。

2.程序流程图如下:

字节数到吗? 目的地址加1 源地址加1 (A)送目的的地址 开始 源地址内容送A N y 结束 五、实验步骤

1.打开PC机电源,正常工作后,在Windows桌面上点击快捷图标集成开发环境。

2.源文件的建立和打开:

,进入MCS-51

(1)选菜单栏文件/新文件或者工具栏新文件,出现源文件编辑窗口,输入程序S1。 (2)选文件/存储(或另存),要求输入文件名,同时保存类型选*.asm。文件名按下

2

面要求写:

T01 S1 小组号 文件名

保存路经为:D:\\mcu exp,然后单击保存即可。

(3)编译源文件,选菜单栏/编译、连接、装载或者工具栏编译源程序,根据编译结果的错误提示,修正源程序S1,直至成功。成功后即可关闭“编译结果”和源文件编辑窗口。

(4)出现“当前模块:T01S1”,同时打开菜单栏视图/调试、寄存器、存储空间,然后可以通过主菜单/窗口相关命令配置视图。

3.调试和运行程序S1 (1)“当前模块:T01S1”中光标位置是PC指针指向位置,在R2、R3中输入源地址(例如:0000H),R4、R5中输入目的地址(例如2000H),R6、R7中输入字节数(例如:1FFFH),当然也可在程序中直接赋值。“寄存器”中显示当前各寄存器中的内容。“数据存储区”中地址用右键选显示地址,“输入数据”为十六进制,确认后调试。 (2)查看RAM 区0000~1FFFH和2000~3FFFH内容,也可自己重新赋值。 (3)运行程序XXXXS1,首先单步,然后用自动单步,最后用连续运行方式。

(4)记录下运行结果,检查0000~1FFFH中内容是否和2000~3FFFH内容完全一致。

六、实验要求

1.写出自己编写的程序,并写出原理性注释。 2.将检查程序运行的结果,分析一下是否正确。

七、思考题

如果使0000~1000H中内容与2000~3000H内容完全一致,如何来改写程序?

3

实验2 数据排序实验

一、实验目的

熟悉MCS-51指令系统,掌握数据排序程序的设计方法。

二、实验设备

1.Dais MCS-51 单片机实验系统软件 2.PC机

一套

一套

三、实验线路

四、实验内容

编写并调试一个排序程序,其功能为用冒泡法(参见单片机教材84页)将RAM中几个单字节无符号的正整数,按从小到大的次序重新排列。程序流程图如下:

开始 清标志位 根据(R0)取数 A (R0)+1送R0 (A)<((R0))? Y N 置标志位,交换内容 N 长度减1=0? Y 标志位=0? N N 结束 五、实验步骤

1.按要求编写实验程序S2,在CPU内部的RAM 50H~5AH中放入不等的数据,并填入下表。

2.运行该程序后检查50H~5AH内容是否按从小到大排列,结果记录下表中:

RAM 状态 运行前内容 运行后内容 50 51 52 53 54 55 56 57 58 59 5A

4

六、思考题

修改程序S2,将50H~5AH中内容按从大到小排列,并且记录下程序运行前后的结果,分析是否正确。

5

实验3 查找相同数个数

一、实验目的

熟悉MCS-51指令系统,熟悉汇编语言编程。

二、实验设备

1.Dais MCS-51 单片机实验系统软件 2.PC机

一套

一套

三、实验线路

四、实验内容

在2000~200FH中查出有几个字节是零,把零的个数放在2100H中。程序流程图如下:

开始 字节数送 R0,查找字节送R1 相同否? Y R1+1 DPTR+1 N 字节数到吗? (R1)送2100H 结束 五、实验步骤

在2000~200FH的几个单元中填入零,运行本程序后检查2100H单元中的数是否与2000~200FH中零的个数相同。

六、思考题

在1000~100FH的几个单元中填入8H,检查8H的个数,并填入1100H单元中,如何来修改程序?

6

实验4 P1口转弯灯实验

一、实验目的

了解P1口的使用,学习汇编语言编程方法与调试技巧。

二、实验设备

1.Dais-958PH+单片机实验开发系统 2.PC机

一套

一套

三、实验线路

在连线之前先要完成Dais-958PH+单片机实验开发系统与PC机的串口连接,如下图所示。

PC机串口 LED显示器 ??主机板 32键键盘 PC机

Dais-958H+单片机开发系统

单片机实验开发系统自带32个键的键盘和6位LED数码管。系统有两种工作方式:独立运行的单板机工作方式以及与PC通过串行口相连的串行监控工作方式。

(1)独立运行的样板机工作方式

无需任何设备,利用开发系统上的单片机、监控程序、键盘和LED数码管,自构成一台样板机独立运行。

(2)串行监控工作方式

通过RS-232C串行口与PC机的串行口相连,以PC机为操作平台,配合系统操作软件,适用于PC机的系统编程和调试界面。

实验开发系统提供以Windows操作平台的在线仿真调试软件包。支持汇编语言(ASM51)及高级语言(PL/M51、C51)源程序级及反汇编窗口式调试环境,该仿真软件具有:编辑、汇编、连接、反汇编、开观察窗口、单点跟踪、设置断点、全速/非全速运行、系统设置、程序固化等功能,具有查看SFR、内部RAM、外部RAM等选项。

7

注意:

1.实验前将CPU选择开关拨至51(最右边),同时将通信波特率选择开关拨至57600bps(最右边)。

2.按实验线路接好线后,检查无误在指导教师允许下才可通电。先打开电源+5V,主机板上的六位LED显示器最左边一位出现提示符“P.”,表明系统正常。否则应立即关掉电源!!!

3.958PH+主机板通电后,不允许在上面放置任何物品,特别是金属物!(因集成芯片或线路引起短路损坏设备)。

四、实验内容

1.P1.0开关接5V时,右转弯灯闪亮,P1.1开关接5V时左转弯灯闪亮。 2.P1.0、P1.1 开关同时接5V或接地时,转弯灯均不闪亮。 程序流程如下: 开始关灯N只是P1.0高吗?Y标志位为1吗?只是P2.0高吗?Y标志位为1吗?N关灯开右灯关左灯开左灯关右灯关灯NY延时.清标志位延时.置标志位延时.置标志位延时.清标志位 五、实验步骤

根据实验线路,P1.0接K1,P1.1接K2,P1.4~P1.7分别接L1、L5、L9、L13 ,连续运行本程序,应看到转弯灯正确闪亮,在用单步方式调试本程序时需修改延时子程序,(例如可把延时程序第一个字节改成返回指令22H),以便观察。

六、思考题

如何改变发光二极管闪亮时间?

8

实验5 工业顺序控制

一、实验目的

掌握工业顺序控制程序的简单编程,中断的使用。

二、实验设备

1.Dais-958PH+单片机实验开发系统 2.PC机

一套

一套

三、实验线路

四、实验内容

在工业控制中,象冲压、注塑、轻纺、制瓶等生产过程,都是一些继续生产过程,按某种顺序有规律的完成预定的动作,对这类继续生产过程的控制称顺序控制,象注塑机工艺过程大致按“合模?注射?延时?开模?产伸?产退”顺序动作,用单片机最易实现。

8031的P1.0~P1.6控制注塑机的七道工序,现模拟控制七只发光二极管的点亮,低电平有效,设定每道工序时间转换为延时,P3.4为开工启动开关,高电平动作。P3.3为外部故障输入模拟开关,低电平报警,P1.7为报警声音输出,设定6道工序只有一位输出,第七道工序三位有输出。

程序流程图如下:

开始 开中断.P1,P3初始化 关输出 现场保护 报警

等开工 工序1延时 工序2延时 故障清除了吗? Y N : : 工序7延时 9

恢复现场 返回 中断服务子程序

五、实验步骤

按实验电路图接好连线。执行程序,把K1接到高电平,观察发光二极管点亮情况,确定工序执行是否正常,然后把K2置为低电平,看是否有声音报警,恢复中断1,报警停,又从刚才报警时一道程序执行下去。可以单步、单步跟踪,非全速断点、全速断点、连续执行功能调试软件,直到符合程序设计要求为止。

六、思考题

如何修改程序,使每道工序中有多位输出。

10

实验6 8255控制交通灯

一、实验目的

了解8255芯片的结构及编程方法,学习模拟交通控制的实现方法。

二、实验设备

1.Dais-958PH+单片机实验开发系统 2.PC机

一套

一套

三、实验线路

四、实验内容

用8255作输出口,控制12个发光二极管燃灭,模拟交通灯管理。 程序流程图如下:

开始 8255初始化 四个路口红灯亮 东西绿灯亮 南北红灯亮 延时 东西黄灯闪烁 南北红灯亮 延时 东西红灯亮 南北绿灯亮 延时 东西红灯亮 南北黄灯闪烁 延时

五、实验步骤

8255的PA0~PA7、 PB0~PB3接发光二极管L15~L13、L11~L9、L7~L5、L3~L1。

11

执行程序,初始态为四个路口的红灯全亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后东西路口的绿灯熄灭,黄灯开始闪烁,闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车,延时一段时间后,南北路口的绿灯熄灭,黄灯开始闪烁,闪烁若干次后,再切换到东西路口方向,之后重复以上过程。

六、参考程序

ORG 0BB0H

JOD0: MOV SP,#60H MOV DPTR,#0FFDBH MOV A,#88H

MOVX @DPTR,A ;8255初始化 MOV DPTR,#0FFD8H MOV A,#0B6H MOVX @DPTR,A INC DPTR MOV A,#0DH

MOVX @DPTR,A ;点亮4个红灯 MOV R2,#25H ;延时 LCALL DELY

JOD3: MOV DPTR,#0FFD8H MOV A,#75H MOVX @DPTR,A INC DPTR MOV A,#0DH

MOVX @DPTR,A ;东西绿灯亮,南北红灯亮

MOV R2,#55H

LCALL DELY ;延时 MOV R7,#05H ;闪烁次数 JOD1: MOV DPTR,#0FFD8H MOV A,#0F3H MOVX @DPTR,A INC DPTR MOV A,#0CH

MOVX @DPTR,A ;东西黄灯亮,南北

12

红灯亮

MOV R2,#20H

LCALL DELY ;延时 MOV DPTR,#0FFD8H MOV A,#0F7H MOVX @DPTR,A INC DPTR MOV A,#0DH

MOVX @DPTR,A ;南北红灯亮 MOV R2,#20H

LCALL DELY ;延时

DJNZ R7,JOD1 ;闪烁次数未到继续 MOV DPTR,#0FFD8H MOV A,#0AEH MOVX @DPTR,A INC DPTR MOV A,#0BH

MOVX @DPTR,A ;东西红灯亮,南北绿灯亮

MOV R2,#55H

LCALL DELY ;延时 MOV R7,#05H ;闪烁次数 JOD2: MOV DPTR,#0FFD8H MOV A,#9EH MOVX @DPTR,A INC DPTR MOV A,#07H

MOVX @DPTR,A ;东西红灯亮,南北黄灯亮

MOV R2,#20H

LCALL DELY ;延时 MOV DPTR,#0FFD8H MOV A,#0BEH MOVX @DPTR,A INC DPTR MOV A,#0FH

MOVX @DPTR,A ;东西红灯亮 MOV R2,#20H

LCALL DELY ;延时

DJNZ R7,JOD2 ;闪烁次数未到继续 LJMP JOD3 ;循环 ;---------------------------------------------

DELY: PUSH 02H DEL2: PUSH 02H

DEL3: PUSH 02H ;延时 DEL4: DJNZ R2,DEL4 POP 02H DJNZ R2,DEL3 POP 02H DJNZ R2,DEL2 POP 02H DJNZ R2,DELY RET

;--------------------------------------------- END

13

实验7 A/D转换实验

一、实验目的

1.掌握A/D转换与单片机接口的方法。

2.了解A/D芯片0809转换性能及编程方法。 3.通过实验了解单片机如何进行数据采集。

二、实验设备

1.Dais-958PH+单片机实验开发系统 2.PC机

一套

一套

三、实验线路

四、实验内容

利用实验系统上的0809做A/D转换器,实验系统上的电位器提供模拟量输入,编制程序,将模拟量转换成数字,通过数码管显示出来。

程序流程图如下:

开始

0809初始化 显示 0809通道0采样 五、实验步骤

编好程序后按实验线路接线,调试、运行程序,数码管上显示0809.XX,后二位显示当前采集的电压转换的数字量,调节W1,该二位将随着电压变化而相应变化。

六、思考题

如何修改程序,实现INT0~INT7 8个通道轮流采样显示。(设每次显示1秒钟)

七、参考程序

ORG 05A0H

SE11: MOV SP,#53H

14

MOV 7EH,#00H MOV 7DH,#08H

MOV 7CH,#00H MOV 7BH,#09H MOV 7AH,#10H

MOV 79H,#10H ;显示缓冲区初值 LO18: CALL DIS MOV A,#00H MOV DPTR,#0FFE0H

MOVX @DPTR,A ;0809的0通道采 ;显示

SETB RS1 MOV R0,#7EH MOV R2,#20H MOV R3,#00H MOV DPTR,#LS0 LS2: MOV A,@R0 MOVC A,@A+DPTR MOV R1,#0DCH 样

CALL DIS

;SSEE

MOVX A,@DPTR ;取出采样值 MOV DPTR,#0FFE4H ;138 Y1 CPL A ;

MOVX @DPTR,A ; 驱动发光二极管 CPL A ; MOV R0,#79H

CALL PTDS ;采样值送显示缓冲区 SJMP LO18 ;循环 ;---------------------------

PTDS: MOV R1,A ;拆送显示缓冲区 ACALL PTDS1 MOV A,R1 SWAP A PTDS1: ANL A,#0FH MOV @R0,A INC R0 RET

;--------------------------- DIS: PUSH DPH PUSH DPL

MOVX @R1,A MOV A,R2 inc R1 MOVX @R1,A LS1: DJNZ R3,LS1 CLR C RRC A MOV R2,A DEC R0 JNZ LS2

POP DPL POP DPH RET

;-------------------------------------

LS0: DB 0C0H,0F9H,0A4H,0B0H,99H,92H DB 82H,0F8H,80H,90H,88H,83H,0C6H DB

0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH ;-------------------------------------- END

15

实验8 D/A转换实验

一、实验目的

1.了解D/A转换芯片与单片机的接口方法。 2.了解D/A转换芯片0832的性能及编程方法。

3.了解单片机系统中扩展D/A转换芯片的基本方法。

二、实验设备

1.Dais-958PH+单片机实验开发系统 2.PC机

一套

一套 开始 三、实验线路

0832初始化 显示 转换显示加1 输入是否加到FF N Y 转换显示减1 输入是否减到00? N 四、实验内容

Y 利用0832输出一个从0V开始逐渐升至5V再降至0V的电压,数码管显示送入的数字量值。程序流程图如上示。

五、实验步骤

编好程序后按实验线路接线,调试、运行程序,数码管显示不断加大或减小的数字量,用万用表测试D/A输出孔AOUT应也能测出不断加大或减小的电压值。

六、思考题

如何修改程序,使其产生锯齿波。

七、参考程序

ORG 061FH MOV SP,#53H MOV 7EH,#00H MOV 7DH,#08H MOV 7CH,#03H

MOV 7BH,#02H ;显示缓冲区初值 LO23: MOV A,#80H CALL LO21

16

MOV A,#0FFH CALL LO21 SJMP LO23 ;---------------------------

LO21: MOV DPTR,#0FFE0H

MOVX @DPTR,A ;送0832转换 MOV R0,#79H CALL PTDS

LO2Z: MOV R2,#20H

L023: CALL DIS ;显示 DJNZ R2,L023 RET

;---------------------------

PTDS: MOV R1,A ;拆送显示缓冲区 ACALL PTDS1 MOV A,R1 SWAP A PTDS1: ANL A,#0FH MOV @R0,A INC R0 RET

;----------------------------- DIS: PUSH DPH PUSH DPL SETB RS1 MOV R0,#7EH MOV R2,#20H MOV R3,#00H MOV DPTR,#LS0 LS2: MOV A,@R0 MOVC A,@A+DPTR MOV R1,#0DCH MOVX @R1,A

MOV A,R2 inc R1 MOVX @R1,A LS1: DJNZ R3,LS1 CLR C RRC A MOV R2,A DEC R0 JNZ LS2 movx @r0,a dec r0 cpl a movx @r0,a CLR RS1 POP DPL POP DPH RET

;---------------------------------

LS0: DB 0C0H,0F9H,0A4H,0B0H,99H,92H DB 82H,0F8H,80H,90H,88H,83H,0C6H DB

0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH ;------------------------------- END

17

实验9 电子时钟(定时器、中断综合实验)

一、实验目的

1.熟悉MCS-51定时器,串行口和中断初始化编程方法。 2.了解定时器的应用,时钟程序的设计与调试技巧。

二、实验设备

1.Dais-958PH+单片机实验开发系统 2.PC机

一套

一套

三、实验线路

四、实验内容

编写程序,从本实验系统键盘上输入时间初值,用定时器产生0.1S定时中断,对时钟计数器计数,并将数值实时地送数码管显示。系统流程图如下。

定时中断 恢复初值,保护 1秒到吗? 0.1秒单元清零,60秒到吗? Y N 0.1秒加1 N N N 秒加1 分加1 Y Y Y 秒单元清零,60分到吗? 分单元清零,24小时到吗? 时加1 时单元清零 中断返回 五、实验步骤

连续运行程序,在键盘上输入时间初值,按执行键EXEC执行,数码管上实时显示时间值。

六、思考题

1.电子钟走时精度和程序中哪些常数有关?

2.修改程序使定时器工作方式改变,调节有关参数,进一步提高精度。 3.设计一个倒计时时钟,如何来修改程序?

七、参考程序

18

ORG 0000H SJMP CHK00 ORG 000BH

LJMP CLOCK;INT_T0 ORG 0030H CHK00: MOV SP,#60H LCALL LEDP

CHK0: LCALL LCK0 ;键扫,显示子程序 LCALL PTDS0 ;显示缓冲区放数子程序

MOV TMOD,#01H ORL IE,#82H MOV TL0,#0B7H

MOV TH0,#3CH ;定时中断初始化 MOV 23H,#00H

SETB TR0 ;开定时 LOO5: LCALL DIS

;SSEE ;显示

LCALL PTDS0 SJMP LOO5 PTDS0: MOV R0,#79H MOV A,22H ACALL PTDS MOV A,21H ACALL PTDS MOV A,20H ACALL PTDS RET

;---------------------------------------

PTDS: MOV R1,A ;拆送显示缓冲区 ACALL PTDS1 MOV A,R1 SWAP A PTDS1: ANL A,#0FH MOV @R0,A INC R0 RET

;--------------------------------------- CLOCK: MOV TL0,#0B7H

MOV TH0,#3CH ;恢复初值

19

PUSH PSW PUSH ACC

SETB 0D3H ;保护 INC 23H ;0.1秒加1 MOV A,23H

CJNE A,#0AH,DONE ;1秒到吗? MOV 23H,#00H ;清0.1秒单元 MOV A,22H

INC A ;秒加1 DA A

MOV 22H,A ;十进制调整 CJNE A,#60H,DONE ;60秒到吗? MOV 22H,#00H ;秒单元清零 MOV A,21H INC A

DA A ;分加1.十进制调整 MOV 21H,A

CJNE A,#60H,DONE ;60分到吗? MOV 21H,#00H ;分单元清零 MOV A,20H INC A

DA A ;时加1.十进制调整 MOV 20H,A

CJNE A,#24H,DONE ;24小时到吗? MOV 20H,#00H ;时单元清零 DONE: POP ACC ;退栈 POP PSW RETI

;---------------------------------------------- SSEE: SETB RS1 ;换工作区 MOV R5,#05H SSE2: MOV 30H,#20H MOV 31H,#7EH MOV R7,#06H SSE1: MOV R1,#0DDH MOV A,30H

MOVX @R1,A ;字位送入 MOV R0,31H MOV A,@R0 MOV DPTR,#DDFF

MOVC A,@A+DPTR ;取字形代码 MOV R1,#0DCH

MOVX @R1,A ;字形送入 MOV A,30H ;右移 RR A MOV 30H,A DEC 31H MOV A,#0FFH

MOVX @R1,A ;关显示

DJNZ R7,SSE1 ;6位显示完了吗? DJNZ R5,SSE2 ;5次显示完了吗? CLR RS1 RET

;------------------------------------------------------- DDFF: H,90H DB

88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH

;------------------------------------------------------- X3: MOV R4,A MOV R0,#50H MOV A,@R0 MOV R1,A MOV A,R4 MOV @R1,A CLR A POP DPH POP DPL

MOVC A,@A+DPTR INC DPTR CJNE A,01H,X30 dec r1 clr a

MOVC A,@A+DPTR X31: MOV @R0,A INC DPTR PUSH DPL PUSH DPH

20

RET X30: DEC R1 MOV A,R1 SJMP X31 ;-------------------------- X2: MOV R6,#50H X0: ACALL XLE JNB ACC.5,XX0 DJNZ R6,X0 MOV R6,#20H MOV R0,#50H MOV A,@R0 MOV R0,A MOV A,@R0

DB

MOV R7,A MOV A,#10H MOV @R0,A X1: ACALL XLE JNB ACC.5,XX1 DJNZ R6,X1 MOV A,R7 MOV @R0,A SJMP X2 XX1: MOV R6,A MOV A,R7 MOV @R0,A MOV A,R6 XX0: RET

;---------------------------- XLE: ACALL DIS ACALL KEY MOV R4,A MOV R1,#48H MOV A,@R1 MOV R2,A INC R1 MOV A,@R1 MOV R3,A MOV A,R4 XRL A,R3

0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80

MOV R3,04H MOV R4,02H JZ X10 MOV R2,#88H MOV R4,#88H X10: DEC R4 MOV A,R4 XRL A,#82H JZ X11 MOV A,R4 XRL A,#0EH JZ X11 MOV A,R4 JZ X12 MOV R4,#20H DEC R2 SJMP X13 X12: MOV R4,#0FH X11: MOV R2,04H NOP

NOP

MOV R4,03H X13: MOV R1,#48H MOV A,R2 MOV @R1,A INC R1 MOV A,R3 MOV @R1,A MOV A,R4 JB ACC.5,X113 JB ACC.4,X113 MOV DPTR,#LS3

MOVC A,@A+DPTR

X113: RET

;---------------------------------

LS3: DB 07H,04H,08H,05H,09H,06H,0AH DB 0BH,01H,00H,02H,0FH,03H,0EH DB 0CH,0DH ;----------------------------------- DIS: PUSH DPH

PUSH DPL SETB RS1 MOV R0,#7EH MOV R2,#20H MOV R3,#00H MOV DPTR,#LS0 LS2: MOV A,@R0 MOVC A,@A+DPTR MOV R1,#0DCH MOVX @R1,A MOV A,R2 inc R1 MOVX @R1,A LS1: DJNZ R3,LS1 CLR C RRC A MOV R2,A DEC R0 JNZ LS2 movx @r0,a dec r0 cpl a

movx @r0,a

CLR RS1 POP DPL POP DPH RET

;---------------------------------------------

LS0: DB 0C0H,0F9H,0A4H,0B0H,99H,92H DB 82H,0F8H,80H,90H,88H,83H,0C6H DB

0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH ;--------------------------------------------- KEY: SETB RS1 MOV R2,#0FEH MOV R3,#08H MOV R0,#00H LP1: MOV R1,#0DDH MOV A,R2 MOVX @R1,A

21

RL A MOV R2,A inc r1

MOVX A,@R1 CPL A ANL A,#0FH JNZ LP0 INC R0 DJNZ R3,LP1 XP33: MOV A,#20H XP3: mov r2,a clr a

mov r1,#0ddh movx @r1,a

mov a,r2

CLR RS1

RET

;---------------------------- LP0: CPL A JB ACC.0,XP0 MOV A,#00H SJMP LPP XP0: JB ACC.1,XP1 MOV A,#08H SJMP LPP XP1: JB ACC.2,XP2 MOV A,#10H SJMP LPP XP2: JB ACC.3,XP33 MOV A,#18H LPP: ADD A,R0 sjmp xp3

;-------------------------------- LEDP: MOV 50H,#7EH MOV A,#10H MOV R0,#79H LEDS: MOV @R0,A INC R0

CJNE R0,#7EH,LEDS

INC A

MOV @R0,A

RET

;-------------------------------- LCK0: LCALL X2 JB ACC.4,LDFC LCALL X3 DB 79H,7EH SJMP LCK0

LDFC: CJNE A, #16H,LCK0 MOV A, 7AH SWAP A ORL A, 79H MOV 22H, A CJNE A, #60H,LE09 LE09: JNC LE24 MOV A, 7CH SWAP A ORL A, 7BH MOV 21H, A CJNE A, #60H,LE15 LE15: JNC LE24 MOV A, 7EH SWAP A ORL A, 7DH MOV 20H, A CJNE A, #24H,LE21 LE21: JNC LE24 RET

;--------------------------------- LE24: CLR 8CH LJMP CHK00 DELYA: PUSH 02H DELYB: PUSH 02H DELYC: PUSH 02H DELYD: DJNZ R2,DELYD

LCALL SSEE ;调显示子程序 POP 02H DJNZ R2,DELYC POP 02H DJNZ R2,DELYB

22

POP 02H

DJNZ R2,DELYA ;延时 RET

;-------------------------------- END

23

附录1 Dais-958PH微机仿真实验系统简介

一、 系统概述

Dais-958PH+单片机微机仿真实验系统一体化结构采用多CPU兼容技术, 把不同类型CPU的三总线(八位数据总线、十六位地址总线、CPU控制总线)浓缩与合成,形成完全混为一体的通用型微机仿真实验系统,并配备了CPU选择开关,简化了不同类型CPU选择操作,使其趋于更合理完整、可靠快捷。仿真实验系统选择高速度大规模可编程器件作系统的主控芯片,高速通用、适配灵活,具完善的硬件断点、无限止暂停/折,配备Windows、dos、led三个操作平台,支持宏运行与C语言的语句调试、矢量调试及全符号过程调试,并按微机接口(含单片机)课程设置的要求系统地扩展了通用实验模块,形成了仿真开发与教学实验相结合的多用途仿真实验开发系统,是目前大中专院校及职业枝术学校单片机与微机接口实验室较为理想的施教工具。

Dais-958PH+单片机微机仿真实验系统的MCS-51单片机实验与仿真由管理CPU 89C52系统单元、仿真CPU78E438单元、接口实验单元和稳压电源(外接或内置)组成,通过RS232C串行接口与PC微机相连,系统硬件主要内容如下:

CPU 系统存储器 接口芯片 及单元实验 管理CPU 89C52、目标CPU 78E438 监控在89C52内EEPROM(8K)、RAM 6264、RAM 61256一片(32K)、BPRAM 61256(32K)。 8251、8253、8255、8259、ADC0809、DAC0832、6264、164、74LS273、74LS244、电子发声单元,电机控制单元, 开关及发光二极管、单脉冲触发器、继电器控制等 打印接口,8279键盘接口,RS232C串口、51仿真接口 6位LED、二路双踪示波器 32键自定义键盘 对EPROM 2764/27128快速读出 +5V/2A,±12V/0.5A +

外设接口 显示器 键盘 EPROM编程器 系统电源

二、系统功能与特点

(1)自带键盘、显示器,能独立运行,也可以PC机为操作平台。两种工作方式任意选择,均全面支持《单片机原理与应用》等课程的实验教学。

(2)系统采用紧耦合多CPU技术,用89C52作为系统管理CPU,8032或仿真CPU438作为目标机仿真与实验CPU,其软硬件资源100%出借。

(3)目标CPU78E438采用主频为6MHz,向用户提供实验方式和两种仿真方式(RAM方式和EPROM方式)。

(4)配有一片RAM 61C256构成系统的32K程序空间,地址范围为0000H~7FFFH,还配一片61C256(32K)作为用户设置的断点区(BPRAM)。

(5)实验项目完整丰富,与课程教学紧密结合,同时配有电机、温压、音响等实验对象,可支持控制应用类综合实验。

24

(6)系统接口实验电路为单元电路方式,电路简捷明快,一体机的8位数据总线以排线形式引出,这样既减轻繁琐的连线工作,又提高学生的实验工作能力。

(7)通过RS232通信接口,在Windows/DOS集成软件的支持下,利用上位机丰富的软件硬件资源,实现用户程序的编辑、编译、调试运行,提高实验效率。

(8)具有最丰富的调试手段,系统全面支持硬件断点,可无限制设置断点,同时具有单步、宏单步、连续运行及无限制暂停等功能,100%保护用户现场,返回监控。

(9)自带EPROM编程器,可对2764/27128快速读出(软硬件实验所需的代码文件)。

三、 系统资源分配

实验系统寻址范围定义如下:

空间地址 0000H~7FFFH 0000H~0FFFFH 0000H~0FFFFH 0000H~0FFFFH

器件选用 61C256 EPROM 实验接口电路 RAM/IO 用途与说明 仿真程序空间 目标机程序空间 实验空间 目标机数据空间 系统已定义的I/O地址如下:

接口芯片 74LS273 74LS273 74LS245 8255A口 8255B口 8255C口 8255口

口地址 0FFDDH 0FFDCH 0FFDEH 0FFD8H 0FFD9H 0FFDAH 0FFDBH 用途 字位口 字形口 键入口 EP总线 EP地址 EP控制 控制字 四、系统连接

先将串口线的9芯插头插到仿真实验仪的RS232端口上,另一9芯插头连到PC机的串口上(COM1、COM2),然后再连接电源线。在开机前先将CPU选择开关拨至51位置(最右边),将通信波特率选择开关拨至57600bps(最右边)。

五、系统测试

(1)系统初始化

将电源线/通信线连好后,应仔细检查连接的正确性,然后打开电源,实验开发系统就显示闪动的“P.”,否则按一下RESET键,如再不显示,应立即切断电源,检查后重新进行。

(2)系统功能自检

在闪动的“P.”状态下按键:[MOVE]→0000→[STEP]→[EXEC],系统以连续方式显示“8”循环向右程序,说明系统已进入正常工作状态,可按RESET键返“P.”待命。

25

附录2 MCS-51集成开发环境的使用简介

MCS-51集成开发环境是启东达爱思计算机有限公司Dais系列实验仿真开发系统的高性能MCS-51集成开发软件。该软件集编辑、编译/汇编、在线仿真实验及模拟调试为一体,VC风格的用户界面。完全支持Franklin/Keil C扩展OMF格式文件,支持所有变量类型及表达式,配合Dais系列教仪与实验系统,是教学实验与开发应用中的理想工具。

一、软件的安装

系统随机提供一张软件光盘,双击Setup.exe安装。也可在达爱思网站下载Dais集成开发环境软件安装程序Dais_Base.exe进行安装。

二、进入系统

启动Windows,双击MCS-51集成开发环境图标

,选择通讯端口及波特率(要与

)后,进入MCS-51

Dais-958PH+波特率选择开关一致,对于软件实验可直接点击集成开发环境。

三、程序编辑

通过文件菜单中新建或打开程序文件,进入程序编辑界面。通过相应菜单或热键,可对源程序进行输入、修改、保存等操作。

四、程序编译、链接、装载

点击工具条中图标或热键Ctrl+F9,进行源文件的编译、连接、装载,在出现编译成功的对话框后点击“OK”框自动进入源文件调试状态。

五、程序调试、运行

点击工具栏中“调试”项,自动弹出软硬件实验项目选择框。移动光标对正点击便可轻松进入当前实验项目所需的调试环境。

运行程序时选择相应的菜单、命令按钮或热键按需要的运行方式运行程序,。

若需要以断点方式运行,可直接点击源语句行前的设置与清除,然后再点击

图标进入断点运行状态。

图标退出当前操作返回待令图标或

图标来完成所需断点的

系统一旦进入运行状态后若需终止该程序的运行请点击状态。

六、逻辑示波器功能

点击,即可进入逻辑示波器窗口,并可进行通道、频率设置和暂停(继续)、显示缩放控制。

七、退出系统(略)

26

附录3 实验开发系统的字形/字位/键值表

一、字形表

二、字位表

三、键值表

代码 DD6 DDDDDD字形 7 5 4 3 2 1 0 Hex h g f e d c b a C0 1 1 0 0 0 0 0 0 0 F9 1 1 1 1 1 0 0 1 1 A4 1 0 1 0 0 1 0 0 2 B0 1 0 1 1 0 0 0 0 3 99 1 0 0 1 1 0 0 1 4 92 1 0 0 1 0 0 1 0 5 82 1 0 0 0 0 0 1 0 6 F8 1 1 1 1 1 0 0 0 7 80 1 0 0 0 0 0 0 0 8 90 1 0 0 1 0 0 0 0 9 88 1 0 0 0 1 0 0 0 A 83 1 0 0 0 0 0 1 1 B C0 1 1 0 0 0 1 1 0 C A1 1 0 1 0 0 0 0 1 D 86 1 0 0 0 1 1 1 0 E 8E 1 0 0 0 1 1 1 0 F FF 1 1 1 1 1 1 1 1 0C 1 0 0 0 0 0 1 1 P 89 0 0 1 0 0 0 0 1 H 7F 0 0 1 0 0 1 1 1 ? BF 1 1 1 1 1 1 1 1 - G5 G4 G3 G2 G1 G0 未 用 20 10 08 04 02 01 07 08 09 0A 10 12 14 16 04 05 06 0B 11 13 15 17 01 02 03 0C 18 1A 1C 1E 00 0F 0E 0D 19 1B 1D 1F 27

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

Top