实验8 8155实验<br /><font color=#0000FF>实验目的:</font><br />1、掌握8155内部结构、原理和引脚功能。<br />2、学会CPU与8155的连接以及对它的编程。<br /><font color=#0000FF>实验器材:</font><br />电脑、开发系统、电源<br />实验内容、要求:<br /> 一、实验用A口做输出口。<br /> 具体要求:<br /> 1 用连接线分别连接A口的八个脚到八个发光管(简单起见,可仅连一个)<br /> 2 编制一个程序,单步运行程序,使连接在A口的发光二极管按亮 –灭 变化。<br /> 二、 实验用B口做输入口,A口做输出口。<br /> 具体要求:<br /> 1、 PB.0连开关(可选输入高电平或底电平),PA.0接发光管。[BLOCKQUOTE]<br />2、编制一个程序,连续运行程序,拨动开关,发光管显示输入电平的状态。[/BLOCKQUOTE]<br />实验电路连 线:<br /> PA.0-L9 LA.1-L10........PA.7-L16 简单起见,可仅连PA.0-L9<br /> PB.0-L1 PB.1-L2.....PB.7-L8 简单起见,可仅连PB.0-L1<br />实际连接情 况:<br /> <img src="http://www.fosu.edu.cn/fas/shiyan/Dcsf0083.jpg"><br />有关本实验涉及的书本知识点<br /> 课本 <br />8155的基本知识复习<br />1、8155芯片介绍:<br />Intel 8155芯片内包含有256个字节RAM,2个8位、1个6位的可编程并行I/O口和1个14位定时器/计数器。8155可直接与MCS-51单片机连接不需要增加任何硬件逻辑。由于8155既有RAM又具有I/O口,因而是MCS-51单片机系统中最常用的外围接口芯片之一,8155的引脚及内部结构如下图:<br /><img src="http://www.fosu.edu.cn/fas/shiyan/Image4.jpg"><br /> <br /> <OL><li>引脚说明: </li></OL>[BLOCKQUOTE]<br />8155共有40个引脚,采用双列直插式封装。各引脚功能如下:<br />AD7~AD0:地址数据总路线。单片机和8155之间的地址、数据、命令、状态信息都是通过它传送的。<br />/CE:片先信号线,低电平有效<br />/RD:存储器读信号线,低电平有效。<br />/WR:存储器写信号线,低电平有效、<br />ALE:地址及片选信号锁存线,高电平有效,其后沿将地址及片选信号锁存到器件中。[/BLOCKQUOTE]<br />IO//M:I/O接口与存储器选择依赖线,高电平表示选择I/O接口,低电平选择存储器。<br />PA7~PA0:A口输入/输出线。<br />PB7~PB0:B口输入/输出线。<br />PC5~PC0:C口输入/输出或控制信号线。用作控制信号线时,其功能如下:<br />PC0:A INTR(A口中断信号线)。<br />PC1:A BF(A口缓冲器满信号线)。<br />PC2:/ASTB(A口选通线)。<br />PC3:B INTR(B口中断信号线)。<br />PC4:B BF(B口缓冲器满信号线)。<br />PC5:/BSTB(B口选通线)。<br />TIMER IN:定时器/计时器输入端。<br />/TIMER OUT:定时器/计数器输出端。<br />RESET:复位信号线。<br />VCC:+5V电源。<br />VSS:地。<br />8155内部结构包括两个8位并行输入/输出端口,一个6位并行输入/输出端口,256个字节的静态随机存取存储器RAM,一个地址锁存器,一个14位的定时器/计数器以及控制逻辑电路,各部件和存储器地址的选择由IO//M信号决定。<br />当IO//M=0(低电平)时,表示AD7~AD0输入的是存储器地址,寻址范围为00H~FF。<br />当IO//M=1(高电平)时,表示AD7~AD0输入的是I/O接口地址,其编码如下表所示。其中A7~A3可经译码器进行译码,产生片选信号/CE,内部寄存器和口地址由A2~A0给出。<table class=ubb cellspacing=0><TR><td class=ubb><br />AD7~AD0</td><td class=ubb><br />寄存器</td></TR><TR><td class=ubb><br />A7 A6 A5 A4 A3 A2 A1 A0</td></TR><TR><td class=ubb><br />X X X X X 0 0 0 </td><td class=ubb><br />命令/状态寄存器(命令状态口)</td></TR><TR><td class=ubb><br />X X X X X 0 0 1</td><td class=ubb><br />A口</td></TR><TR><td class=ubb><br />X X X X X 0 1 0</td><td class=ubb><br />B口</td></TR><TR><td class=ubb><br />X X X X X 0 1 1</td><td class=ubb><br />C口</td></TR><TR><td class=ubb><br />X X X X X 1 0 0</td><td class=ubb><br />定时器低8位</td></TR><TR><td class=ubb><br />X X X X X 1 0 1</td><td class=ubb><br />定时器高6位和2位计数方式位</td></TR></table><br /> <br /> <br />7 6 5 4 3 2 1 0<br /> <br /> <br />PA:0-A口输入 1-A口输出<br />PB:0-B口输入 1-B口输出<br />PC2、PC1:<br />00=ALT1:A口,B口基本输入输出,C口输入<br />01=ALT2:A口,B口基本输入输出,C口输出<br />10=ALT3:A口选通输入输出,B口基本输入输出<br />PC0:AINTR,PC1:ABF,PC2:/ASTB,PC3-PC5输出<br />11=ALE4:A口,B口选通输入输出[BLOCKQUOTE]<br />PC0:AINTR,PC1:ABF,PC2:/ASTB,PC3:BINTR,PC4:BBF[BLOCKQUOTE][BLOCKQUOTE]<br />PC5:/BSTB[/BLOCKQUOTE][/BLOCKQUOTE][/BLOCKQUOTE]<br />IEA:1-允许A口中断;0-禁止A口中断<br />IEB:1-允许B口中断;0-禁止B口中断<br />TM2、TM1:<br />00:空操作,不影响计数操作<br />01:停止定时器计数<br />10:若定时器正在计数,计数长度减速为0停止计数<br />11:启动,置方式和长度后立即启动,若正在运行表示 置新的方式和定时器长度,计数结束后,按新的方式和长度计数。<br />B、工作方式:<br />在8155的逻辑部件中,设置有一个控制命令寄存器和一个状态标志寄存器。8155的工作方式由CPU写入控制命令寄存器中的控制字来确定。控制命令寄存器只能写入不能读出,8位控制命令寄存器的低4位用来设置A口、B口和C口的工作方式。第4、5位用来确定A口、B口以选通过输入输出方式工作时是否允许中断请求。第6、7位用来设置定时器/计数器的操作。工作方式控制字的格式如上图所示:<br />8155的A口、B口 可工作于基本I/O方式或选通方式,C口 可作为输入输出口线,也可作为A口、B口 选通方式工作时的状态控制信号线,其工作情况与8255方式0,方式1时大致相同,控制信号的含义也基本一样。<br />另外,在8155中还设置有一个状态标志寄存器,用来存放A口和B口的状态标志,状态标志寄存器的地址与命令寄存器地址相同,CPU只能读出,不能写入。状态标志寄存器的格式如下图所示,所以CPU可以直接查询。<table class=ubb cellspacing=0><TR><td class=ubb><br />D7</td><td class=ubb><br />D6</td><td class=ubb><br />D5</td><td class=ubb><br />D4</td><td class=ubb><br />D3</td><td class=ubb><br />D2</td><td class=ubb><br />D1</td><td class=ubb><br />D0</td></TR><TR><td class=ubb><br />X</td><td class=ubb><br />TMER</td><td class=ubb><br />INTEB</td><td class=ubb><br />BBF</td><td class=ubb><br />INTRB</td><td class=ubb><br />INTEA</td><td class=ubb><br />ABF</td><td class=ubb><br />INTR</td></TR></table><br /> <br />INTR:中断请求 INTE:端口中断允许<br />BF:缓冲器满标志 TIMER:定时中断<br />C、定时器/计数器<br />在8155中还设置有一个14位的定时器/计数器,可用来定时或对外部事件计数,CPU可通过程序选择计数长度和计方式。计数长度和计数方式由输入给计数寄存器计数控制字来确定,计数寄存器的格式如下:<br />TL(04H)<br />D7 D0<br /> <table class=ubb cellspacing=0><TR><td class=ubb><br />T7</td><td class=ubb><br />T6</td><td class=ubb><br />T5</td><td class=ubb><br />T4</td><td class=ubb><br />T3</td><td class=ubb><br />T2</td><td class=ubb><br />T1</td><td class=ubb><br />T0</td></TR></table><br /> <br />TH(05H)<br />D7 D0<br /> <table class=ubb cellspacing=0><TR><td class=ubb><br />M2</td><td class=ubb><br />M1</td><td class=ubb><br />T13</td><td class=ubb><br />T12</td><td class=ubb><br />T11</td><td class=ubb><br />T10</td><td class=ubb><br />T9</td><td class=ubb><br />T8</td></TR></table><br />复习要点:<br />要实现对8155的A口输出,要实现如下条件:<OL><li>CE=0 (底电平),IO/M =1 ,写入8155的状态寄存器 01H </li></OL>[BLOCKQUOTE]<br />2 CE=0 IO/M=1 写入8155的A口 0FFH<br />3 CE=0 IO/M=1 写入8155的A口 00H[/BLOCKQUOTE]<br />实验电路图:<br />T2.JPG<br /><img src="http://www.fosu.edu.cn/fas/shiyan/Image6.jpg"><br />T3JPG<br /><img src="http://www.fosu.edu.cn/fas/shiyan/Image5.jpg"><br />T9.JPG (上图的74LS32或门电路,74HC138是译码器,当E3为高电平,E1,E2为低电平时选中译码)<br /> <img src="http://www.fosu.edu.cn/fas/shiyan/T9.jpg"><br /> <br />实验程序:<br />实验内容1: 参考以下程序,根据原理图,分析过程。<br />ORG 00H<br />SJMP STAR<br />ORG 30H<br />STAR:MOV DPTR,#0900H ;选中8155的命令寄存器<br />MOV A,#01H ;<br />MOVx @DPTR,A ;命令寄存器设为01H=000000001B D0=1A口输出,D1=0B口输入。 <br />MOV DPTR,#0901H ;<br />LOOP: MOV A,#0FFH ;A口输出0FFH<br />MOVX,@DPTR,A ;<br />MOV A,#00H ;A口输出○○H<br />MOVX,@DPTR,A ;<br />SJMP LOOP<br />END<br /> <br />实验内容2参考程序:<br />ORG 00H<br />SJMP STAR<br />ORG 30H<br />STAR: MOV DPTR,#0900H ;命令寄存器设为01H=000000001B D0=1A口输出,D1=0B口输入。<br />MOV A,#01H<br />MOV @DPTR,A <br />LOOP: MOV DPTR,#0902H<br />MOVX A,@DPTR ;读B口数据到A<br />MOV DPTR ,#0901H<br />MOVX @DPTR,A ;将A口输出到A口<br />SJMP LOOP<br />END<br />思考题:如果要用B口做输出口,如何编制程序?<br />实验报告要求:<OL><OL><li>画出8155的连接电路(实验指导书P38页第一个图) <li>写出程序及每个语句的作用。 </li></OL></OL>
|