试验八8255可编程并行接口试验二Word格式.docx

上传人:b****2 文档编号:3142284 上传时间:2023-05-01 格式:DOCX 页数:42 大小:557.67KB
下载 相关 举报
试验八8255可编程并行接口试验二Word格式.docx_第1页
第1页 / 共42页
试验八8255可编程并行接口试验二Word格式.docx_第2页
第2页 / 共42页
试验八8255可编程并行接口试验二Word格式.docx_第3页
第3页 / 共42页
试验八8255可编程并行接口试验二Word格式.docx_第4页
第4页 / 共42页
试验八8255可编程并行接口试验二Word格式.docx_第5页
第5页 / 共42页
试验八8255可编程并行接口试验二Word格式.docx_第6页
第6页 / 共42页
试验八8255可编程并行接口试验二Word格式.docx_第7页
第7页 / 共42页
试验八8255可编程并行接口试验二Word格式.docx_第8页
第8页 / 共42页
试验八8255可编程并行接口试验二Word格式.docx_第9页
第9页 / 共42页
试验八8255可编程并行接口试验二Word格式.docx_第10页
第10页 / 共42页
试验八8255可编程并行接口试验二Word格式.docx_第11页
第11页 / 共42页
试验八8255可编程并行接口试验二Word格式.docx_第12页
第12页 / 共42页
试验八8255可编程并行接口试验二Word格式.docx_第13页
第13页 / 共42页
试验八8255可编程并行接口试验二Word格式.docx_第14页
第14页 / 共42页
试验八8255可编程并行接口试验二Word格式.docx_第15页
第15页 / 共42页
试验八8255可编程并行接口试验二Word格式.docx_第16页
第16页 / 共42页
试验八8255可编程并行接口试验二Word格式.docx_第17页
第17页 / 共42页
试验八8255可编程并行接口试验二Word格式.docx_第18页
第18页 / 共42页
试验八8255可编程并行接口试验二Word格式.docx_第19页
第19页 / 共42页
试验八8255可编程并行接口试验二Word格式.docx_第20页
第20页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

试验八8255可编程并行接口试验二Word格式.docx

《试验八8255可编程并行接口试验二Word格式.docx》由会员分享,可在线阅读,更多相关《试验八8255可编程并行接口试验二Word格式.docx(42页珍藏版)》请在冰点文库上搜索。

试验八8255可编程并行接口试验二Word格式.docx

0.256+1÷

0.256)=0.1×

10?

指令

(1)指令

(2)指令(3)指令(4)所需时间所需时间所需时间所需时间=(0.1×

×

-1÷

0.256)/(1÷

0.256)=127D=7FH

经计算得X=127。

代入上式可知实际延时时间约为0.100215s,已经很精确了。

【实验原理图】

【实验步骤】

执行程序1(T1_1.ASM)时:

P1.0~P1.7接发光二极管L1~L8。

执行程序2(T1_1.ASM)时:

P1.0~P1.7接平推开关K1~K8;

74LS273的O0~O7接发光二极管L1~L8;

74LS273的片选端CS273接CS0。

【程序框图】

【参考程序】

⒈循环点亮发光二极管

NAMET1_1

CSEGAT0000H

LJMPSTART

CSEGAT4100H

START:

MOVA,#0FEH

LOOP:

RRA

MOVP1,A

LCALLDELAY

JMPLOOP

DELAY:

MOVR1,#127

DEL1:

MOVR2,#200

DEL2:

DJNZR2,DEL2

DJNZR1,DEL1

RET

END

⒉通过发光二极管将P1口的状态显示

NAMET1_2;

P1口输入实验

OUT_PORTEQU0CFA0H

LJMPSTART

MOVP1,#0FFH;

复位P1口为输入状态

MOVA,P1;

读P1口的状态值入累加器A

MOVDPTR,#OUT_PORT;

将输出口地址赋给地址指针DPTR

MOVX@DPTR,A;

将累加器A的值赋给DPTR指向的地址

JMPSTART;

继续循环监测端口P1的状态

实验二P1口实验二

⒈学习P1口既做输入又做为输出的使用方法。

⒉学习数据输入、输出程序的设计方法。

P1口的使用方法这里不讲了。

有兴趣者不妨将实验例程中的“SETBP1.0,SETBP1.1”中的“SETB”改为“CLR”看看会有什么结果。

另外,例程中给出了一种N路转移的常用设计方法,该方法利用JMP@A+DPTR的计算功能,实现转移。

