《 单 片 机 原 理 与 应 用 》
实 验 指 导 书
温州大学物理与电子信息工程学院
2012年9月
目 录
TOC \o "1-3" \h \z \u 实验一 指令和汇编语言 3
实验二 集成开发环境的使用 6
实验三 I/O和中断实验 11
实验四 定时器计数器实验 15
实验五 可编程计数器阵列实验 18
实验六 IIC总线实验 22
实验七 模数转换实验 28
实验八 温度传感器实验 31
实验九 键盘显示电路实验 34
附录1 Keil 工程文件的建立、设置与目标文件的获得 36
1.1 系统集成环境设置 36
1.2 建立工程文件 36
实验一 指令和汇编语言
一、实验目的
1、了解单片机开发系统的各主要组成部分,包括PC、仿真器和实验开发系统;
2、掌握仿真器及其软件的使用,初步掌握程序的调试方法,包括跟踪、单步运行和断点设置等;
3、熟悉51单片机的指令系统,掌握汇编语言程序的设计方法。
二、实验仪器
1、自制的C51实验开发板 1块
2、直流温压电源 1台
3、仿真器(EASYPROBE) 1只
4、PC机 1台
三、实验内容
1、认识51单片机开发系统的结构。
40芯扁平电缆
40芯扁平电缆
PC机
仿真器
C51实验开发板
(目标板)
电 源
图1-1 51单片机开发系统的结构
2、初步认识仿真器软件和Keil C51软件界面及使用,参见附录1。
3、简单程序调试
(1) 传送指令
设置内部RAM的值,(30H)=40H, (40H)=10H,单步执行下列程序,检查结果。
MOV R0,#30H
MOV A,@R0
MOV R1, A
MOV B, @R1
STOP: SJMP STOP
执行后:(R0)= ,(R1)= ,(A)= ,(B)= ,(30H)= ,(40H)= 。
(2) 运算指令
单步
执行
MOV A, #0BFH
MOV 20H, #85H
SETB C
ADD A, 20H
MOV A, #0BFH
MOV 20H, #85H
SETB C
ADDC A, 20H
MOV A, #0BFH
MOV 20H, #85H
SETB C
SUBB A, 20H
MOV A, #0BFH
MOV B, #85H
MUL AB
SJMP $
结果
标志
(A)=
CY= AC=
OV= P=
(A)=
CY= AC=
OV= P=
(A)=
CY= AC=
OV= P=
(A)= (B)=
CY= AC=
OV= P=
4、多字节十进制数加1499613249
被加数
加数
结果
低位
20H
67
30H
65
20H
84/48
21H
45
31H
72
21H
7B/ef
22H
23
32H
98
22H
79/6f
23H
01
33H
89
23H
60/05
高位
图1-2 4字节十进制数相加
两个4字节十进制数1234567加,将其8421-BCD码按低位到高位存放在地址为20-23H、30-33H的RAM中,运算结果存放在20-23H的地址中,如上图示。
运算程序如下,ADD_BCD为多字节十进制数加法子程序的首地址。分别按“跟踪”、“单步”和“全速”方式调试程序。检查运算结果,区别“跟踪”、“单步”调试方式的不同。在“ADD_BCD子程序”的指令“DA A”处设置断点,再用“全速”方式运行,到达断点后,观察“A”的值,然后用“单步”运行,观察指令“DA A”的功能。同时理解“断点” 方式调试程序的特点。
;;;;;;;;;;;;;;;;;;;主程序 ;;;;;;;;;;;;;;;;;;;;;
MOV R0, #20H ;置被加数首地址
MOV R1, #30H ;置加数首地址
MOV R2, #04H ;置被加数和加数的长度(字节数)
ACALL ADD_BCD ;调用多字节十进制数加法子程序ADD_BCD
STOP:SJMP STOP ;停止
;;;;;;;;;; 多字节十进制数加法子程序 ;;;;;;;;;;
;入口: R0、R1为被加数和加数的首地址,按低位到高位存放
;出口: R0为运算结果的首地址,也按低位到高位存放
ADD_BCD:CLR C