可编程并行接口芯片8255的应用实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{ TMOD=0X01; TH0=0x3C; TL0=0XB0; EA=1; ET0=1; TR0=1; do {} while(time<20); time=0; TR0=0;
} void timer_() interrupt 1 {
time++; TH0=0x3C; TL0=0XB0; } void main() { uchar i,j; COM8255=0X89; while(1) { j=0x00; pc8255=0XFF; for(i=1;i<9;i++) { COM8255=j; delay1s(); j++; COM8255=j; j++;
DL1: MOV R6, #0ABH
DL0: MOV R5, #10H DJNZ R5, $ DJNZ R6, DL0 DJNZ R7, DL1 NOP RET END
程序(思考题)C: #include<reg51.h>
#include<absacc.h> #define uchar unsigned char #define pc8255 XBYTE[0X0002] #define COM8255 XBYTE[0X0003] uchar time; void delay1s()
三、实验原理电路图
四、程序清单及流程框图
程序一: ORG 0000H
MAIN:MOV TMOD, #02H MOV TH0, #06H MOV TL0, #06H MOV DPTR, #0003H MOV A, #80H MOVX @DPTR,A MOV R2, #0FFH SETB TR0
LOOP:JNB TF0, LOOP MOV DPTR, #0000H MOV A, R2 MOVX @DPTR,A CPL A MOV R2, A CLR TF0 LJMP LOOP END
结束
INTO 保护现场 A←(R3) 将A的内容送给A口 对A取反 R3←(A) 恢复现场
返回
程序(思考题): ORG 0000H
MAIN: MOV DPTR, #0003H MOV A, #80H MOVX @DPTR,A MOV R2, #00H MOV R3, #08H MOV DPTR, #0002H MOV A, #0FFH MOVX @DPTR,A
void main() { uchar i,j;
COM8255=0x81; while(1) { j=pc8255;
for(i=1;i<5;i++) { j=j<<1; } pc8255=j; } }
流程图(思考题):
开始
系统初始化 给C口送全1
指向控制口
A #00H
将A的内容送C口
Y 延时
取反ACC.0
2、思考题:将程序产生的十六进制代码加载到 proteus 中,运行仿真开始二极管从上倒下依 次循环点亮
六、实验总结
本次试验已经是我们第六个单片机实验,实验前准备还是比较充分的。通过 前 期 的 五 个 实 验 我 们 已 经 能 够 熟 练 的 运 用 Protues 软 件 、Keil 软 件 以 及 用 来 做 流 程 框 图 的 visio 软 件 。而 在 这 次 实 验 我 们 比 较 熟 练 地 运 用 了 8255 与 单 片 机 的 接 口 电路设计的基本方法,8255 端口地址的确定比较熟练,已经掌握了 I/O 口编址技 术 的 要 领 。掌 握 了 8255 两 个 命 令 字 的 功 能 、格 式 及 定 义 方 法 。当 然 ,一 些 如 置 位 /复 位 等 一 些 新 知 识 的 理 解 上 还 存 在 欠 缺 , 将 会 在 今 后 的 学 习 和 实 践 中 去 加 强 。
LOOP: MOV DPTR, #0003H MOV A, R2
L00P0:MOVX @DPTR,A LCALL DELAY CPL ACC.0 MOVX @DPTR,A CPL ACC.0 INC A INC A DJNZ R3, L00P0 LJMP LOOP
DELAY: MOV R7, #0A7H
将A的内容送C口
N
取反ACC.0
A的内容加2
循环8次到了
TMOD=0X02; TH0=0X06; TL0=0X06; COM8255=0x80; TR0=1; while(1) { do{}while(!TF0);
TF0=0; pa8255=j; j=!j; } }
程序二 C: #include<reg51.h>
#include<absacc.h> #define uchar unsigned char #define pc8255 XBYTE[0X0002] #define COM8255 XBБайду номын сангаасTE[0X0003]
}} }
程序一 C: #include<reg51.h>
#include<absacc.h> #define uchar unsigned char #define pa8255 XBYTE[0X0000] #define COM8255 XBYTE[0X0003]
void main() { uchar j;
程序二: ORG 0000H MAIN:MOV DPTR, #0003H
MOV A, #81H MOVX @DPTR, A MOV DPTR, #0002H LOOP:MOVX A, @DPTR SWAP A MOVX @DPTR,A LJMP LOOP END
流程图: 开始 延时
系统初始化 开定时器0 取C口数据 高低半字节交换 数据会送C口
五、实验结果
1、程序一:将程序产生的十六进制代码加载到 proteus 中,运行仿真可以在示波器中看到如 图 6.1 所示波形,产生周期为 500us 的连续方波。
图 6.2
2、程序二:当按下 S1 键时可以看到 D4 点亮,同理按下 S2 键,D3 点亮,按下 S3 键,D2 点亮, 按下 S4 键,D1 点亮。
相关文档
最新文档