该方法的优点是设计简单,转移表短,但转移表大小加上各个程序长度必须小于256字节。

平推开关的输出K1接P1.0;

K2接P1.1;

发光二极管的输入L1接P1.2;

L2接P1.3;

L5接P1.4;

L6接P1.5。

运行实验程序,K1做为左转弯开关,K2做为右转弯开关。

L5、L6做为右转弯灯,L1、L2做为左转弯灯。

结果显示:

⒈1接高电平K2接低电平时,右转弯灯(L5、L6)灭,左转弯灯(L1、L2)以一定频率闪烁;

⒉K2接高电平K1接低电平时,左转弯灯(L1、L2)灭,右转弯灯(L5、L6)以一定频率闪烁;

⒊K1、K2同时接低电平时,发光二极管全灭;

⒋K1、K2同时接高电平时,发光二极管全亮。

【参考程序】

NAMET2;

P1口输实验

SETBP1.0

SETBP1.1;

用于输入时先置位口内锁存器

MOVA,P1

ANLA,#03H;

从P1口读入开关状态,取低两位

MOVDPTR,#TAB;

转移表首地址送DPTR

MOVCA,@A+DPTR

JMP@A+DPTR

TAB:

DBPRG0-TAB

DBPRG1-TAB

DBPRG2-TAB

DBPRG3-TAB

PRG0:

向P1口输出0,发光二极管全灭;

此时K1=0,K2=0

JMPSTART

PRG1:

MOVP1,#0F3H;

只点亮L1、L2,表示左转弯

ACALLDELAY;

此时K1=1,K2=0

MOVP1,#0FFH;

再熄灭0.5秒

延时0.5秒

PRG2:

MOVP1,#03FH;

只点亮L5、L6,表示右转弯

此时K1=0,K2=1

MOVP1,#0FFH

AALLDELAY

PRG3:

MOVP1,#00H;

发光二极管全亮,此时K1=1,K2=1

MOVR1,#5;

MOVR3,#126

DEL3:

DJNZR3,DEL3

DJNZR2,DEL2

实验三简单I/O扩展实验(交通灯控制)

【实验题目】

扩展实验箱上的74LS273做为输出口,控制八个发光二极管燃灭,模拟交通灯。

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

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

⒊学习模拟交通灯控制的实现方法。

【实验原理】.

要完成本实验,首先必须了解交通路灯的燃灭规律。

本实验需要用到实验箱上八个发光二极管中的六个,即红、黄、绿各两个。

不妨将L1、L3、L5做为东西方向的指示灯,将L2、L4、L6做为南北方向的指示灯。

而交通灯的燃灭规律为:

初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。

闪烁若干次后,东西路口的红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁,闪烁若干次后,再切换到东西路口方向,重复上述过程。

各发光二极管共阳极,阴极接有与非门,因此使其点亮使相应输入端为高电平。

74LS273的输出O0~O7接发光二极管L1~L8,74LS273的片选CS273接片选信号CSO,此时74LS273的片选地址为CFA0H~CFA7H之间任选。

运行实验程序,观察LED显示情况是否与实验内容相符。

NAMET3;

I/O口扩展实验一

PORTEQU0CFA0H;

片选地址CS0

MOVA,#11H;

两个红灯亮,黄灯、绿灯灭

ACALLDISP;

调用273显示单元(以下雷同)

ACALLDE3S;

延时3秒

LLL:

MOVA,#12H;

东西路口绿灯亮;

南北路口红灯亮

ACALLDISP

ACALLDE10S;

延时10秒

MOVA,#10H;

东西路口绿灯灭;

MOVR2,#05H;

R2中的值为黄灯闪烁次数

TTT:

MOVA,#14H;

东西路口黄灯亮;

ACALLDE02S;

延时0.2秒

东西路口黄灯灭;

DJNZR2,TTT;

返回TTT,使东西路口;

黄灯闪烁五次

MOVA,#11H;

MOVA,#21H;

东西路口红灯亮;

南北路口绿灯亮

MOVA,#01H;

南北路口绿灯灭

GGG:

MOVA,#41H;

南北路口黄灯亮

南北路口黄灯灭

DJNZR2,GGG;

返回GGG,使南北路口;

MOVA,#03H;

JMPLLL;

转LLL循环

DE10S:

MOVR5,#100;

JMPDE1

DE3S:

MOVR5,#30;

