【微机原理与接口技术】实验5 可编程并行接口(8255)
可编程并行接口(8255)
- 8255并行I/O输入/输出实验
- 并行口键盘扫描实验
8255并行I/O输入/输出实验
P8255A EQU 288H
;P8255B EQU 0602H
P8255C EQU 28AH
P8255MODE EQU 28BH
CODE SEGMENTASSUME CS:CODE
START: MOV DX, P8255MODE ;控制字端口MOV AL,10001001B ;OUT DX, ALNEXT:
;------从C口读入开关状态,将从C端口读入的开关数据送端口A输出--------------MOV DX, P8255C ;B端口IN AL, DXMOV DX, P8255A;A端口OUT DX, AL
;-------------------------------------------------------------------MOV AH,0BH;检测是否有按键按下INT 21HCMP AL,0HJE NEXTMOV AH,4CHINT 21H
CODE ENDSEND START
并行口键盘扫描实验
a8255 equ 288H ;8255 A口
c8255 equ 28aH ;8255 C口
k8255 equ 28bH ;8255控制口
data segment
table1 dw 0770h,0B70h,0D70h,0E70h,07B0h,0BB0h,0DB0h,0EB0hdw 07D0h,0BD0h,0DD0h,0ED0h,07E0h,0BE0h,0DE0h,0EE0h ;键盘行列码表
LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CHDB 39h,5EH,79h,71h,0ffh ;LED段码表,0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
char db '0123456789ABCDEF' ;字符表
mes db 0ah,0dh,'PLAY ANY KEY IN THE SMALL KEYBOARD! ',0ah,0dhdb 'IT WILL BE ON THE SCREEN! END WITH E ',0ah,0dh,'$'
key_in db 0h
data ends
stacks segment stack ;堆栈空间db 100 dup (?)
stacks ends
code segmentassume cs:code,ds:data,ss:stacks,es:data
start:climov ax,datamov ds,axmov es,axmov ax,stacksmov ss,axmov dx,offset mes ;显示提示信息mov ah,09int 21h main_key: ;设置8255 (工作方式0;A口输出;C口高四位输出,低四位输入)MOV DX,k8255 ;初始化控制字mov al,81h;out dx,al
main_key:call key ;get a char in (key_in) and display itcall disply ;调显示子程序,显示得到的字符cmp byte ptr key_in,'E'jnz main_keymov ax,4c00h ;if (dl)='E' return to EXIT!int 21h ;退出
key proc near
key_loop:mov ah,1int 16hjnz exit ;pc键盘有键按下则退出mov dx,c8255mov al,0fhout dx,alin al,dx ;读行扫描and al,0fhcmp al,0fhjz key_loop ;未发现有键按下则转至key_loop call delay ;delay for a momentmov ah,al ;设置8255 (工作方式0;A口输出;C口高四位输入,低四位输出)MOV DX,k8255mov al,88hout dx,almov dx,c8255mov al,ahor al,0f0hout dx,alin al,dx ;读列扫描值and al,0f0hcmp al,0f0h jz key_loop ;未发现有键按下则转至key_loopmov si,offset table1 ;键盘扫描码表首址mov di,offset char ;字符表首址mov cx,16 ;待查表的表大小
key_tonext:cmp ax,[si] ;cmp (col,row) with every wordjz key_findkey ;in the tabledec cxjz key_loop ;未找到对应扫描码add si,2inc dijmp key_tonext
key_findkey:mov dl,[di]mov ah,02int 21h ;显示查找到的键盘码mov byte ptr key_in,dl
key_waitup:MOV DX,k8255mov al,81hout dx,almov dx,c8255mov al,0fhout dx,alin al,dx ;读行扫描值and al,0fhcmp al,0fhjnz key_waitup ;按键未抬起转call delay ;delay for amomentret
exit: mov byte ptr key_in,'E'ret
key endp
delay proc nearpush ax ;delay 50ms--100msmov ah,0int 1ahmov bx,dx
delay1:mov ah,0int 1ahcmp bx,dxjz delay1mov bx,dx
delay2:mov ah,0int 1ahcmp bx,dxjz delay2pop axret
delay endp
DISPLY PROC NEARPUSH axMOV BX,OFFSET LEDMOV AL,byte ptr key_inSUB al,30hCMP al,09hJNG DIS2SUB al,07h
DIS2: XLATMOV DX,a8255OUT DX,AL ;输出显示数据,段码POP AXRET
DISPLY ENDP
code ends
end start
【微机原理与接口技术】实验5 可编程并行接口(8255)相关推荐
- 南航计算机硬件实验,南航80X86微机原理及接口技术实验指导书.pdf
80X86 微机原理及接口技术实验 指导书 卓然 编著 2015-3-1 序 错误!未定义书签. 第一章 TD-PIT++实验系统简介 3 1. 概述 3 2. 系统总线电路单元 5 3. 接口实验单 ...
- 微机原理与接口技术实验:子程序设计实验
学生实验报告 实验课名称:微机原理与接口技术 实验项目名称:子程序设计实验 实验名称:单指令功能的实现 一. 实验目的 1.掌握汇编语言源程序子程序设计方法:. 二.实验内容 设计一个程序,将所有的小 ...
- 微机原理与接口技术实验:宏实现1+2+3...+100
学生实验报告 实验课名称:微机原理与接口技术 实验项目名称:宏 实验名称:宏实现1+2+3-+100 一. 实验目的 掌握重复宏的简单使用,并实现1+2+3-+100 二.实验内容 设计一个程序,利用 ...
- 微机原理与接口技术 学习笔记(五) 8255(可编程并行接口芯片) 与 8253(可编程定时/计数器)
文章目录 一,可编程并行接口芯片8255A 1. 8255A的结构 1.1 数据端口 1.2 端口控制逻辑 1.3 数据总线缓冲器 1.4 读/写控制逻辑 2. 方式选择 2.1 方式选择控制字 2. ...
- 微机原理与接口技术 | 四种可编程芯片的编程要点不完全记录
注:未记录芯片的引脚和具体工作方式,主要记录芯片的各控制字或命令字的初始化编程要点,其字格式也并未给出,可翻阅书籍查找. CONTENTS 可编程中断控制器Intel 8259A 可编程定时/计数器芯 ...
- 计算机微机原理与接口技术课程设计课题,微机原理与接口技术课程设计报告
<微机原理与接口技术课程设计报告>由会员分享,可在线阅读,更多相关<微机原理与接口技术课程设计报告(12页珍藏版)>请在人人文库网上搜索. 1.微机原理与接口技术课程设计设计题 ...
- 微型计算机原理无微机接口,微机原理与接口技术
<微机原理与接口技术>课程实验教学大纲 课程名称:微机原理与接口技术 英文名称:Principles and Interface of Microprocessors 实验课性质:非独立设 ...
- 关于微型计算机原理的文献,关于微型计算机原理论文范文资料 与微型计算机原理和接口技术实验教学体系改革有关论文参考文献...
<微型计算机原理和接口技术实验教学体系改革>:这是一篇与微型计算机原理论文范文相关的免费优秀学术论文范文资料,为你的论文写作提供参考. [摘 要] 本文结合上海星研微机原理实验教学仪器-S ...
- 微机原理与接口技术计时十字路口交通信号灯及公共时钟
一.方案设计 1. 设计内容 本题模拟场景为十字路口交通信号灯及路口公共时钟,通过Proteus8仿真平台进行模拟.南北路口方向和东西路口方向均设有红.黄.绿三种状态灯以及数字倒计时显示,同时设有路口 ...
- 计算机微机原理及接口技术实训室,《微机原理与接口技术》课程实验报告.doc...
<微机原理与接口技术>课程实验报告 实验一基本操作 一.实验目的 ? 1.熟悉Netlab MCS-51单片机实验系统的设置和使用方法 2.掌握基本MCS-51软件的编写.修改和编译的方法 ...
最新文章
- 业界 | 李彦宏:中国人愿意用隐私交换便利性;无人车事故是“人咬狗”新闻...
- Leetcode 219. 存在重复元素 II 解题思路及C++实现
- sql like 多条件
- VTK:Utilities之ArrayCalculator
- 【centos7】添加开机启动服务/脚本
- 四大科技巨头跟随者众 智能家居市场容量可观
- Python实现局域网(Socket)通信
- 电脑显示器变色_电脑维修(看完后就可以开一家自己的电脑维修店!)
- python办公室应用_Python干货:玩转办公室软件(一)PP还能这样玩!
- 重磅:IntelliJ IDEA 2020.2 EAP 5 已发布,可完美支持Java 15
- 电脑c盘空间不足怎么清理_C盘空间不足怎么办?如何给C盘扩容?
- Unity3D游戏资源的提取
- UDS常用诊断服务介绍
- hive 如何将数组转成字符串_HIve字符串函数
- thingsboard 编译及分析
- onenote 入门笔记_Windows 10中的OneNote入门指南
- MySQL数据库 学习(二)架构系统表
- 集宁一中高122班聚会大致议程(待商议)
- 基于Distflow的最优潮流模型(OPF)--模型推导篇
- BGP——6种邻居状态讲解
热门文章
- 通过百度地图API获取用户所在地理位置信息
- 安卓巴士Android开发神贴整理
- 关于“其他容量”的清理方法
- [热门游戏]今年“金酷”推出暗黑大作“魔界2”,邀你一起去探险。
- 计算机应用基ata,《计算机应用基》知识宝典.doc
- fmdb和mysql的区别_FMDB介绍和使用
- 解决编辑页眉页脚时,页码连续问题
- 在职可以考计算机吗,沈阳师范大学在职研可以考计算机证吗
- 世界经典科幻影片TOP20
- 服务器的全部作用,王者荣耀有哪些服务器_王者荣耀全部服务器功能详解_玩游戏网...