单片机实验讲义DOC.docx

上传人:b****3 文档编号:4866746 上传时间:2022-12-11 格式:DOCX 页数:17 大小:274.23KB
下载 相关 举报
单片机实验讲义DOC.docx_第1页
第1页 / 共17页
单片机实验讲义DOC.docx_第2页
第2页 / 共17页
单片机实验讲义DOC.docx_第3页
第3页 / 共17页
单片机实验讲义DOC.docx_第4页
第4页 / 共17页
单片机实验讲义DOC.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

单片机实验讲义DOC.docx

《单片机实验讲义DOC.docx》由会员分享,可在线阅读,更多相关《单片机实验讲义DOC.docx(17页珍藏版)》请在冰豆网上搜索。

单片机实验讲义DOC.docx

单片机实验讲义DOC

2013年10月27日星期日

实验一汇编指令的练习与BCD码加减运算

一实验要求

学习和掌握keil汇编编译系统,编写通用4字节压缩BCD码的加、减法运算程序。

二实验目的

通过学习多字节压缩BCD码加减运算的程序设计;学习汇编程序的编写,学会编译.asm源程序,编译,下载。

学习断点设置,单步执行,SFR特殊功能寄存器的查看等编程基本功能。

三实验原理

对于简单的8位加减可以直接调用指令就可以了。

例如加法可以使用指令ADD以及带进位加ADDC,但单字节加减法只能在256之内进行运算;在实际应用中经常需要进行多字节运算,从而处理更大的数据。

该实验介绍单片机BCD码多字节加、减运算通用程序的设计。

1.多字节无符号压缩BCD码加法运算

假设多字节无符号被加数的最低字节的地址为R0,加数的最低字节地址为R1,字节数共为len;计算结果的地址于被加数相同。

◆入口参数:

R0:

被加数地址指针;

R1:

加数地址指针;

len:

字节数。

◆出口参数:

@R0:

计算结果;

rLen:

计算结果字节数。

◆使用资源:

ACC,R0、R1,内部RAM单元len、rlen及存放被加数、加数、计算结果的内存单元。

示例程序如下:

lenDATA70H

rlenDATA71H

ADDSTART:

PUSHPSW;保护标志寄存器内容

CLRC;进位位清0

MOVrlen,#00H;和的字节数先清0

LOOP:

MOVA,@R0;取被加数

ADDCA,@R1;求和

DAA;十进制调整

MOV@R0,A;保存

INCR0;地址增1

INCR1

INCrlen;字节数增1

DJNZlen,LOOP;所有字节未加完继续,否则向下执行

JNCADDEND;和的最高字节无进位转ADD20

MOV@R0,#01H;和的最高字节地址内容为01H

INCrlen

ADDEND:

POPPSW

RET

END

多字节加法运算一般是按从低字节到高字节的顺序进行的,所以必须考虑低字节向高字节的进位情况,被加数和加数的压缩BCD码,最大不超过99,而99+99+1(进位)=199,此时可以不需要使用ADDC指令,但当最低两字节相加后,必须使用“DAA”进行十进制调整,调整后产生进位。

而最高两字节相加后应考虑是否有进位。

若有进位,应向和的最高位字节地址写入01H,这时和数将比加数或被加数多出一个字节。

2.多字节无符号压缩BCD码减法运算

为了使用“DAA”指令对十进制减法进行调整,必须采用对减数求补相加的方法,以9AH为模减去减数即得到减数的补数。

设被减数低字节地址在R1中,减数低字节地址在R0中,字节数在len中;差的低字节地址在R0中,差的字节数在rlen中。

◆入口参数:

R0:

减数地址指针;

R1:

被减数地址指针;

len:

字节数

◆出口参数:

R0:

差的地址指针

rlen:

差的字节数

◆使用资源:

A,R0,R1,内部RAM单元

范例程序如下:

范例程序如下:

SUBSTART:

MOVrlen,#00H;差字节单元清0

CLR07H;07H做符号位标准,符号位清0

CLRC;借位位清0

SUB1:

MOVA,#9AH;减数对模100求补

SUBBA,@R0

ADDA,@R1;补码相加

DAA

MOV@R0,A;存结果

INCR0

INCR1

1NCrlen

CPLC;进位求反以形成正确借位