DE02S:

MOVR5,#02;

DE1:

MOVR6,#200

DE2:

MOVR7,#126

DE3:

DJNZR7,DE3

DJNZR6,DE2

DJNZR5,DE1

DISP:

MOVDPTR,#PORT;

273显示单元

CPLA

MOVX@DPTR,A

实验四简单I/O扩展实验二

利用74LS244做为输入口,读取开关状态,并将此状态通过发光二极管显示出来。

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

⒉学习数据输入,输出程序的编制方法。

MCS-51外部扩展空间很大,但数据总线口和控制信号线的负载能力是有限的。

若需要扩展的芯片较多,则MCS-51总线口的负载过重,74LS244是一个扩展输入口,同时也是一个单向驱动器,以减轻总线口的负担。

程序中加了一段延时程序,以减少总线口读写的频繁程度。

延时时间约为0.01秒,不会影响显示的稳定。

⒈74LS244的IN0~IN7接开关的K1~K8,片选信号CS244接CS1。

⒉74LS273的O0~O7接发光二极管的L1~L8,片选信号CS273接CS2。

⒊编程、全速执行。

⒋拨动开关K1~K8,观察发光二极管状态的变化。

NAMET4;

I/O口扩展实验

INPORTEQU0CFA8H;

74LS244端口地址

OUTPORTEQU0CFB0H;

74LS273端口地址

MOVDPTR,#INPORT

MOVXA,@DPTR;

读开关状态

MOVDPTR,#OUTPORT

显示开关状态

MOVR7,#10H;

延时

DEL0:

MOVR6,#0FFH

DJNZR6,DEL1

DJNZR7,DEL0

实验五定时器实验(循环彩灯)

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

P1口的P1.0~P1.7分别接发光二极管的L1~L8。

要求编写程序模拟一循环彩灯。

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

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

【有关说明】

P彩灯变化花样可自行设计。

例程给出的变化花样为:

①L1、L2、…L8依次点亮;

②L1、L2、…L8依次熄灭;

③L1、L2、…L8全亮、全灭。

各时序间隔为0.5秒。

让发光二极管按以上规律循环显示下去。

【连线方法】

P1.0~P1.7分别接发光二极管L1~L8。

【实验电路】

(中断程序框图)

(主程序框图)

NAMET6;

定时器实验

OUTPORTEQU0CFB0H

CSEGAT401BH;

定时器/计数器1中断程序入口地址

LJMPINT

MOVA,#01H;

首显示码

MOVR1,#03H;

03是偏移量,即从基址寄存器到表首的距离

MOVR0,#5H;

05是计数值

MOVTMOD,#10H;

计数器置为方式1

MOVTL1,#0AFH;

装入时间常数

MOVTH1,#03CH

ORLIE,#88H;

CPU中断开放标志位和定时器;

1溢出中断允许位均置位

SETBTR1;

开始计数

LOOP1:

CJNER0,#00,DISP

R0计数计完一个周期,重置初值

INCR1;

表地址偏移量加1

CJNER1,#31H,LOOP2

如到表尾,则重置偏移量初值

LOOP2:

MOVA,R1;

从表中取显示码入累加器

MOVCA,@A+PC

JMPDISP

DB01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,0FEH,0FCH

DB0F8H,0F0H,0E0H,0C0H,80H,00H,0FFH,00H,0FEH

DB0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH,0BFH,0DFH

DB0EFH,0F7H,0FBH,0FDH,0FEH,00H,0FFH,00H

;

MOVDPTR,#OUTPORT 

MOVP1,A;

将取得的显示码从P1口输出显示

JMPLOOP1

INT:

CLRTR1;

停止计数

DECR0;

计数值减一

重置时间常数初值

RETI;

中断返回

实验六8255A可编程并行接口实验1

利用8255A可编程并行接口芯片,重复实验四的内容。

实验可用B通道作为开关量输入口,A通道作为显示输出口。

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

⒉掌握通过8255A并行口读取开关数据的方法。

设置好8255A各端口的工作模式。

实验中应当使三个端口都工作于方式0,并使A口为输出口,B口为输入口。

8255A的PA0~PA7接发光二极管L1~L8;

PB0~PB7接开关K1~K8;

片选信号8255CS接CS0。

NAMET7;

8255A实验一

PAEQU0CFA0H

PBEQU0CFA1H

PCTLEQU0CFA3H

MOVDPTR,#PCTL;

