单片机原理4个实验内容.docx
《单片机原理4个实验内容.docx》由会员分享,可在线阅读,更多相关《单片机原理4个实验内容.docx(18页珍藏版)》请在冰豆网上搜索。
单片机原理4个实验内容
实验一 系统认识实验
一、实验目的
1.掌握SICElab-G2200实验/仿真系统的结构与使用方法;
2.熟悉单片机系统开发软件WAVE6000。
二、实验设备
1.G2200/2100实验平台1台2.仿真器/仿真板1台
3.连线若干根4.计算机1台
三、实验内容
P1端口接发光二极管,加1点亮。
四、连线方案:
实验箱内部已连好
五、实验步骤
1.连接Lab51CPU板。
(已由实验师连好)
2.仿真器与实验平台的连接
将Lab51板的DC34芯插座与G6W仿真器上的DC34插座用扁平电缆连接起来。
(已由实验师连好)
3.仿真器与计算机的连接
用随机配带的串口通讯电缆,将仿真器与计算机连接起来,串口1、串口2均可。
特别注意:
在仿真器与计算机连接串口电缆时,两台机器必须都断电,否则易损坏计算机和仿真器。
4.实验连线
按连线方案,用随机配带的实验连线插入孔后,轻轻转动一下锁紧插头,保证良好接触。
拆线时,应先回转一下,不要硬拨,以免损坏线路板。
不管是拆线还是插线,都应在断电的情况下进行。
实验中“连线方案”的粗线即为需用户动手接连的线。
5.检查接线是否有误,确信没有接错后,接上电源,打开电源开关。
6.在计算机上打开“WAVE6000集成调试环境”,界面如下图所示:
7.建立新程序(如果程序已编好,直接跳到第9步)
选择菜单[文件|新建文件]功能。
出现一个文件名为NONAME1的源程序窗口,在此窗口中输入以下程序
ORG0
MOVP1,#0;熄灭发光二极管
LOOP:
INCP1
CALLDelay
SJMPLOOP
Delay:
MOVR2,#3;延时程序
MOVR1,#0
MOVR0,#0
DLP:
DJNZR0,DLP
DJNZR1,DLP
DJNZR2,DLP
RET
END
8.保存程序
选择菜单[文件|保存文件]或[文件|另存为]功能。
给出文件所要保存的位置,例如:
C:
\WAVE6000\SAMPLES文件夹,再给出文件名MY1.ASM。
保存文件。
文件保存后,程序窗口上文件名变成了:
C:
\WAVE6000\SAMPLES\MY1.ASM
9.建立新的项目
选择菜单[文件|新建项目]功能。
新建项目会自动分三步走。
(1)加入模块文件。
在加入模块文件的对话框中选择刚才保存的文件MY1.ASM,按打开键。
如果你是多模块项目,可以同时选择多个文件再打开。
(2)加入包含文件。
在加入包含文件对话框中,选择所要加入的包含文件(可多选)。
如果没有包含文件,按取消键。
(3)保存项目。
在保存项目对话框中输入项目名称。
MY1无须加后缀。
软件会自动将后缀设成“.PRJ”。
按保存键将项目存在与你的源程序相同的文件夹下。
项目保存好后,如果项目窗口是打开的,可以看到项目中的“模块文件”已有一个模块“MY1.ASM”,如果项目窗口没有打开,可以选择菜单[窗口|项目窗口]功能来打开。
10.设置项目
选择菜单[设置|仿真器设置]或双击项目窗口的第一行来打开“仿真器设置”对话框。
在“仿真器”栏中,选择仿真器类型和配置的仿真头以及所要仿真的单片机。
在“语言”栏中,“编译器选择”根据本例的程序选择为“伟福汇编器”。
如果你的程序是C语言或INTEL格式的汇编语言,可根据你安装的Keil编译器版本选择“KeilC”。
在“通信设置”进行端口选择,并测试。
按“好”键确定。
如果仿真器和仿真头设置正确,就会显示如图的硬件仿真确认对话框。
按“好”键确定。
即完成仿真器设置。
如果仿真器初始化过程中有错,软件就会再次出现仿真器设置对话框,这时你应检查仿真器等选择是否有错,检查纠正错误后,再次确认。
直至显示硬件仿真确认对话框完成仿真器设置。
11.编译程序
选择菜单[项目|编译]功能或按编译快捷图标或按F9键,编译项目。
在编译过程中,如果有错可以在信息窗口中显示出来。
双击错误信息,可以在源程序中定位所在行。
纠正错误后,再次编译直到没有错误。
在编译之前,软件会自动将项目和程序存盘。
在编译没有错误后,就可以执行、调试程序了。
12.执行、调试程序
有四种方法执行程序:
全速执行、程序单步跟踪、执行到光标处和设置断点。
(1)全速执行
按图所示方式执行程序,观察结果(直接从实验箱观察或参见12(5)),如果程序与预想的结果不符,可按以下三种方式调试程序。
(2)程序单步跟踪
选择[执行|跟踪]功能或按跟踪快捷图标或按F7键进行单步跟踪调试程序。
单步跟踪就一条指令一条指令地执行程序,若有子程序调用,也会跟踪到子程序中去。
你可以观察程序每步执行的结果,“=>”所指的就是下次将要执行的指令。
由于条件编译或高级语言优化的原因,不是所有的源程序都能产生机器指令。
源程序窗口最左边的“o”代表此行为有效程序,即产生了可以执行的机器码。
到“Delay”延时子程序中,在程序行“DJNZR0,DLP”指令中的“R0”符号上单击就可以观察“R0”的值,观察一下“R0”的值,可以看到“R0”在逐渐减少。
因为当前指令要执行256次才到下一步,整个延时程序要单步执行3×256×256次才能完成。
(3)执行到光标处
将光标移到程序想要暂停的地方,本例中为延时程序返回后的“SJMPLOOP”行。
选择菜单[执行|执行到光标处]或按F4键。
程序全速执行到光标所在行。
如果想下次不想单步调试“Delay”延时程序里的内容,可以按F8键单步执行但不会跟踪到子程序内部。
(4)设置断点
点击[执行|设置/取消断点]或用Ctrl+F8组合键设置断点。
如果断点有效图标为“红圆红底”,无效断点的图标为“红圆绿底”。
断点设置好后,就可以用全速执行的功能,全速执行程序,当程序执行到断点时,会暂停下来,这时可以观察程序中各变量的值,及各端口的状态,判断程序是否正确。
(5)观察各变量值的方法
A.点击[窗口|项目窗口]或[窗口|CPU窗口]可观察到SFR、REG、WATCH(如果设置有观察项)的值,自动跟踪程序执行。
例如点击SFR中的P1可观察本例中P1口各位的变化,如图所示。
B.点击[窗口|数据窗口|DATA]可观察片内数据区的变化。
C.点击[窗口|数据窗口|CODE]可观察代码存储区的内容。
D.点击[窗口|数据窗口|XDATA]可观察片外数据区的变化。
(与CODE是同一个窗口,注意:
有切换按钮,突起的为有效。
)
E.点击[窗口|数据窗口|BIT]可观察片内数据区中位数据区的变化。
六、思考题
1.改写实验程序实现流水灯功能。
写出源程序。
2.在执行调试程序过程中,遇到了哪些问题?
你是如何解决的?
实验二P3.0口输入、P1口输出实验
一、模拟调试
1.实验目的:
掌握模拟调试P3口、P1口的方法。
2.实验内容:
P3.0口输入一脉冲,控制P1口按16进制加一方式变化。
3.实验器材:
(1)已经安装了WAVE6000或VW集成调试环境软件的计算机1台
4.实验步骤:
(1)输入以下程序,存盘并编译通过:
ORG0000h
MOVA,#00H
MOVP1,A
L0812:
JBP3.0,L0812;判断P3,3为高吗?
MOVR2,#10H
LCALLDELY
JBP3.0,L0812;延时后再判断P3.3为高吗?
L081D:
JNBP3.0,L081D;P3.3为低吗?
MOVR2,#10H
LCALLDELY
JNBP3.0,L081D;延时后再判断P3.3为低吗?
INCA;累加器加1
PUSHACC
MOVP1,A;A送P1口
POPACC
AJMPL0812
DELY:
PUSH02H;延时子程序
DEL2:
PUSH02H
DEL3:
PUSH02H
DEL4:
DJNZR2,DEL4
POP02H
DJNZR2,DEL3
POP02H
DJNZR2,DEL2
POP02H
DJNZR2,DELY
RET
(2)打开[外设|端口]窗口,如图17-1
(3)全速运行程序,用鼠标点击“端口”中的P3.0,使之状态发生变化,观察P1口的状态的变化。
一、硬件实验
1.实验目的:
掌握P3口、P1口简单使用。
2.实验内容:
P3.0口输入一脉冲,控制P1口按16进制加一方式点亮发光二极管。
3.实验器材:
(1)G2200/2100实验平台1台
(2)仿真器/仿真板1台
(3)连线若干根(4)计算机1台
4.实验原理:
由8051组成的单片机系统通常情况下,P0口分时复用作为地址、数据总线,P2口提供A15-A8即高8位地址,P3口用作第二功能,只有P1口通常用作I/0口。
P1口是8位准双向口,它的每一位都可独立地定义为输入或输出,因此既可作为8位的并行I/O口,也可作为8位的输入输出端。
当工作在输入方式时,对应位的锁存器必须先置1,才能正确地读到引脚上的信号,否则,执行读引脚指令时,若对应位的锁存器的值为0,读的结果永远为0。
每个I/0端口都有两种读入,即读锁存器和读引脚,读引脚指令一般都是以I/0端口为源操作数的指令,如MOVC,P1.3,而读锁存器指令一般为“读-修改-写”指令,如ANLP1.3,C指令。
5.实验步骤:
P3.0孔用连线连至K0,P1.0-P1.7孔连至L0-L7,K0拨动一次,L0-L7发光二极管按16进制方式加一闪亮。
6.接线图案:
7.程序框图:
8.软件清单:
(C2.C/a2.asm)
实验三定时器实验
一、实验目的
1.学习89C51内部计数器的使用和编程方法
2.进一步掌握中断处理程序的编写方法
二、实验说明
关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。
内部计数器在单片机中主要有定时器和计数器两个功能。
本实验使用的是定时器,定时为一秒钟。
CPU运用定时中断方式,实现每一秒钟输出状态发生一次反转,即发光管每隔一秒钟亮一次。
定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。
TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。
TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。
内部计数器用作定时器时,是对机器周期计数。
每个机器周期的长度是12个振荡器周期。
因为实验系统的晶振是12MHZ,本程序工作于方式2,即8位自动重装方式定时器,定时器100uS中断一次,所以定时常数的设置可按以下方法计算:
机器周期=12÷12MHz=1uS
(256-定时常数)×1uS=200uS
定时常数=56。
然后对200uS中断次数计数2500次,就是1秒钟。
在本实验的中断处理程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。
三、实验内容及步骤
1.使用单片机最小应用系统模块,用导线将P1.0接到任意一只发光二极管上。
2.安装好仿真器,用串行数据通信线连接计算机与仿真器,
3.打开wave6000仿真软件,接着添加“a3.ASM”源程序,编译无误后。
(c3.c使用方式1)
4.全速运行程序,发光二极管隔一秒点亮一次,点亮时间为一秒。
四、实验框图以及源程序(见光盘中的程序文件夹)
1.流程图
五、思考题
1.如何将LED的状态间隔改为2秒,程序如何改写?
2.如果更换不同频率的晶振,会出现什么现象?
如何调整程序?
六、电路图
实验四外部中断实验(1/2型)
一、实验目的
1.掌握外部中断技术的基本使用方法
2.掌握中断处理程序的编写方法
二、实验说明
1.外部中断的初始化设置共有三项内容:
中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断方式设置。
中断方式设置一般有两种方式:
电平方式和脉冲方式,本实验选用后者,其前一次为高电平后一次为低电平时为有效中断请求。
因此高电平状态和低电平状态至少维持一个周期,中断请求信号由引脚INT0(P3.2)和INT1(P3.3)引入,本实验由INT0(P3.2)引入。
2.中断服务的关键:
a、保护进入中断时的状态。
堆栈有保护断点和保护现场的功能使用PUSH指令,在转中断服务程序之前把单片机中有关寄存单元的内容保护起来。
b、必须在中断服务程序中设定是否允许中断重入,即设置EX0位。
c、用POP指令恢复中断时的现场。
3.中断控制原理:
中断控制是提供给用户使用的中断控制手段。
实际上就是控制一些寄存器,51系列用于此目的的控制寄存器有四个:
TCON、IE、SCON及IP。
4.中断响应的过程:
首先中断采样然后中断查询最后中断响应。
采样是中断处理的第一步,对于本实验的脉冲方式的中断请求,若在两个相邻周期采样先高电平后低电平则中断请求有效,IE0或IE1置“1”;否则继续为“0”。
所谓查询就是由CPU测试TCON和SCON中各标志位的状态以确定有没有中断请求发生以及是那一个中断请求。
中断响应就是对中断请求的接受,是在中断查询之后进行的,当查询到有效的中断请求后就响应一次中断。
INT0端接单次脉冲发生器。
P1.0接LED灯,以查看信号反转。
三、实验内容及步骤
本实验需要用到单片机最小应用系统模块、单次脉冲源和发光二极管显示模块。
1.使用单片机最小应用系统模块,P1.0显示模块的一个发光二极管,P3.2(INTO)接单次脉冲源的输出端。
2.安装好仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开试验箱电源。
3.打开wave6000仿真软件,首先建立本实验的项目文件,接着添加“TH14_中断.ASM”源程序,编译无误后,全速运行程序,连续按动单次脉冲产生电路的按键,发光二极管每按一次状态取反,即隔一次点亮。
四、流程图及源程序(见光盘中的程序文件夹)
1.流程图
五、思考题
1.简述中断处理的一般过程。
2.脉冲方式如何防止重复响应外中断。
六、原理图