单片机实验实验指导书2017年2月单片机实验报告(自动化XX级)实验名称学生联系方式学号院系工学院电气与信息工程系专业自动化指导教师填写日期实验一数据传送一、实验目的1.进一步熟悉仿真器的使用方法。
2.练习设计简单的程序。
3.掌握8051片RAM和片外RAM的数据传送方法,从而了解这两部分存贮器的特点。
二、实验容将8051部RAM 40H~4FH置初值00H~0FH,然后将40H~4FH容传送到外部RAM的4800H~480FH,再将4800H~480FH传回部RAM的50H~5FH。
设置断点B1、B2、B3每运行到断点时检查相应的CPU现场和存贮单元的容。
三、实验准备1、认真阅读本实验指导。
2、读懂下面的程序:#include<reg51.h>#include<absacc.h>char data *p40 ,*p50 ;char xdata *p4800;char i, j, k;void main( ){p40=0x40;p50=0x50;p4800=0x4800;for(i=0;i<16;i++){*p40=i;p40=p40+1;}//B1p40=0x40;for(j=0;j<16;j++){*p4800=*p40;p40=p40+1;p4800=p4800+1;}// B2p4800=0x4800;for(k=0;k<16;k++){*p50=*p4800;p50=p50+1;p4800=p4800+1;} }//B33、画出如下要测的数据表格:四、实验步骤1、向机器输入程序。
2、运行程序至第一个断点B1,检查40H~0FH单元容及指针p40的容。
3、运行程序至第二个断点B2,检查4800H~480FH单元容及指针p40,p4800的容。
4、运行程序至第三个断点B3,检查50H~5FH单元容及累加器及指针p50的容。
五、实验报告要求1、写出C语言源程序和对应的汇编语言指令及注解的程序清单。
2、将测得的数据填入表格,并和理论分析的结果相比较。
3、说明8031CPU对部存贮器和外部扩展RAM存贮器各有哪些寻址方式?4、如果要读外部程序存储器0x4800中的容,该如何访问?5.实验心得。
(必须)实验一并行口一、实验目的通过实验了解8051并行口输入方式和输出方式的工作原理及编程方法。
二、实验容1、输出实验如图4-1所示。
以8031的P2口为输出口。
通过程序控制发光二极管的亮灭。
2、输入实验如图4-1所示。
以8031的P1口为输入口。
用开关向P1.0~P1.3输入不同的状态,控制P2口P2.4~P2.7发光二极管的亮灭。
3、查询输入输出实验如图1-1所示。
以8051的P1.6或P1.0为输入位,以P2口为输出,二进制计数记录按键的次数。
图1-1三、编程提示1、输出实验程序(1)设计一组显示花样,编程使得P2口按照设计的花样重复显示。
(2)为了便于观察,每一状态加入延时程序。
2、输入实验程序开关打开,则输入为1;开关闭合,则输入为0。
读取P1.0~ P1.3的状态,并将它们输出到P2.4~ P2.7,驱动发光二极管。
所以发光二极管L1~L4的亮灭应与开关P1.0~ P1.3的设置相吻合。
3、查询输入输出程序(1)编程计数P1.0按键次数,按键不去抖动。
(2)编程计数P1.6按键次数,按键不去抖动。
(3)编程计数P1.0按键次数,按键软件延时去抖动。
观察(1)、(2)、(3)、的结果。
四、实验器材计算机,目标系统实验板五、实验步骤1、在KEILC中按要求编好程序,编译,软件调试,生成.HEX文件。
2、断开电源,按图1-1所示,连好开关及发光二极管电路。
3、下载程序。
4、调试运行程序,观察发光二极管状态。
六、实验报告要求1、列出各实验的程序清单。
2、记录实验现象,并与理论分析结果相比较。
3.实验心得。
(必须)4.附能说明实验原理的实验照片。
(必须)实验三外部中断一、实验目的1、掌握单片机外部中断的原理及过程。
2、掌握单片机外部中断程序的设计方法。
3、掌握单片机外部中断时中断方式的选择方法。
二、实验容如下图所示,P3.2设为输入, P2设为输出位,连有8个发光二极管D1~D8。
每当发生外部中断时,发光二极管以向下流水灯的方式点亮。
分别选择边沿触发外部中断放是和电平触发外部中断方式两种。
三、编程提示1、P3口是8位准双向口,具有双重功能:第一功能和P1口一样,作为输入输出口,也有字节操作和位操作两种方式,每一位可分别定义为输入或输出;第二功能定义如下:P3.0 RXD 串行输入口P3.1 TXD 串行输出口P3.2 INT0 外部中断0请求输入线P3.3 INT1 外部中断1请求输入线P3.4 T0定时器/计数器T0外部计数器脉冲输入线P3.5 T1定时器/计数器T1外部计数器脉冲输入线P3.6 WR外部数据存贮器写脉冲输出线P3.7 RD外部数据存贮器读脉冲输出线2、各中断服务程序入口地址:外部中断0 03H定时器/计数器T1溢出中断 0BH外部中断1 13H定时器/计数器 1BH串行口中断 23H3、外部中断的产生条件中断允许寄存器IE:(1)外部中断源允许中断(中断0:EX0=1;中断1:EX1=1)。
(2)CPU开中断(EA=1)。
(3)外部中断方式CPU发出中断申请。
4、外部中断方式的选择控制TCON:IT0=1,后一方式IT0=0。
IT1是选择外部中断1请求(INT1)为边沿触发方式或电平触发方式的控制位。
前一方式IT1=1,后一方式IT1=0。
当8031复位后,TCON被清0。
5、外部中断电路负脉冲作为中断请求信号时,为了保证中断的唯一性,必须加上消除开关抖动的电路或者去抖动延时程序,保证每次只产生单脉冲,构成边沿触发方式外部中断电路。
边沿触发的最大优点在于不会丢失中断。
只要中断请求负跳变的宽度大于1 个机器周期,单片机就能够采样到中断请求信号,单片机将采样到的信号琐存到中断请求标志寄存器中,硬件自动置IE0为1,即使单片机暂时不响应,这个标志也不会丢失,只有在外部中断响应之后,硬件才将IE0清除。
低电平触发的外部中断与边沿触发的外部中断,其中断过程基本相似。
唯一不同在于中断请求信号的保持与撤消。
在边沿触发中,单片机TCON寄存器专门有一位作它的请求标志,当负跳变后,单片机将中断请求标志IE1(INT1中断为IE1,INT0中断为IE0)自动置1,由IE1请求中断,在响应中断时,又由单片机自动清除IE1。
但是对于电平触发方式,单片机中没有专门的请求标志,响应中断时也不能自动清除请求信号。
在实际应用中,常常是在单片机外增加一个触发器作为中断请求标志,当中断请求发生时置触发器为0,使INT1为低电平,在单片机响应这个中断后,利用软件(占用另一根I/O 线,例如P3.1)发出复位脉冲,使该触发器置1,撤消中断请求。
这种电路使请求中断的低电平能够保持足够的时间,一直到中断发生为止,因而不会丢失中断请求。
低电平的时间又不致太长,只要进入中断服务程序,在返回之前,就撤消请求信号,因而也不会产生多余的中断动作。
四、实验器材仿真器、目标系统实验板、直流电源五、实验步骤1、边沿触发式外部中断0实验(1) P3.2设为边沿触发方式,连接外部复位开关,编程使每次中断流水灯向下移位一次,中断程序中不延时去抖动,观察结果。
(2)P3.2设为边沿触发方式,连接外部复位开关,编程使每次中断流水灯向下移位一次,中断程序中采用延时去抖动,观察结果。
(3)P3.3设为边沿触发方式,连接外部RS触发器硬件去抖动的开关,编程使每次中断流水灯向下移位一次,中断程序中不延时去抖动,观察结果。
2、电平触发式外部中断实验P3.3设为电平触发方式,连接外部RS触发器硬件去抖动的开关,编程使每次中断流水灯向下移位一次,中断程序中不延时去抖动,观察结果。
六、实验报告要求1、列出程序清单。
说明边沿触发和电平触发两种方式中断响应的原理与区别。
2、说明实验观察到的现象,并与理论分析结果相比较。
3.实验心得。
(必须)4.附能说明实验原理的实验照片。
(必须)实验四定时器/计数器一、实验目的1、掌握定时器的工作原理、工作方式、计数与定时2、掌握定时器的使用方法和程序设计方法。
二、实验容如图所示,P1.7接有一个发光二极管,利用定时器控制它亮一秒灭一秒,周而复始。
图三、编程提示1、MCS-51单片机部有两个可编程的定时器T0和T1,T0由特殊功能寄存取器TL0和TH0构成。
T1由特殊功能寄存器TL1和TH1构成。
有四种工作方式,即方式0、1、2、3(方式3仅对T0适用)。
每种方式可以用于定时或计数。
它们均由控制寄存器TMOD设定:低4位为T0的控制字,高4位为T1的控制字。
M1M0决定工作方式: M1M0=00时为方式0,M1M0=01时为方式1,M1M0=10时为方式2。
M1M0=11时为方式3。
方式0:TL0(TL1)低5位和TH0(TH1)8位构成13位计数器。
TH0(TH1)加1计数溢出时置1溢出中断标志TF0(TF1)。
方式1:TL0(TL1)8位和TH0(TH1)8位构成16位计数器。
TH0(TH1)加1计数溢出时置1溢出中断标志TF0(TF1)。
方式2:TL0(TL1)作为8位计数器,TH0(TH1)作为常数缓冲器,当TL0(TL1)计数溢出时,在置1溢出中断标志TF0(TF1)的同时,将TH0(TH1)中的常数送入TL0(TL1),使TL0(TL1)从初值开始重新计数,构成初始常数自动装入的8位计数器。
方式3:T0分为两个独立的状态8位计数器TL0和TH0。
TL0占用全部定时器T0的控制位,即C/ /T、GATE、TR0、TF0等。
TH0对机器周期进行计数,并使用定时器T1的状态控制位,即TR1、TF1等。
C/ /T决定计数或定时:C/ /T=1为计数方式,C/ /T=0为定时方式。
计数方式:采用外部引脚(T0为P3.4,T1为P3.5)的输入脉冲作为计数脉冲,当T0(或T1)输入发生高到低的负跳变时,计数器加1。
定时方式:每个机器周期计数器加1,由于每个机器周期12个振荡周期,所以直数的速率是振荡频率的1/12,从计数值便可求得计数的时间,所以称为定时方式。
设振荡频率为6MHZ,则机器周期T=12/f=12/6=2us。
2、1秒的定时由定时器T0和T1联合完成。
使T0工作在定时方式,T1工作在计数方式。
将T0的定时时间定为100ms,当定时时间到后,P1.0输出反相加到T1脚(P3.5)。
P1.0初始化为1,第一个100ms时间到时,将P1.0取反变为0,使加在T1的脉冲为正,第二个100ms时间到时,又将P1.0取反变为1,使加在T1的脉冲为负。