置8255A控制字,A、B、C口均工作

;

方式0,A、C口为输出,B口为输入

MOVA,#082H

MOVDPTR,#PB;

从B口读入开关状态值

MOVXA,@DPTR

MOVDPTR,#PA;

从A口将状态值输出显示

实验七8255可编程并行接口实验2

⒈掌握8255A编程原理。

⒉了解键盘电路的工作原理。

⒊掌握键盘接口电路的编程方法。

⒈识别键的闭合,通常采用行扫描法和行反转法。

行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如所读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。

本实验例程采用的是行反转法。

行反转法识别键闭合时,要将行线接一并行口,先让它工作于输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口往各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。

然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上的输入值,那么,在闭合键所在的行线上的值必定为0。

这样,当一个键被按下时,必定可以读得一对唯一的行线值和列线值。

⒉程序设计时,要学会灵活地对8255A的各端口进行方式设置。

⒊程序设计时,可将各键对应的键值(行线值、列线值)放在一个表中,将要显示的0~F字符放在另一个表中,通过查表来确定按下的是哪一个键并正确显示出来。

利用实验箱上的8255A可编程并行接口芯片和矩阵键盘,编写程序,做到在键盘上每按一个数字键(0~F),用发光二极管将该代码显示出来。

将键盘RL10~RL17接8255A的PB0~PB7;

KA10~KA12接8255A的PA0~PA2;

PC0~PC7接发光二极管的L1~L8;

8255A芯片的片选信号8255CS接CS0。

NAMEt8;

8255键盘实验

PBEQUPA+1

PC0EQUPB+1

PCTLEQUPC0+1

CSEGAT4000H

PCTLEQUPC0+1

MOV42H,#0FFH;

42H中放显示的字符码,初值为0FFH

STA1:

MOVDPTR,#PCTL;

设置控制字,ABC口工作于方式0;

AC口输出而B口用于输入

MOVA,#82H

LINE:

MOVDPTR,#PC0;

将字符码从C口输出显示

MOVA,42H

从A口输出全零到键盘的列线

MOVDPTR,#PB;

从B口读入键盘行线值

MOV40H,A;

行线值存于40H中

CPLA;

取反后如为全零;

表示没有键闭合,继续扫描

JZLINE

有键按下,延时10MS去抖动

DL0:

DL1:

DJNZR6,DL1

DJNZR7,DL0

MOVDPTR,#PCTL;

重置控制字,让A为输入,BC为输出

MOVA,#90H

MOVA,40H

刚才读入的行线值取出从B口送出

从A口读入列线值

MOV41H,A;

列线值存于41H中

取反后如为全零

JZSTA1;

表示没有键按下

MOVDPTR,#TABLE;

TABLE表首地址送DPTR

MOVR7,#18H;

R7中置计数值16

MOVR6,#00H;

R6中放偏移量初值

TT:

从表中取键码前半段字节,行线值与实

CJNEA,40H,NN1;

际输入的行线值相等吗?

不等转NN1

INCDPTR;

相等,指针指向后半字节,即列线值

MOVXA,@DPTR;

列线值与实际输入的列线值

CJNEA,41H,NN2;

相等吗?

不等转NN2

MOVDPTR,#CHAR;

相等,CHAR表基址和R6中的偏移量

MOVA,R6;

取出相应的字符码

MOV42H,A;

字符码存于42H

BBB:

重置控制字,让AC为输出,B为输入

AAA:

MOVA,42H;

将字符码从C口送到二极管显示

MOVDPTR,#PC0

MOVDPTR,#PA;

判断按下的键是否释放

CLRA

MOVDPTR,#PB

JNZAAA;

没释放转AAA

MOVR5,#2;

已释放则延时0.2秒,减少总线负担

MOVR4,#200

DJNZR4,DEL2

DJNZR5,DEL1

转START

NN1:

INCDPTR;

指针指向后半字节即列线值

NN2:

指针指向下一键码前半字节即行线值

INCR6;

CHAR表偏移量加一

DJNZR7,TT;

计数值减一,不为零则转TT继续查找

JMPBBB

TABLE:

DW0FE06H,0FD06H,0FB06H,0F706H;

TABLE为键值表,每个键位占

DW0BF06H,07F06H,0FE05H,0FD05H;

两个字节,第一个字节为行

DW0EF05H,0DF05H,0BF05H,07F05H;

线值,第二个为列线值

DW0FB03H,0F703H

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2