单片机原理与应用实验讲义.docx
《单片机原理与应用实验讲义.docx》由会员分享,可在线阅读,更多相关《单片机原理与应用实验讲义.docx(30页珍藏版)》请在冰点文库上搜索。
单片机原理与应用实验讲义
单片机原理与应用实验讲义
第一部分DVCC—52JH+单片机仿真系统
仿真器是一种计算机(单片机)应用系统的开发工具,也称为开发机,用户设计的系统(硬件和软件),在仿真器的控制下进行逐步调试以期达到设计要求。
仿真系统提供编辑、汇编、反汇编、监控命令和高级语言编辑等工具帮助用户设计、调试和修改用户系统的硬件和软件。
因此,熟悉仿真系统的使用与掌握微机或单片机原理具有同等重要性。
DVCC—52JH+单片机仿真系统主要用于MCS—51系列单片机的仿真开发。
由于随机器附带的操作手册内容繁琐,特别是接口地址分配的不透明,给用户使用带来不便,为了使初学者能在较短时间内高效率地掌握开发系统主要功能及基本使用方法,第一部分有针对性地介绍DVC—52JH+的操作使用,这是完成第二部分实验必须先修的内容。
第一节键盘监控命令简介
一、键盘布局
!
<
(
)
Ilin
%
/
&
↑=
PRT
P
S
@
&
Quit
\
Back
Dlin
T
←*
↓;
:
COMP
V
→,
-
K
W
;
G
+
*
EPMOV
L
H
(
MOVE
,
Z
<
>
¥
~
Q
U
:
、
DAR
U
《
I
MON
↓
每个键中央标注的文字是单片机仿真系统的控制命令表示,大部分键有两个功能或作用,如
键表示寄存器R7或数字7。
整个键盘分为两大部分,左边的16个键是数字0~F键或寄存器代码键;右边的16个键是功能键,功能键通常与数字键互相配合进行程序调试。
二、数据的显示
单片机仿真系统采用LED(发光二极管)七段显示器作数据显示,共有6个LED,如图1所示,其中“·”用来显示小数点。
左边的4个LED一般用于显示程序存储器和数字存储器的地址,右边的2个LED用来显示对应地址单位的内容。
%
图1:
LED显示器
1、程序存储器和片外数据存储器
用4位十六进数表示地址,占满了左边4个LED。
例如,输入102F,左边4个LED显示该数102F,若再按MEM键(表示程序存储器),右边2个LED则显示程序存储器102FH单元的内容;若输入102F后再按ODRW(表示片外数据存储器),左边2个LED显示片外数存102FH单元的内容。
2、片内数据存储器
有两种显示方式。
(1)R0~R7、DPL、DPH、A、B、PSW、PCH、PCL和SP这16个寄存器键盘上已有,只需按该键一次,左边4个LED显示一位对应的代码,右边2个LED就能显示相应单元的内容。
例如:
按R7键,左边4个LED的最高位显示7(表示R7),再按REG(表示片内数存),右边2个LED显示R7单元的内容。
(2)片内其余的数据存储器用2个LED显示地址。
例如,输入24,再按REG键,左边4个LED只有2个LED亮,右边2个LED表示片内24H单元内容。
(3)、右边2个LED在显示时,总有一个LED是闪动的,它表示该数值是可以修改的。
三、单片机仿真系统的单板状态,仿真1态和仿真2态
单板状态、仿真1态和仿真2态——仿真系统虽然提供了64KB片外程序存储器和64KB片外数据存储器,但并不是全部分配给用户(使用者)的。
也就是说,用户能否使用这些存储器,取决于单片机的状态(对片内数据存储器,三种状态时用户都可用)。
~
如图2所示,框图给出了仿真系统在平板状态、仿真1态和仿真2态时用户可用已有存储器的分配情况。
仿真系统通过指令发出控制命令,使FPGA器件输出a0、a1和a2控制信号。
a0有效则选择单板状态,用户可用系统已配置的片外数存和程存地址空间分别为0000H~FEFFH。
a1有效选择仿真1态,用户可用系统已配置的片外程存地址空间为0000H~FEFFH,但用户不能用系统已配置的片外数存,此时必须外接片外数存。
a2有效选择仿真2态,系统已配置的片外数存和程存用户均不能用,必须全部外接。
<
图2:
三种状态的选择控制线
1、单板状态
上电或按RST键,仿真系统输出a0有效,单片机处于单板状态,LED显示P.。
单板状态时,系统已配置了片外程存和数存,用户(使用者)可使用这些资源,它们的地址分配如下:
片外程序存储器:
0000H~FEFFH范围用户可用。
片外数据存储器:
0000H~FEFFH范围用户可用。
2、仿真1态
LED显示P.后再按F2键仿真系统输出a1有效,单片机处于仿真1态,LED显示P.……。
仿真1态时,用户只能使用系统已配置的片外程序存储器,地址范围0000H~FEFFH;已配置的片外数据存储品用户不能用,因此,在仿真1态,用户要用片外数据存储器必须另外外接,外接的数据存储器和其它接口可用3—8译码器y0~y7的8个译码输出作片送信号,它们对应的地址为:
/
Y0=8000H~8FFFH,Y1=9000H~9FFFH,Y2=A000H~AFFFH
Y3=B000H~BFFFH,Y4=C000H~CFFFH,Y5=D000H~DFFFH
Y6=E000H~EFFFH,Y7=F000H~FFFFH。
3、仿真2态
LED显示P.后再按F1键,仿真系统输出a2有效,单片机处于仿真2态,LED显示H.……,仿真2态时,系统配置的片外数据存储器和程序存储器,用户均不能用。
因此,仿真2态需用的程存和数据,全部由用户外接(0000H~FEFFH)。
仿真2态主要用于用户设计的硬件仿真,第二部分的实验不用仿真2态。
4、单板状态和仿真1态的主要作用
单板状态系统已配置的片外程存和数存(包括8155、8255)已占用了全部64KB地址空间,已无地址分配给外部接口芯片。
因此,需要分配地址的外部接口电路不能在单板状态下应用。
仿真1态用户只能用系统已配置的0000H~FEFFH片外程序存储器,不能用已配置的片外数据存储器。
如果用户需要用片外数据存储器就必须外接。
仿真1态时,系统已提供了部分接口芯片或插座,并通过3—8译码器给出了Y0~Y7共8个片送选信号,用户使用这些接口芯片时,用线连接相应的引脚即可。
例如,用户要扩展片外数据存储器,先在V28插座上6264芯片(见图3),细线表示系统已连接了,粗线表示需要用户连接的线,A0~A12和D0~D7用2块排线连接,XRD、XWR、+5V和Y0用单根线连接。
由于Y0=8000H~8FFFH,只能提供4KB地址空间,所以只能得到8000H~8FFFH的4KB片外数存(尽管6264有8KB,但也只能用4KB)。
<
图3
5、8155键盘显示接口的使用
仿真系统的三种状态所用程序存储器地址范围都只能是0000H~FEFFH,FF00H~FFFFH单元是系统自用的。
所用片外数据存储器地址也只能是0000H~FEFFH单元,FF00H~FFFFH单元供8155键盘显示和8255接口用,它们的接口地址分配如下:
[
8155键盘显示接口地址——8155控制口=FF20H,8155A口字位=FF21H,8155B口(字
形)=FF22H,8155C口(键盘扫描)=FF23H。
8255并行接口地址——8255控制口=FF2BH,8255A口=FF28H,8255B口=FF29H,8255C口=FF2AH。
8155是键盘扫描和显示(LED)的接口芯片,它与键盘及LED显示器的连接如图4所示。
使用8155时(本系统只用8155作键盘扫描和LED显示),第一条指令为SETB0D4H,即设置RS1RS0=10,选用第2组工作寄存器R0~R7。
}
图4
8155使用方法:
\
(1)SETB0D4H后,向控制口(即命令状态寄存器)FF20H写入控制字MOVA,#00000011B;A、B口为输出,C口为输入方式。
(2)由图4可知,A口既作为LED字位的输出控制,又作为键盘扫描的输出控制。
A口作字位输出控制时,PA5=1控制最左边位LED,PA0=1控制最右边位LED。
A口作键扫输出时,PA7~PA0每次有一位输出0,其余7位输1,PC0~PC5作输出,当有键按下时(如B键按下),则PA0=0时,PC0=0,从而确定为B键按下。
(3)B口作LED字形输出控制,B口的PB7~PB0与LED引脚的对应关系如表1所示,图5是LED管脚示意图,由图5和表1可知,B口(PB7~PB0)输出数据与LED显示字符的对应关系如表2所示。
表1
PB口
PB7
PB6
PB5
-
PB4
PB3
PB2
PB1
PB0
PB12
LED引脚
5
10
9
*
1
2
4
6
7
LED
(
表2
B口输出
0C0H
0F9H
0A4H
0B0H
99H
92H
82H
0F8H
?
80H
90H
LED显示
0
1
2
3
4
5
\
6
7
8
9
B口输出
88H
83H
0C6H
0A1H
。
86H
8EH
0FFH
0CH
89H
0DEH
7FH
LED显示
A
b
·
c
d
E
F
全熄
P·
H
Γ
·
-
》
图5.LED管脚
(5)C口作键扫输入,只用PC0~PC5。
四、各键功能与用法
下面以单板状态为例说明各键功能与用法。
如果是仿真1态,按RST键后再按F2,LED显示P……后各键操作即与单板状态相同。
1、复位键—RST:
黄色小键(不在键盘区)。
任何情况下按RST键,单片机均处于单板状态,单板状态的标志是LED显示P0字符。
2、返回待命状态键—MON:
大部分情况下,按MON键将返回待命状态(等待按键执行命令的状态),LED显示P。
如果按MON键LED不显示P,则需按RST键。
3、程序存储器读写命令——MEM键:
MEM键作用是显示和修改指定程序存储器单元的内容。
用法举例:
将下面程序的操作码装入起始地址为1000H单地的程序存储器。
程存地址操作码程序
.
ORG1000H
1000H:
7401MOVA,#01H
1002H:
2403MOVA,#03H
操作方法:
先按RST键(显示P.;如果已显示P.,则不必按RST键)→连续按4位数字键1000(左边4个LED显示1000)→按MEM键(后边2个LED有一位会闪动,按任意数字键会将该数字填入闪动的这一位)→按数字74→按NEXT键(左边4个LED显示下一个单元地址1001)→按数字键01→按NEXT键→按数字键24→按NEXT→按数字键03。
注:
每按一次NEXT键,存储器地址自动加1;每按一次LAST键,存储器地址减1。
输入完后按RST键结束本次操作。
4、片内数据存储器读写——REG键:
显示和修改片内数存指定单元的内容。
操作方法:
按RST键(显示P0后)→连续按2位数字键(片内数存只有2位十六进制编址)→(与MEM类同)。
片内特殊功能寄存器对应地址如下表:
SFR
地址
~
SFR
地址
SFR
地址
SFR
地址
SFR
地址
SFR
地址
!
P0
80
DPH
83
TMOD
89
TH0
8C
SCON
98
/
IE
A8
SP
81
PCON
87
TL0
8A
TH1
8D
[
SBUF
99
P3
B0
DDL
82
TCON
88
TL1
8B
~
P1
90
P2
A0
IP
B8
PSW
D0
A
E0
-
B
F0
如果特殊功能寄存器在键盘上已存在,则只需按该键即可代表它的地址。
如R7,按R7→再按REG就能显示R7的内容。
5、片外数据存储器读写命令——ODRW键:
显示和修改指令片外数存单元的内容。
)
使用方法与MEM键相同。
6、断点运行键——FVBP键
断点运行:
程序运行到设置断点的这条指令时自动停止。
设置断点操作:
按RST键→输入某条指令所在地址→按F1键。
设置断点后,再输入程序首地址——按FVBP则执行断点运行。
断点运行给调试某一段程序提供了方便。
7、连续运行——EXEC键
操作方法:
按RST→输入程序首地址→按EXEC键,程序连续运行直至结束。
8、单步运行——STEP键
单步运行:
按RST键,输入程序首地址,每按一次STEP键,程序就执行一条指令(语句)。
如果是调用子程序语句,则按一次STEP键将子程序全部执行完。
如果按STEP键达1秒钟以上,则以每分钟500条指令的速度执行程序,左边4个LED显示执行地址,右边2个LED显示A的内容,松开STEP则停止执行程序。
/
9、偏移量计算键——OFST键
用法举例:
计算下面程序偏移量rel。
程存地址操作码程序
1051H:
7401ST:
A,#01H
1053H:
80relSJMPST
偏移量rel存在程序存储器1054H单元中,求rel操作方法:
RST→1054→MEM→输入ST低8位即51→按OFST(右边2个LED显示的数就是rel值)。
10、删除键DEL和插入键INS。
DEL操作方法:
按RST→输入要删除指令所在地址→按MEM键→按DEL,该字节被删除,若连续删除下一个字节,再按DEL键即可。
INS键操作方法:
按RST→输入要插入指令所在地址→按MEN键→按INS,该字节被插入。
若连续插入下一个字节,再按INS键即可。
%
11、联机键——PCDBG键:
将单片机与PC机联机调试程序时,先将联机线接好,再按PCDBG键,单片机准备与PC机建立联机关系。
12、程序块移动比较等操作方法如下表。
操作功能
状态
操作顺序
1
2
—
3
4
5
6
程序/数据移动
(机内)
P·
源首址
F1
源末址
【
F2
目首址
MOVE
程序/数据移动
(内部→外部)
P……
源首址
仿真RAM区
F1
源末址
*
仿真RAM区
F2
目首址
用户目标板
MOVE
程序/数据移动
(外部→内部)
H……
源首址
用户目标版
;
F1
源末址
用户目标版
F2
目首址
仿真RAM区
MOVE
程序块比较
P·
源首址
、
F1
源末址
F2
目首址
COMP
机内程序或用户数
据区与固化区比较
P·
源首址
F1
《
源末址
F2
目首址
(EPROM)
EPCOM
EPROM高速固化
P·
源首址
F1
源末址
:
F2
目首址
(机器内存)
EPMOV
固化区内容传向
机内存
P·
源首址
F1
源末址
—
F2
目首址
(机器内存)
EPMOV
固化区内容
向用户数据区
P……
源首址
F1
源末址
¥
F2
目首址
(用户机)
EPMOV
反汇编(机内)
P·
源首址
F1
源末址
F2
>
浮动地址
DAR
反汇编(用户机)
H……
源首址
F1
源末址
F2
浮动地址
DAR
!
全速断点
P·
源首址
F1
执行首址
FVBP
P……
!
源首址
F1
执行首址
FVBP
第二节联机软件使用简介
单片机仿真系统提供的联软件是在WINDOWS9X/NT界面上运行的综合调试软件,主要功能是将汇编程序翻译成操作码并装入单片机的程序存储器,运行程序可以单机运行,也可以联机运行。
单机运行:
PC机将翻译完的操作码装入单片机指定程序存储器单元后,按RST键断开联机,再按照第一节方法运行程序。
&
联机运行:
PC机装入操作码到单片机后,由PC机监控程序的运行。
一、联机软件菜单及功能
文件菜单
载入或创建源程序文件,打开历史文档以及退出DVCC实验系统等
编辑菜单
对源程序窗口的有关内容进行编辑。
并对编译、链接成功的51/96源程序进行源程序窗口调试。
查找菜单
对编辑窗口的源程序进行查找、替换、定位等操作。
编译菜单
对编辑的源程序进行编译、连接、传送等。
…
选项菜单
控制工具栏的显示状态(打开或关闭),设置编译、连接、系统等选项。
动态调试菜单
对源程序进行单步、宏单步、连续执行、端口操作、系统联机、文件(EXE)传送等操作。
实验指南菜单
提供所选实验项目的目的、内容、原理图、源程序、相关芯片查询等。
窗口菜单
列出当前屏幕出现的所有窗口名及指出当前活动窗口名。
并可调整活窗口
帮助菜单
获得在线帮助。
】
注释:
宏单步(TaceOut)——单步执行一条语句,遇子程序调用到跳过子程序。
单步(TaceIn)——单步执行一条语句,遇子程调用则步入子程序。
二、主要菜单功能简介
1、单片机与PC机联机
DVCC系统的菜单功能一部分需将单片机与PC机联机后才能实现。
联机操作:
先按单片机上“PCDBG键”,PC机上则点击“动态调试”菜单,再点击“联接DVCC系统”。
2、文件菜单
实现汇编程序的编辑和修改,存盘后文件扩展名.asm。
3、编译菜单
。
将汇编程序翻译为操作码,编译菜单有3种选择:
①编译:
只生成扩展名为.OBJ的中间文件,不能装载到单片机程序存储器。
程序编译后同时生成.LST列表文件(操作码与程序指令同时列出)。
②编译连接:
编译并连接当前文件,生成.ABS文件和.HEX文件,可装入单片机。
③编译连接传送:
生成.ABS文件或.HEX文件并装载到单片机程序存储器。
4、动态调试菜单
运行“编译连接传送”后的程序。
5、窗口菜单
窗口菜单的反汇编命令能将操作码翻译为汇编程序。
第二部分单片机实验
·
实验一单机程序调试
一、实验目的
熟悉和掌握DVCC—52JH/JH+单片机仿真系统的使用及程序调试方法。
二、实验仪器
DVCC—52JH/JH+实验箱
三、实验原理
单机情况下,单片机仿真系统的监控管理程序监控各键的动作,因此,通过各功能键能实现程序操作码装入程序存储器(MEM键),显示和修改片内数据存储器(REG键),显示和修改片外数据存储器(ORW键),单步和连续运行及调试程序等。
四、实验内容
以下实验仿真系统处于单板状态。
"
(一)、将下面程序装入程序存储器。
程存地址操作码序号程序
1000H1ORG1000H
2SETBRS1
3SETBRS0
4MOVA,#05H
5ADDA,#04H
6MOV50H,A
7MOVR0,A
8ADDA,#01H
-
9MOVR7,A
10RLA
11MOVDPTR,#1000H
12MOVX@DPTR,A
13CLRRS1
14CLRRS0
15RET
1、查表给出每条指令的操作码和对应的存储器单元地址;
2、装入操作码,给出主要操作步骤:
3、单步运行程序,写出操作步骤:
;
4、连续运行程序,写出操作步骤:
5、检查运行结果
A=<>,操作步骤:
(1000H)=<>,操作步骤:
R7=<>,操作步骤:
(50H)=<>,操作步骤:
R0=<>,操作步骤:
C=<>,操作步骤:
6、在第6条语句处设置断点,然后运行程序操作步骤:
7、删除第8条语句,操作步骤:
`
8、插入第8条语句,操作步骤:
(二)、将下面程序操作码装入程序存储器
程存地址操作码序号程序
1ORG1050H
1050H2MOVR4,#04H
3MOVA,#03H
4LOOP:
RLA
5DECR4
6CJNER4,#OOH,LOOP
7RET
·
装入操作码,写出求偏移量rel步骤,rel=<>。
五、思考题
什么是单步运行有什么作用
实验二联机程序调试
一、实验目的
掌握联机软件使用,进一步熟悉仿真系统程序调试方法。
二、实验仪器
DVCC—52JH+仿真实验箱,PC机和DVCC软件。
《
三、实验原理
利用DVCC软件功能实现汇编程序的编辑,编译连接传送和运行调试。
四、实验内容
下面程序中,源RAM区首址在(R2、R3)中,目的RAM首址在(R4、R5)中,字节个数存在(R6、R7)中,将源RAM区数据送到目的RAM区。
1ORG0090H
2MOVR2,#10H
3MOVR3,#00H
4MOVR4,#40H
5MOVR5,#00H
6MOVR6,#10H
7<
8MOVR7,#00H
8DMVE:
MOVSP,#70H;设栈指针
9MOVDPL,R3
11MOVDPH,R2
12MOVXA,@DPTR;取源操作数
13MOVDPL,R5
14MOVDPH,R4
15MOVX@DPTR,A;存入目的地址中
16CJNER3,#0FFH,DMVE1
17INCR2
。
18DMVE1:
INCR3;源地址加1
19CJNER5,#OFFH,DMVE2
20INCR4
21DMVE2:
INCR5;目的地址加1
22CJNER7,#00H,DMVE5
23CJNER6,#00H,DMVE6;未传送完成字节数减1
24MOVR0,7EH
25MOVA,#0FFH;关显示器的1-5位
26MOVR4,#06H
27DMVE3:
MOV@R0,A
)
28DECR0
29DJNZR4,DMVE3
30MOV7EH,#8CH;最后一位显示P
31DMVE4:
LCALLDISPD
32SJMPDMVE4;循环调显示子程序
33DMVE5:
DECR7
34SJMPDMVE
35DMVE6:
DECR7
36DECR6
37SJMPDMVE;未完继续
(
38DISPD:
SETB0D4H;显示子程序
39MOVR1,#7EH
40MOVR2,#20H
41MOVR3,#00H
42DISPD1:
MOVDPTR,#0FF21H;从右至左第一位点亮
43MOVA,R2
44MOVX@DPTR,A;显示位码送字位口
45MOVA,@R1
46MOVDPTR,#0FF22H
47MOVX@DPTR,A;显示段码送字形口
&
48MOVR0,#99H
49DISPD2:
DJNZR3,DISPD2;延时
50DECR0
51CJNER0,#00H,DISPD2
52MOVA,#0FFH
53MOVX@DPTR,A
54