DJNZlen,SUBl;未减完继续,减完向下执行

JNCSUB2;无借位去别Ⅸm返回主程序,否则继续

SETB07H;有借位,置“1”符号位

SUB2:

RET

END

程序中对减数求补后与被减数相加,用“DAA”指令进行调整。

若二者相加调整后结果无进位(C=0),则表示二者相减有借位;若二者相加调整后有进位(C;1),则表示二者相减无借位。

所以必须对进位标志位C进行求反操作,才能得到正确结果。

 

实验二串并转换实验(串口实验)

一.实验要求

利用8031串行口,和并行输出串行移位寄存器74LS164,扩展一位数码显示在数码显示器上循环显示0-9这10个数字。

二.实验目的

1.掌握8031串行口方式0工作方式及编程方法。

2.掌握利用串行口扩展I/O通道的方法。

三.实验电路及连线

EAT598-51板上的P3.0(RXD)接

模块的DATAIN,P3.1(TXD)接

模块的DCLK。

四.实验说明

串行口工作在方式0时,可通过外接移位寄存器实现串并行转换。

在这种方式下,数据为8位,只能从RXD端输入输出,TXD端总是输出移位同步时钟信号,其波特率固定为晶振频率1/12。

由软件置位串行控制寄存器(SCON)的REN后才能启动串行接收,在CPU将数据写入SBUF寄存器后,立即启动发送。

待8位数据输完后,硬件将SCON寄存器的TI位置1,TI必须由软件清零。

 

五.实验框图

示例程序SLED.ASM程序框图:

 

实验三定时器和计数器实验

第一部分:

定时器实验

一.实验要求

由8031内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。

P1口的P1.0-P1.7分别接八个发光二极管。

要求编写程序模拟一时序控制装置。

开机后第一秒钟L0,L2亮,第二秒钟L1,L3亮,第三秒钟L4,L6亮,第四秒钟L5,L7亮,第五秒L0,L2,L4,L6亮,第六秒钟L1,L3,L5,L7亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L0,L2亮,然后L1,L3亮......一直循环下去。

二.实验目的

1.学习8031内部计数器的使用和编程方法。

2.进一步掌握中断处理程序的编程方法。

三.实验电路及连线

P1.0--P1.7接L0—L7。

四.实验说明

1.关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。

内部计数器在单片机中主要有定时器和计数器两个功能。

本实验用的是定时器,有关计数器的说明请查阅实验七。

2.内部计数器用作定时器时,是对机器周期计数。

每个机器周期的长度是12个振荡器周期。

因为实验系统的晶振是11.0592MHz,所以定时常数的设置可按以下方法计算:

机器周期=12÷11.0592MHz=1.0857μS

(65536-定时常数)*1.0857μS=50mS

定时常数=4C00H

3.定时器的有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。

TMOD用于设置定时器/计数器的工作方式0~3,并确定用于定时还是用于计数。

TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。

4.在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。

五.实验框图

实验示例程序见T1LED.ASM。

程序框图:

 

第二部分:

计数器实验

一.实验要求

8031内部定时计数器,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。

使用8031的T1作定时器,50ms中断一次,看T0内每50ms来了多少脉冲,将其数值按二进制数在74LS273驱动LED灯上显示出来,5秒后再次测试。

二.实验目的

1.学习8031内部定时/计数器使用方法。

2.进一步掌握中断处理编程方法。

三.实验电路及连线

P3.4接一计数脉冲(

模块中的600HZ、300HZ、150HZ中的一个)。

PO0--PO7接L0—L7。

CS273接F200H。

四.实验说明

1.本实验中内部计数器起计数器的作用。

外部事件计数脉冲由P3.4引入定时器T0。

单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。

这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。

同时这就决定了输入波形的频率不能超过机器周期频率。

2.实验时P3.4对应的连线为600HZ、300HZ、150HZ孔,50ms内来了80次(50H)脉冲。

五.实验框图

实验示例程序见TCO.ASM。

程序框图:

实验四I/O接口实验(交通灯控制及中断)

第一部分:

交通灯控制

一.实验要求

以74LS273作为输出口,控制4个双色LED灯(可发红,绿,黄光),模拟交通灯管理。

二.实验目的

1.学习在单片机系统中扩展简单I/O接口的方法。

