51实验指导书27页word文档.docx
- 文档编号:1361686
- 上传时间:2022-10-21
- 格式:DOCX
- 页数:33
- 大小:119.44KB
51实验指导书27页word文档.docx
《51实验指导书27页word文档.docx》由会员分享,可在线阅读,更多相关《51实验指导书27页word文档.docx(33页珍藏版)》请在冰豆网上搜索。
51实验指导书27页word文档
实验一指令和汇编语言
一、实验目的
1、了解单片机开发系统的各主要组成部分,包括PC、仿真器和实验开发系统;
2、掌握仿真器及其软件的使用,初步掌握程序的调试方法,包括跟踪、单步运行和断点设置等;
3、熟悉51单片机的指令系统,掌握汇编语言程序的设计方法。
二、实验仪器
1、自制的C51实验开发板1块
2、直流稳压电源1台
3、仿真器(EASYPROBE)1只
4、PC机1台
三、实验内容
1、认识51单片机开发系统的结构。
图1-151单片机开发系统的结构
2、初步认识仿真器软件和KeilC51软件界面。
3、简单程序调试
(1)传送指令
设置内部RAM的值,(30H)=40H,(40H)=10H,单步执行下列程序,检查结果。
MOVR0,#30H
MOVA,@R0
MOVR1,A
MOVB,@R1
STOP:
SJMPSTOP
执行后:
(R0)=,(R1)=,(A)=,(B)=,(30H)=,(40H)=。
(2)运算指令
单步
执行
MOVA,#0BFH
MOV20H,#85H
SETBC
ADDA,20H
MOVA,#0BFH
MOV20H,#85H
SETBC
ADDCA,20H
MOVA,#0BFH
MOV20H,#85H
SETBC
SUBBA,20H
MOVA,#0BFH
MOVB,#85H
MULAB
SJMP$
结果
标志
(A)=
CY=AC=
OV=P=
(A)=
CY=AC=
OV=P=
(A)=
CY=AC=
OV=P=
(A)=(B)=
CY=AC=
OV=P=
4、多字节十进制数加法
被加数
加数
结果
低位
20H
67
30H
65
20H
21H
45
31H
72
21H
22H
23
32H
98
22H
23H
01
33H
89
23H
高位
图1-24字节十进制数相加
两个4字节十进制数1234567和89987265相加,将其8421-BCD码按低位到高位存放在地址为20-23H、30-33H的RAM中,运算结果存放在20-23H的地址中,如上图示。
运算程序如下,ADD_BCD为多字节十进制数加法子程序的首地址。
分别按“跟踪”、“单步”和“全速”方式调试程序。
检查运算结果,区别“跟踪”、“单步”调试方式的不同。
在“ADD_BCD子程序”的指令“DAA”处设置断点,再用“全速”方式运行,到达断点后,观察“A”的值,然后用“单步”运行,观察指令“DAA”的功能。
同时理解“断点”方式调试程序的特点。
;;;;;;;;;;;;;;;;;;;主程序;;;;;;;;;;;;;;;;;;;;;
MOVR0,#20H;置被加数首地址
MOVR1,#30H;置加数首地址
MOVR2,#04H;置被加数和加数的长度(字节数)
ACALLADD_BCD;调用多字节十进制数加法子程序ADD_BCD
STOP:
SJMPSTOP;停止
;;;;;;;;;;多字节十进制数加法子程序;;;;;;;;;;
;入口:
R0、R1为被加数和加数的首地址,按低位到高位存放
;出口:
R0为运算结果的首地址,也按低位到高位存放
ADD_BCD:
CLRC;进位清零
LOOP:
MOVA,@R0;一字节的被加数→A
ADDCA,@R1;一字节加
DAA;十进制数调整
MOV@R0,A;存一字节的运算结果
INCR0;被加数指向下一字节
INCR1;加数指向下一字节
DJNZR2,LOOP;循环控制
RET;子程序返回
END
四、预习要求
1、读懂各程序;
2、预先给出运算结果,以便和实验结果比较;
3、回忆“跟踪”、“单步”和“断点”调试方式的特点。
五、思考题
1、为什么程序结束用“STOP:
SJMPSTOP”指令?
用没有其他的停止方式?
51单片机启动后,是否一直不断地在执行指令?
2、比较“跟踪”、“单步”和“断点”调试方式的特点。
实验二C51序程序设计
一、实验目的
1、掌握仿真器及KeilC51软件的使用;
2、熟悉C51程序的设计方法,掌握C51程序的调试、诊断和排错方法。
二、实验仪器
1、仿真器1只
2、PC机1台
三、实验内容
1、编写水平垂直校验码生产程序。
将你的11位学号生产水平垂直校验码,你的11位学号可以用ASCII码、BCD码或二进制编码的一种来表示,然后每7位或8位分别进行奇校验,这就是水平校验,对应的校验位存储位置可以自己规定。
需要注意的是,位类型不能定义数组。
2、再将上述的水平校验码,进行垂直奇校验,垂直校验位的存储位置也自己规定,得到水平垂直校验码,记下校验码结果。
3、编写相应的水平垂直校验码校验及纠错程序。
将上述校验码结果的任何一位取反后,输入水平垂直校验码校验及纠错程序,观察校验结果,并纠错。
四、预习要求
1、了解水平垂直校验码的生产、校验及纠错过程;
2、事先编写水平垂直校验码生产程序和校验及纠错程序。
五、思考题
1、如何保证变量空间、堆栈空间不会溢出?
2、如何实现海明码、CRC校验码的检错和纠错?
实验三I/O和中断实验
一、实验目的
1、掌握单片机基本I/O口的使用特点,了解本扩展I/O口的方法;
2、掌握单片机中断机制,掌握单片机中断的使用特点和编程方法。
二、实验仪器
1、C51实验开发板1块
2、直流稳压电源1台
3、仿真器1只
4、PC机1台
5、示波器1台
三、实验内容
1、P1口直接输出,驱动LED指示灯,演示跑马灯效果
连接仿真器和C51实验开发板,P1口做输出口,P1口连接至8只发光二极管接口JP8,如图3-1所示,接通开发板电源。
编写程序,使发光二极管指示灯循环点亮。
图3-1P1口输出
CPU89C51的振荡频率为11.0592MHz,发光二极管循环点亮需要一个延时子程序DELAY。
延时时间为((0B3+1)×256×10+2)×2×12÷11059200=1(秒)。
DELAY:
MOVR5,#0AH
MOVR6,#00H
DELAY1:
MOVR7,#0B3H
DJNZR7,$
DJNZR6,DELAY1
DJNZR5,DELAY1
参考主程序
ORG0000H
LJMPSTART
ORG0040H
START:
MOVA,#0FEH;
LOOP:
MOVP1,A;点亮1只LED
RLA;左循环
LCALLDELAY;延时1秒
SJMPLOOP
修改程序,使指示灯两两右循环;
修改程序,使指示灯右循环间隔为0.1秒;
2、P1口直接输入,读取DIP开关值,P2直接输出,用LED指示结果
P1做输入口,连接至DIP开关接口JP4,P2口输出连接至8只发光二极管接口JP8,如图3-2所示。
编写程序,使DIP开关的电平通过发光二极管指示灯显示出来。
图3-2P1口输入
由于51单片机的I/O口特点,输入口读入数据前要求先置1,使I/O口上的下拉管截止,为外部数据的输入做准备。
参考程序
ORG0000H
LJMPSTART
ORG0040H
START:
MOVP1,#0FFH;P1口置1
MOVA,P1;读入P1口的DIP电平
MOVP2,A;P2口输出至指示灯
SJMPSTART
将参考程序改为C程序。
3、P3口查询方式输入的交通灯时序
P3口作为输入口,查询P3.2的电平。
当P3.2为低电平时,P2.0输出的1赫兹的方波,表示正常情况下的交通灯时序;当P3.2为高电平时,P2.0输出占空比为75%的2赫兹矩形波,表示紧急情况下的交通灯时序。
用C程序来实现上述交通灯时序的功能,延时时间可通过示波器大致地校准。
4、中断方式输入的交通灯时序
将P3.2作为单片机的中断信号INT0,利用中断方式,读取P3.2的电平,实现上述交通灯时序。
用C程序编写中断程序函数,以及初始化和主程序。
四、预习要求
1、指出中断的设置和开启(即初始化)需要用到哪些特殊功能寄存器的哪些功能位。
指出中断响应以及中断返回时,硬件完成哪些操作,软件完成了哪些操作。
软件操作部分的代码中哪些由编译器直接生成,哪些由用户程序完成。
2、事先修改和编写相应的程序。
五、思考题
1、如何设置堆栈空间?
2、中断方式输入的交通灯时序的程序中,在中断响应时,哪些变量值要入栈,共占用多少栈空间。
实验四定时器计数器实验
一、实验目的
1、掌握单片机定时器的工作原理,体会定时器的使用特点;
2、进一步掌握中断的技术编程方法和特点;
3、体会用定时器中断扫描键盘,以提高CPU的效率。
二、实验仪器
1、C51实验开发板1块
2、直流稳压电源1台
3、仿真器1只
4、PC机1台
三、实验内容
1、在P1.0脚上输出2KHz的方波
2KHz的方波需要定时器产生0.25ms连续的定时信号,可选用T0方式2,自动装入参数的8位定时方式。
单片机的主频为11.0592MHz,定时器初始值应为
256-0.25×1000×11.0592/12=26=1AH
参考程序
ORG0000H
AJMPSTART
ORG000BH;T0中断入口地
CPLP1.0
RETI
ORG0100H
START:
MOVSP,#2FH
MOVTMOD,#02H;置T0为方式2
MOVTL0,#1AH;延时0.25mS的定时器初始值
MOVTH0,#1AH
SETBPT0
SETBTR0
SETBET0
SETBEA;开中断
SJMP$
运行程序,用示波器观察波形的脉宽和周期。
将上述程序改为C程序,重新运行,观察波形的脉宽和周期。
2、秒计数
秒计数可用20次50ms的计数溢出来实现。
50ms的计数可选用T0方式1,16位定时方式,定时器初始值应为
65536-50×1000×11.0592/12=19456=4C00H
考虑中断响应时间及重装定时器初始值的时间共计约4个机器周期,定时器初始值加4(即4C04)。
秒计数值通过P2口输出,用LED指示灯显示。
设计C程序,实现上述秒计数功能。
3、实现简易电子琴的演奏功能
实现简易电子琴的演奏功能,重复演奏“哆、唻、咪、发、嗦、啦、嘻”,每音各一拍,速度为100拍/分,各音的频率分别为523.25Hz、578.32Hz、659.25Hz、698.44Hz、783.97Hz、879.98Hz、987.73Hz。
(相邻半音的频率相差1.059463倍,即十二平均律)
各音频输出波形为方波,P0.0输出驱动蜂鸣器发声,或驱动电路至扬声器发声。
用C程序编写演奏程序。
四、预习要求
1、复习定时器计数器的内容,复习中断及响应的过程;
2、编写出各个实验内容的相应程序。
五、思考题
1、如何将秒计数改为时钟程序;
2、如何方便、灵活地实现演奏“生日快乐”等歌曲?
实验五键盘显示电路实验
一、实验目的
1、掌握理解七段LED动态显示的工作原理,掌握动态显示的编程方法和特点;
2、进一步掌握定时显示的编程方法和特点;
3、掌握中断扫描键盘,近一步提高CPU的效率。
二、实
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 实验 指导书 27 word 文档