2.学习数据输出程序的设计方法。

3.学习模拟交通灯控制的方法。

4.学习双色灯的使用。

三.实验电路及连线

PO0-PO3接DG1-DG4,PO4-P07接DR1-DR4。

CS273接F200。

四.实验说明

1.因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化规律。

假设一个十字路口为东西南北走向。

初始状态0为东西红灯,南北红灯。

然后转状态1南北绿灯通车,东西红灯。

过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。

再转状态3,东西绿灯通车,南北红灯。

过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。

最后循环至状态1。

2.双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。

当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。

五.实验框图

实验示例程序见TRLED1.ASM。

程序框图:

TRLED1.ASM主程序框图

第二部分:

外部中断实验(急救车与交通灯)

一.实验要求

在上实验内容的基础上增加允许急救车优先通过的要求。

有急救车到达时,两向交通信号为全红,以便让急救车通过。

假定急救车通过路口时间为5秒,急救车通过后,交通灯恢复中断前状态。

本实验以按键为中断申请,表示有急救车通过。

二.实验目的

1.学习外部中断技术的基本使用方法。

2.学习中断处理程序的编程方法。

三.实验电路及连线

PO0-PO3接DG1-DG4,PO4-P07接DR1-DR4。

CS273接F200H。

K7接P3.2。

四.实验说明

中断服务程序的关键是:

1.保护进入中断时的状态,并在退出中断之前恢复进入时的状态。

2.必须在中断程序中设定是否允许中断重入,即设置EX0位。

本例中使用了INT0中断,一般中断程序进入时应保护PSW,ACC以及中断程序使用但非其专用的寄存器。

本例的INT0程序保护了PSW,ACC,2等三个寄存器并且在退出前恢复了这三个寄存器。

另外中断程序中涉及到关键数据的设置时应关中断,即设置时不允许重入。

本例中没有涉及这种情况。

实验开始时K7应在H(高电平)端,要产生中断时先拨向L(低电平)端再拨回H端。

五.实验框图

实验示例程序见TRLED2.ASM。

程序框图:

 

实验五8255实验

第一部分:

8255输入、输出实验

一.实验要求

编写程序,使用8255可编程并行口芯片,来检测八位拨动开关的状态,并控制八位发光二极管。

使得八位发光二极管的亮灭变化与八位拨动开关的状态相一致。

实验中用8255PB口作输入,PC口做输出。

二.实验目的

了解8255芯片结构及编程方法。

三.实验电路及连线

8255的PB0~PB7(PB口)接至八位拨动开关K0~K7。

将PC0~PC7(PC口)接至八位发光二极管L0–L7。

CS8255接F228。

四.实验说明

可编程通用接口芯片8255A有三个八位的并行I/O口,请用户仔细阅读有关书籍掌握其特点和各种用法。

由于8255的A1、A2脚分别接至地址线的A0、A1。

所以相对应8255各口/寄存器的地址分配如下:

PA口:

F228H;PB口:

F229H;PC口:

F22AH;控制寄存器地址:

F22BH。

本示例程序中使用PB口作输入,检测八位拨动开关的状态;使用PC口作输出,控制八个发光二极管的亮灭。

五.实验程序及框图

实验示例程序见8255.ASM。

实验示例程序流程框图如下:

 

 

第二部分:

扫描键盘、显示实验

一.实验要求

利用8255可编程并行口做一个扫描键盘实验,把按键输入的键码,显示在由PA口控制的七段数码管上。

8255PB口做键盘输入线,PC口作扫描线。

二.实验目的

1.掌握8255编程方法。

2.掌握扫描键盘和显示的编程方法。

三.实验电路及连线

CS8255接F228H,则命令字地址为F22BH,PA口地址为F228H,PB口地址为F229H,PC口地址为F22AH。

模块中的十个短路套都套在8155/8255侧。

四.实验说明

在PB口与PC口组成的64点阵列上,把按键接在不同的点上,将得到不同的键码,本实验采用8×2的阵列,共可按16个键。

显示部分由PA控制,由7407驱动8位数码管显示。

五.实验框图

实验示例程序见8255_key.ASM。

实验示例程序流程框图如下:

8255_KEY.ASM主程序框图读键显示部分框图

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1