北京理工大学 微机原理 实验1基于并行接口的键盘控制

合集下载

微机原理及接口技术实验

微机原理及接口技术实验

微机原理及接口技术实验一、实验目的本实验旨在通过学习微机原理和接口技术,了解和掌握微机系统的基本原理和接口技术的应用,培养学生对微机系统的认识和实践操作能力。

二、实验内容1. 微型计算机系统设计与搭建2. 微机输入输出接口技术应用实验3. 微机总线技术应用实验4. 微机存储器技术应用实验5. 微型计算机中断和DMA技术应用实验三、实验原理1. 微型计算机系统设计与搭建微型计算机主要由中央处理器、存储器、输入输出设备和总线组成。

本实验通过选择适当的芯片、电路连接和控制程序设计,实现一个基本的微型计算机系统。

2. 微机输入输出接口技术应用实验输入输出是微型计算机的重要组成部分,通过实验学习各种输入输出接口的原理和使用方法,并进行实际应用。

3. 微机总线技术应用实验总线是微型计算机各个部件之间传送数据和控制信息的公共通信路径。

通过实验学习总线的分类、结构和时序要求,掌握总线的实际应用。

4. 微机存储器技术应用实验存储器是微型计算机中存储数据和程序的重要设备。

通过实验学习不同类型存储器的原理和应用,掌握存储器的选择和使用。

5. 微型计算机中断和DMA技术应用实验中断和直接存储器访问(DMA)是微型计算机连接外部设备的重要技术。

通过实验学习中断和DMA的工作原理,掌握中断和DMA的应用方法。

四、实验步骤1. 根据实验要求,设计并搭建微型计算机系统;2. 连接输入输出设备,并编写控制程序;3. 进行输入输出接口技术应用实验,如串行通信、并行通信等;4. 进行总线技术应用实验,如总线传输数据测试等;5. 进行存储器技术应用实验,如读写存储器数据等;6. 进行中断和DMA技术应用实验,如中断服务程序编写等;7. 完成相关实验报告并进行总结。

五、实验设备和材料1. 微型计算机实验箱、电源适配器;2. 8051单片机、存储器芯片、输入输出芯片,如74HC164等;3. LED数码管、LCD液晶显示器、键盘、计算器等输入输出设备;4. 可编程芯片编程器、逻辑分析仪等实验设备。

北京理工大学自动化专业微机原理硬件软件实验

北京理工大学自动化专业微机原理硬件软件实验

北京理工大学自动化专业微机原理硬件软件实验------------------------------------------作者xxxx------------------------------------------日期xxxx微机原理与接口技术硬件实验报告班级:姓名:学号:实验一: 8259中断控制器实验一、实验目的1. 掌握8259的工作原理。

2. 掌握编写中断服务程序的方法。

3. 掌握初始化中断向量的方法。

二、实验内容用单脉冲发生器的输出脉冲为中断源,每按一次产生一次中断申请,点亮或熄灭发光二极管。

三、实验设备微机实验教学系统实验箱、8086CPU模块四、连线①单脉冲发生器输出P+与8259的IR0相连②8259的片选CS8259与CS0相连③8259的INT与8086的INT相连④8259的INTA与8086的INTA相连⑤CS273与CS1相连⑥00与LED1相连其它线均已连好如下图:五、实验步骤(1)连线。

(2)编辑程序,编译链接后,调试程序。

(3)调试通过后,在中断服务程序内设置断点,运行程序,当接收到中断请求后,程序停在中断服务程序内的断点处。

(4)撰写实验报告。

六、实验源程序CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART: MOV DX,4A0H ;写ICW1MOV AX,13HOUT DX,AXMOV DX,4A2H ;写ICW2MOV AX,80H ;IR0的中断向量码为80HOUT DX,AXMOV AX,01OUT DX,AX ;一般嵌套,非缓冲,非自动EOIMOV AX,0 ;写OCW1OUT DX,AX ;允许中断;中断向量存放在(0000H:0200H)开始的四个单元里MOV AX,0MOV DS,AXMOV SI,200H ;中断类型号为80HMOV AX,OFFSET HINT ;中断服务程序的入口地址MOV DS:[SI],AXADD SI,2MOV AX,CSMOV DS:[SI],AXSTI ;开中断,设置IF=1JMP $ ;原地跳转HINT: ;中断服务程序XOR CX,0FFH ;CX取反MOV DX,4B0H ;CS273接口的地址,与8个LED灯相连MOV AX,CX ;输出高低电平控制LED灯的亮灭OUT DX,AXMOV DX,4A0H ;OCW2的地址MOV AX,20H ;一般EOI命令,全嵌套方式OUT DX,AXIRET ;中断返回CODE ENDSEND START七、实验思考题1.将P+连线连接到IR1—IR7任意一个;重新编写程序。

北理工微机原理实验三 使用8251A的串行接口应用实验

北理工微机原理实验三  使用8251A的串行接口应用实验

本科实验报告实验名称:实验三使用8251A的串行接口应用实验课程名称:计算机原理与应用实验实验时间:任课教师:实验地点:实验教师:实验类型:□原理验证■综合设计□自主创新学生姓名:学号/班级:组号:学院:同组搭档:专业:成绩:1. 实验目的1) 掌握串行通信原理及半双工和全双工的编程方法;2) 掌握用8251A接口芯片实现微机间的同步和异步通信;3) 掌握8251A芯片与微机的接口技术和编程方法。

2. 实验原理和内容8251A是一种可编程的同步/异步串行通信接口芯片,具有独立的接收器和发送器,能实现单工、半双工、双工通信。

1) 8251A内部结构8251A通过引脚D0~D7和系统数据总线直接接口,用于和CPU传递命令、数据、状态信息。

读写控制逻辑用来接收CPU的控制信号、控制数据传送方向。

CPU对8251A的读写操作控制表如表3-4所示。

表3-4 CPU对8251A的读写操作控制表2) 8251A的方式控制字和命令控制字方式控制字确定8251A的通信方式(同步/异步)、校验方式(奇校/偶校/不校)、字符长度及波特率等,格式如图3-10所示。

命令控制字使8251A处于规定的状态以准备收发数据,格式如图3-11所示。

方式控制字和命令控制字无独立的端口地址,8251A 根据写入的次序来区分。

CPU对8251A初始化时先写方式控制字,后写命令控制字。

3) 状态寄存器8251状态寄存器用于寄存8251A的状态信息,供CPU查询,定义如图3-12所示。

TXRDY位:当数据缓冲器空时置位,而TXRDY引脚只有当条件( 数据缓冲器空•/CTS•TXE)成立时才置位。

溢出错误:CPU没读走前一个字符,下一个字符又接收到,称为溢出错误。

帧错误:在字符结尾没检测到停止位,称为帧错误。

4) PC机寄存器的端口地址其中:线路控制寄存器第七位:DLAB=0;线路控制寄存器第七位:DLAB=1。

5) 波特率和除数因子对照表实验硬件连接方法:通过计算机点到点三线制串口通信线,掌握接线的方法以及RS-232标准的机械、电气规范。

微机原理实验并行IO接口设计

微机原理实验并行IO接口设计

微机原理实验三并行I/O接口实验姓名:学号:班级:一、实验目的1. 掌握GPIOIP核的工作原理和使用方法2.掌握中断控制方式的IO接口设计原理3.掌握中断程序设计方法4.掌握IO接口程序控制方法:中断方式、查询方式、延时方式二、实验任务按键输入,并显示到console用中断、查询两种方式实现按键输入,将结果显示到console窗口。

三、硬件电路四、硬件实现步骤1. 创建一个最小系统,启动XPS,并打开xmp工程文件。

2.添加和配置GPIO IP核。

3. 添加和配置AXI Interrupt Controller IP核。

4. 产生外部GPIO连接。

引脚约束五、中断方式、查询方式1. 中断方式设计思路主程序开放microBlaze INTC,GPIO中断,不停地检测输出标志是否为1,是则输出数据到console,并将输出标志设置为0。

中断服务程序读取数据(或输出数据)并设立输出标志位为1。

通过中断方式读入开关的状态,由于按键仅短暂的时间维持高电平,并且还具有抖动,因此需在中断服务程序内读入按键状态,并且为消除按键回弹产生的中断,需在中断服务程序内部暂时关闭中断,并且延时一段时间再打开中断。

2. 查询方式设计思路主程序不停地读取GPIO和ISR寄存器,当对应位为1时,读取GPIO的数据寄存器并输出到console(xil_printf函数实现,头文件为”stdio.h”),并写ISR相应位。

数据寄存器的读取通过函数Xil_In实现,而ISR相应状态为的写通过函数Xil_Out实现。

六、软件实现流程1. 中断方式主程序实现对各个设备进行初始化,并且开放相应的中断,注册中断服务程序以及开关状态显示等。

然后通过读取中断标志进入相应中断服务程序处理中断,并在console打印相关信息。

2. 查询方式程序实现通过不断地读取GPIO和ISR寄存器,当状态发生变化时读取数据寄存器并输出到console,并写ISR相应位。

北京理工大学微机原理实验报告

北京理工大学微机原理实验报告

微机原理与接口技术实验报告实验内容:汇编语言程序设计实验组别:12姓名:班级:学号:一、实验目的1、熟悉IDE86集成开发环境的使用。

2、通过编程、上机调试,进一步理解汇编语言的设计思路与执行过程。

3、熟悉DOS命令调用,以达到输入输出、返回DOS系统等目的。

4、掌握利用汇编实现求和与求最值的方法。

5、掌握利用汇编实现数制转换的方法。

6、巩固理论知识,锻炼动手编程,独立思考的能力。

二、实验内容(具体内容)1、求从TABLE开始的10个无符号字节数的和,并将结果放在SUM字单元中。

并查看前5个,前8个数之和以及各寄存器和内存的状态。

2、在1的基础上修改程序,求出10个数中的最大值和最小值,最后将最大最小值分别赋给MAX及MIN。

3、求1到 100 的累加和,并用十进制形式将结果显示在屏幕上。

要求实现数据显示,并返回DOS状态。

三、实验方法1、设计思路(1)实验1的设计思路:先将10个要相加的数存在以TABLE为首的10个连续的存储单元中,然后利用循环结构依次取出数值放在AL中并累加,若有进位则加到AH中直至循环10次累加结束,将累加的结果放在SUM中并返回DOS状态。

(2)实验2的设计思路:先将10个要比较的数放在以TABLE为首的10个连续的存储单元中。

将第一个数首先赋给AL和AH(分别存储相对最小和最大值)在利用LOOP循环结构,依次和下面的数进行比较,每次把相对的最大值与最小值存储到AH和AL中直至循环9次比较结束,将AH和AL里面的最大值与最小值赋给MAX和MIN,返回DOS状态(3)实验3的设计思路:先在内存中定义COUNT=100,表示1-100求和,若相求1-n的和并显示只需COUNT的值为n即可,同时定义一块以DNUM为首地址的数据区用于存储累加和的十进制数对应的ASCII码。

先利用AX和LOOP求出1-COUNT的累加和存在AX中;在进行数值转化,AX 依次除10取余数保存,将16进制数转化为10进制ASCII码值并存在DUNM中。

微机原理实验---并行接口实验

微机原理实验---并行接口实验

微机原理实验---并行接口实验
并行接口(Parallel Port)是一种广泛使用的计算机外围设备接口。

它通常用于连接打印机、扫描仪、摄像头等设备,以实现数据的传输和控制。

本实验旨在教授学生使用并行接口实现数据输入和输出的基本功能,以提高学生对计算机外围设备的理解和应用能力。

具体实验步骤如下:
材料及设备:
1. 一台计算机
2. 并行数据线(Parallel Data Cable)
3. 并口测试器(Parallel Port Tester)
4. 8位开关(8-bit Switch)
5. LED 灯(LED Light)
实验步骤:
1. 将并行数据线连接至计算机的并行接口,并将另一端连接至并口测试器。

2. 使用并口测试器测试并行接口是否正常。

若测试失败,可检查并行接口是否损坏或驱动程序是否正确安装。

3. 将 8 位开关连接至并口测试器的数据输出端,连接正确后,将 8 位开关的位置设置为 0。

4. 运行实验程序,将数据从计算机输出至并口测试器。

5. 将 LED 灯连接至并口测试器的数据输入端,将计算机输入的数据传输至 LED 灯并输出。

北理工 自动化 微机原理实验一

北理工 自动化 微机原理实验一

微型计算机原理与接口技术软件实验报告(一)班级:学号:姓名:2012.11一、实验题目1、学习并掌握IDE86集成开发环境的使用;2、参考书例4-8,以单步形式观察程序的执行过程;3、修改该程序,求出10个数中的最大值和最小值。

以单步形式观察如何求出最大值、最小值。

二、实验目的1、熟悉IDE86集成开发环境的使用。

2、通过编程、上机调试,进一步理解汇编语言的设计思路与执行过程。

3、锻炼动手编程,独立思考的能力。

三、实验内容3.1题目2设计思路及流程图3.1.1设计思路为实现求和的功能,首先将十个数存入内存中,设定AX为计算结果存储单元,CX为计数器,随后建立循环,将每个数依次加到AX上,直至CX=O,最后将AX中存储的结果移动到SUM存储单元中,结束程序。

3.1.2程序流程图题目2的程序流程图如图1所示:图1题目2的程序流程图3.2题目3设计思路及流程图3.2.1设计思路为实现求取最大值最小值的功能,首先将十个数存入内存中,设定CX为计数器,将第一个数分别存入到MAX与M1N储存单元中,随后建立循环,将每个数依次与MAX(MIN)相比较,如果有大于(小于)MAX(MIN)中的,移入相应存储单元,直至CX=0。

最后将MAX和MIN中存储的数据打印在屏幕上,返回DoS系统,结束程序。

3.2.2程序流程图题目3的程序流程图如图2所示:图2题目3的程序流程图4.1题目2源程序DATA SEGMENT ;定义数据段TAB1E DB12H,23H,34h,45h,56h ;10个加数DB67H,78H z89H z9AH z0FDHSUM DW?DATA ENDSCODE SEGMENT ;定义代码段ASSUMECS:CoDE,DS:DATA,ES:DATASTART: MOVAX z DATAMOVDS,AX ;初始化DSMOVES,AX ;初始化ES1EASUAB1E ;SI指向TAB1EMOVCX,10 ;循环计数器XORAX z AX ;AX为中间结果NEXT: ADDA1z[SI] ;把一个数加到A1中ADCAH z O ;若有进位,则加到AH中INCSI ;指向下一个数1OOPNEXT ;若未加完,继续循环MOVSUM Z AX ;若结束,存结果于SUMH1T ;结束CODE ENDS ;代码段结束END START ;汇编结束DATA SEGMENT ;定义数据段TAB1E DB12H,23H,34h,45h,56h;十个待比较数DB67H,78H,89H,9AH,0FDHMAX DB?MIN DB?A DB,MaxOS ;屏幕提示字符串B DBoDH,0AH「Min:,SDATA ENDSCODE SEGMENT;定义代码段ASSUMECS:CoDE,DS:DATA,ES:DATASTART: MOVAX z DATAMOVDS,A× ;初始化DSMOVES,AX ;初始化ES1EASIJAB1E ;SI指向TAB1EMOVCX z IO ;循环计数器XORAX z AX ;清空AXC1D ;清方向标志DF1ODSB ;A1存入一个8位数MOVMAX z A1 ;将该数送MAXMOVMIN Z A1 ;将该数送MINDECCX ;计数器减一NEXT: 1ODSB ;取下一个数CMPA1Z MAX ;与MAX比较JA1ARGERCMPA1Z MIN JBSMA11ERJMPGOON1ARGER:M0VMAX,A1JMPGOONSM A11ER:MOVMIN z A1GO ON:1OOPNEXT1EADX,AMOVAH z09HINT21HMOVA1z MAXCA11DISP1AY1EADX,BMOVAH z09HINT21HMOVA1z MINCA11DISP1AYMOVAH z4CHINT21H DISP1AYPROCPUSHBXPUSHCX ;若大于转1ARGER;否则与MIN比较;若小于转SMA11ER ;否则转GOON;A1的值存入MAX;转到GOON;A1的值存入MIN;CX-1,若CXWO转NEXT ;获取A的首地址;调用字符串显示功能;MAX值存入A1;调用显示子程序;获取B的首地址;调用字符串显示功能;MIN值存入A1;调用显示子程序;调用返回DoS功能;十六进制显示子程序;保持BX内容;保持CX内容MOVBH z A1MOV CH,2 ;设置循环计数器ROT: MOV C1,4 ;移位次数RO1 BX z C1MOV A1B1AND A1z OFH ;清空A1高四位ADD A1,30H ;0-9转换ASCII码CMP A1z3AHJ1 PRITADD A1,7H ;A-F转换ASCII码PRIT: MOV D1,A1MOV AH,2 ;调用字符显不功能INT 21HDEC CH ;计数器-1JNZ ROT ;CHW0,继续循环POPCX 丁恢复CX内容POPBX 丁恢复BX内容RET ;返回D ISP1AYENDPCODEENDS ;代码段结束END START ;结束五、实验运行结果5.1题目2运行结果前五个数运算结束后寄存器状态:图3 其中ax 值为图4前五个数计算后AX 的值故此时前五个数之和为0104Ho 前八个数运算结束后寄存器状态:×0000图6前八个数计算后AX 的值故此时前八个数之和为026CH o 全部运算结束后,ax 的值为:图7计算结束后AX 的值故十个数的和为0403H 。

北京理工大学计算机实验一报告表

北京理工大学计算机实验一报告表

北京理工大学计算机实验一报告表北京理工大学计算机实验一报告一、实验目的:1. 了解计算机实验室的硬件设备,熟悉计算机的组成和工作原理;2. 掌握计算机的基本操作和调试方法,熟悉计算机的操作系统和软件环境;3. 学习使用计算机进行数据输入、处理和输出。

二、实验内容:1. 硬件设备:了解计算机的主要硬件组成,包括中央处理器(CPU)、内存、硬盘、显卡等;2. 操作系统:熟悉计算机的操作系统,学习操作系统的基本功能和操作方法;3. 软件环境:了解计算机的软件环境,学习使用常用的办公软件和编程工具;4. 数据输入:学习使用键盘和鼠标进行数据输入,了解数据的输入格式和方式;5. 数据处理:学习使用计算机进行数据处理,包括数据的存储、计算和分析;6. 数据输出:学习使用计算机进行数据输出,包括打印、显示和保存等方式。

三、实验步骤:1. 硬件设备:了解计算机的主要硬件组成,包括CPU、内存、硬盘、显卡等,熟悉各个硬件的功能和作用;2. 操作系统:熟悉计算机的操作系统,学习操作系统的基本功能和操作方法,包括开机、关机、重启等;3. 软件环境:了解计算机的软件环境,学习使用常用的办公软件和编程工具,如Microsoft Office和Visual Studio等;4. 数据输入:学习使用键盘和鼠标进行数据输入,了解数据的输入格式和方式,如文本、数字、图像等;5. 数据处理:学习使用计算机进行数据处理,包括数据的存储、计算和分析,如使用Excel进行数据分析;6. 数据输出:学习使用计算机进行数据输出,包括打印、显示和保存等方式,如使用打印机打印数据报告。

四、实验结果:本次实验我们成功地熟悉了计算机的硬件设备和软件环境,掌握了计算机的基本操作和调试方法。

我们学会了使用键盘和鼠标进行数据输入,使用计算机进行数据处理和输出。

通过实验,我们进一步了解了计算机的组成和工作原理,对计算机的操作系统和软件环境有了更深入的了解。

北理(bit)微机原理上机软件实验报告

北理(bit)微机原理上机软件实验报告

北理(bit)微机原理上机软件实验报告微机原理软件编程实验报告班级:学号:姓名:⼀、实验题⽬1、IDE86集成开发环境的学习和运⽤2、编写程序求出10个数中的最⼤值和最⼩值,并以单步形式观察如何求出最⼤值、最⼩值。

3、求1到100 的累加和,并⽤⼗进制形式将结果显⽰在屏幕上。

要求实现数据显⽰,并返回DOS状态。

4、将存储器中的⼗个字节型⼗六进制有符号数按从⼩到⼤的顺序排序并按⼗六进制显⽰出来。

(56H、0ffH、78H、82H、12H、0、95H、58H、0bcH、34H)⼆、实验⽬的1、学习并掌握IDE86集成开发环境的使⽤包括编辑、编译、链接、调试与运⾏等步骤编辑:源程序的输⼊、修改。

编译:常见编译出现的语法错误的修改。

可执⾏⽂件。

运⾏:运⾏、断点设置、单步运⾏、单步跟踪;观察寄存器、标志寄存器值;观察数据存储器中的数据。

2、完成所有题⽬,提⾼编程能⼒,加深对理论课的理解。

三、实验内容1、⽂字叙述设计思路1.1编写程序求出10个数中的最⼤值和最⼩值由于⼀共有⼗个数,所以求其最⼤数或者最⼩数需要⽐较9次。

从数据段的段⾸开取数,先取两个数进⾏⽐较,⽐较完后取其中的最⼤数或者最⼩数放⼊数据段的第⼆位中。

再取第三位数与第⼆位数⽐较,如此循环,⽐较9次后在数据段最末位的就是我们需要的数。

1.2求1到100 的累加和,并⽤⼗进制形式将结果显⽰在屏幕上求和部分:1~100⼀共有100个数,所以需要做100次加法。

做加法要有两个数,第⼀个数是第i位的数值,第⼆个数是i-1位以及之前所有数的和,所以这两个数必须分别存放在两个寄存器⾥,并且两个数相加之后的所得的值,必须放在存放“和”的寄存器中,另外⼀个寄存器每做完⼀次加法⾃加1。

显⽰部分:我们所求得的最终数值在内存中是以16进制数存放的,但是由于结果只是⼀个数,我们可以把它的每⼀位所对应的ASCII码按照⼀定的顺序存放到⼀个数据段中,再以字符串形式直接输出。

1.3将存储器中的⼗个字节型⼗六进制有符号数按从⼩到⼤的顺序排序并按⼗六进制显⽰出来⽐较部分:题⽬⼀共给了我们10个数,如果要进⾏排序的话可以先把⼗个数中最⼤的数选出来,放到数据段的最后⼀个位置,接着再选出次⼤的数放到数据段的倒数第⼆位,如此循环到最后便可成功将所给的⼗个数排序好。

北京理工大学ZHZH

北京理工大学ZHZH

北京理工大学微机原理与接口技术实验报告实验内容:微机原理综合设计组别:姓名:班级:学号:一、实验目的1.利用所学知识设计简单计算器。

二、实验内容利用8255控制试验箱上的键盘,实现2位十进制数以内的加减乘除运算,将运算结果通过8250发送到上位机。

键盘为10个数字键0-9,六个功能键 +、-、*、/、=、复位。

三、实验方法1.设计思路⑴.根据题目要求首先应该实现试验箱上的键盘扫描功能,计算按下键码的键值(键值检测中应该加入相应的延时程序以达到精确扫描的目的)。

再进行加减乘除算数运算,通过8250芯片发送到上位机,利用串口小助手实现算数。

2.实验程序流程图。

四、实验源程序(必要的文字注释)初始化按键闭合? 开始按键扫描保存键值 进行算数运算按键恢复? 输出结果结束NN Y Y1.简单计算器程序。

ASSUME CS:CODECODE SEGMENTORG 100HSTART: MOV DX,04A6H ;控制寄存器地址MOV AX,90H ;设置为A口输入,;B口输出,C输出OUT DX,AX ;8255初始化MOV AX,0MOV DS,AXAAA: MOV DI,2000HMOV CX,10CCC1: MOV DS:[DI],0INC DILOOP CCC1MOV DI,2000HMOV DX,486HMOV AX,80HOUT DX,AXMOV DX,480HMOV AX,12OUT DX,AXMOV DX,482HMOV AX,0OUT DX,AXMOV DX,486HMOV AX,7OUT DX,AXMOV DX,482HMOV AX,0OUT DX,AXMOV DX,48AHIN AX,DXMOV DX,480HIN AX,DXCHECK0: ;CHECK0检测是否有健被按下MOV AX,OOH ;C口的PC0、PC1、PC2作为行选择线MOV DX,04A4H ;C口地址OUT DX,AX; 写入C口内容00H,即令所有行为低电平MOV DX,04A0H ;A口地址IN AX,DX ;读入A口的内容CMP AL,OFFH ;判定是否有列线为低电平JE CHECK0 ;没有,无闭合键,则循环等待MOV CX,05FFH ;延迟常数,可以修改来改变延时时间DELAY:LOOP DELAY ;有,则延迟清除抖动,当cx=0时则停止该循环行扫描键盘和列扫描键盘,确定被按键的行值和列值MOV CL,3 ;行数MOV AH,0MOV AL,0FBH ; 0fbh=1111 1011BCONTIN: PUSH AL ;将ax的内容(0fbh)入栈保存MOV DX,04A4H ;C口地址OUT DX,AL ;写入C口内容0fbh=1111 1011B,即将第三行置为低电平MOV DX,04A0H ;A口地址IN AL,DX ;读入A口的内容MOV AH,AL ;将A口的内容送入ahCMP GH,0FFH ;判断是否有列线为低电平JNE NEXT ;比较结果不等于0则转移,即有列线为低电平POP AX ; 比较结果等于0,即没有列线为低电平,(ax)=00fbhROR AL,1 ; fbh(1111 1011B)循环右移,(al)=1111 1101检测下一行LOOP CONTIN ;循环扫描下一行,确定行JMP CHECK0 ;若所有行都没有被按下,则返回check0重新检测NEXT: MOV CH,CL ;保存行值至chMOV CL,7 ;列值从0开始编号0-7BEGIN0: SHL AH,1 ; ah为A口的内容,逻辑左移1位,末位补0 JNC GOON ;无进位则转移,即可确定列LOOP BEGIN0 ;继续循环,确定列JMP CHECK0GOON: ;计算显示码在discode中的位置:(行数-1)*8 +列值MOV BL,CL ;保存列值至BLDEC CH ;行数减1MOV CL,3SHL CH,CL ;左移三位即相当于减1之后的行数*8ADD DL,CH ;确定显示码在discode表中的偏移量,即(行数-1)*8+列值MOV BH,0MOV CX,BX ;显示码在discode表中的偏移量送CXDISPLAY: ;显示输出MOV SI, OFFSET DISCODEADD SI,CX ;显示码偏移地址MOV DX,040AH ;C口地址MOV AL,0FHOUT DX,AL ;写入C口内容,使位控(LED1)有效MOV AL,CS:[SI] ; 取被按键的显示字形码送入al MOV DX,04A2H;B口地址OUT DX,AL ; 将显示字形码送B口输出显示NOPNOPCMP AL,3fhJNZ L1MOV AH,0JMP NEXT1L1: ;定义键码子程序L1CMP AL,06hJNZ L2MOV AH,1JMP NEXT1L2: ;定义键码子程序L2CMP AL,5bhJNZ L3MOV AH,2JMP NEXT1L3: ;定义键码子程序L3CMP AL,4fhJNZ L4MOV AH,3JMP NEXT1L4: ;定义键码子程序L4CMP AL,66hJNZ L5MOV AH,4JMP NEXT1L5: ;定义键码子程序L5CMP AL,6dhJNZ L6MOV AH,5JMP NEXT1L6: ;定义键码子程序L6CMP AL,7dhJNZ L7MOV AH,6JMP NEXT1L7:CMP AL,07hJNZ L8MOV AH,7JMP NEXT1L8: ;定义键码子程序L8 CMP AL,7fhJNZ L9JMP NEXT1L9:CMP AL,6fh ;AL与6FH比较JNZ L10 ;若ZF=0则存入L10中MOV AH,9JMP NEXT1L10:CMP AL,77hJNZ L11MOV AH,10JMP NEXT1L11:CMP AL,7chJNZ L12MOV AH,11JMP NEXT1L12:CMP AL,39hJNZ L13MOV AH,12JMP NEXT1L13:CMP AL,5ehJNZ L14MOV AH,13JMP NEXT1L14:CMP AL,79hJNZ L15JMP NEXT1L15:CMP AL,71hJMP AAANEXT1:MOV DS:[DI],AHINC DICMP DI,2004HCALL DELAY1JE ACLTJMP CHECK0ACLT:MOV AX,0MOV DX,0MOV DI,2000H ;将2000H送入DIMOV AL,DS:[DI] ;将DS:[DI]的地址送入AL MOV DL,DS:[DI+2]MOV BL,DS:[DI+1]CMP BL,10JNZ K1ADD AL,DLPUSH AX ;将AX压栈JMP LOOP1 ;转移到LOOP1地址K1:CMP BL,11JNZ K2SUB AL,DLPUSH AXJMP LOOP1K2:CMP BL,12JNZ K3MUL DLPUSH AXJMP LOOP1K3:CMP BL,13JNZ LOOP1DIV DLPUSH AXJMP LOOP1PPP:LOOP1:CALL DELAY1CALL SENDJMP KKKDELAY1: ;延时子程序MOV CX,0FFFFHLLL:LOOP LLLRETSEND:PUSH AXMOV DX,48AHSEND1:IN AX,DXJNZ SEND2JMP SEND1SEND2:POP AXMOV DX,480HOUT DX,ALRETKKK:JMP CHECK0DISCODE DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h;(0-7);定义各键码DB 7fh,6fh,77h,7ch,39h,5eh,79h,71h ;(8-F)DB 01h,02h,04h,08h,10h,20h,40h,80h;(abcdefgh);显示字形码表CODE ENDS ;代码段结束END START ;程序段结束五.实验结果简单计算器1位十进制实验结果截图。

微机原理实验报告 简单并行接口

微机原理实验报告  简单并行接口

实验二实验报告——简单并行接口一、实验目的掌握简单并行接口的工作原理及使用方法。

二、实验原理和内容1、按下面图4-2-1简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。

74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7。

2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。

3、按下面图4-2-2简单并行输入接口电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。

74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7。

4、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。

5、接线:1)输出按图3-3-1接线(图中虚线为实验所需接线,74LS32为实验台逻辑或门)2)输入按图3-3-2接线(图中虚线为实验所需接线,74LS32为实验台逻辑或门)三、程序代码基于以上实验原理的分析,我们可得到本次试验的汇编语言程序如下:STACKS SEGMENT STACK ;堆栈段DW 128 DUP(?) ;注意这里只有128个字节STACKS ENDSDATAS SEGMENT ;数据段;请在这里定义您的数据DATAS ENDSCODES SEGMENT ;代码段ASSUME CS:CODES,DS:DATASSTART: MOV AL,23H ;初始化MOV DX,2A8HOUT DX,AL;请在这里添加您的代码MOV AX,4C00H ;退出程序INT 21HCODES ENDSEND START四、程序调试与结果分析编程完成后,检查正确便可运行程序了,打开电源开关可以看到八个灯泡中对应的灯泡开启,然后如果将程序中数据稍加更改便可以看到不同灯泡组合亮。

北理工微机原理与接口技术之8255,8253实验报告

北理工微机原理与接口技术之8255,8253实验报告

北理工微机原理与接口技术之8255,8253实验报告微机原理与接口技术实验报告———8253可编程定时器8255并行接口实验实验一8255并行接口实验一,实验内容8255的A口作为输入口,与逻辑电平开关相连。

8255的B口作为输出口,与发光二极管相连。

编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。

二,实验目的(1)掌握8255的工作原理。

(2)掌握编写8255并行接口初始化及编程实现的方法。

三,实验仪器微机实验教学系统实验箱、8086CPU模块四,实验步骤(1)连线8255的PA0—PA7分别与逻辑电平开关的K1—K8相连?PB0—PB7分别与发光二极管电路的LED1—LED8相连?CS0与8255的片选CS8255相连其它线路均已连好具体如图所示:(2)编辑程序,编译链接后,单步运行,调试程序。

(3)调试通过后,全速运行,观察实验结果。

(4)撰写实验报告。

五,实验源程序如下CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART:MOV DX,04A6HMOV AX,90H ;写8255的控制字,A组工作在方式0,A口输入,C口高4位输出,B组工作在方式0,B口及C口的低4位均工作在输出OUT DX,AXSTART1:MOV DX,04A0HIN AX,DX ;读取A口数据MOV DX,04A2HOUT DX,AX ;将从A口读取的数据从B口输出,控制LED灯JMP START1CODE ENDSEND START六,实验现象LED灯低电平有效。

当某一开关拨到低电平时,对应的LED灯点亮。

当某一开关拨到高电平时,对应的LED灯熄灭七,思考题1.将片选线接到CS1—CS7;重新编写程序。

CS0对应地址是04A0---O4AF, CS1对应地址是04B0---O4BF.现将片选线接到CS1,重新编程:CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART:MOV DX,04B6H ;CS1对应的地址MOV AX,90HOUT DX,AXSTART1:MOV DX,04B0HIN AX,DXMOV DX,04B2HOUT DX,AXJMP START1CODE ENDSEND START实验现象:如同片选线接到CS02.交换A B接线,A口输出、B口输入;重新编写程序。

北京理工大学微机原理实验报告一

北京理工大学微机原理实验报告一

本科实验报告实验名称:基于并行接口的键盘控制实验一基于并行接口的键盘控制一、实验目的1、掌握简单并行接口(8255)的工作原理及使用方法。

2、了解小键盘的工作原理,学会设计小键盘的接口技术。

3、利用8255并行接口芯片作为小键盘的接口电路,掌握它们之间的线路连接。

4、程序实现实验系统上的4×4键盘输入。

二、实验内容与步骤1、接线:PA0-PA3 /8255 接行0-行3 /4×4键盘PB0-PB3 /8255 接列0-列3 /4×4键盘CS /8255 接YI/IO地址2、编程:实现在按下小键盘上的任意键后,在微机屏幕上显示相应的字符。

输入输出关系如下:小键盘显示小键盘显示0 -- 0 8 -- 81 -- 1 9 -- 92 -- 2 A -- A3 -- 3 B -- B4 -- 4 C -- C5 -- 5 D -- D6 -- 6 E -- E7 -- 7 F -- F三、实验原理1、熟悉8255A-5芯片工作方式的设置(1)基本控制字基本控制字的格式如下:各位含义如下:D7:设定工作方式标识,1有效。

D6、D5:A组方式选择:00--方式0 01--方式1 1X—方式2D4:端口A功能(1=输入,0=输出)D3:端口C高四位功能(1=输入,0=输出)(2)端口C置位/复位控制字端口C置位/复位控制字如下:各位含义如下:D7:位置0位置1标识,0有效。

D6、D5、D4:不用,可人任意值。

D3、D2、D1:端口C的每位选择,由111—000分别表示第7位—第0位。

D0:位置1/置0,1=置1,0=置0.2、键盘阵列由8255芯片控制,并将行列连接到8255芯片的A口、B口,还需要连接8255芯片的片选到YI/IO地址(288H~28FH),以使键盘阵列由8255芯片控制。

其线路连接图如下:3、编程方法对于片选信号根据设置的YI/IO地址来具体连接相应的输出端口。

北理工微机原理第一章课件共49页文档

北理工微机原理第一章课件共49页文档

求反与求补
求反:对每一位按位取反。例,00000101 , 求反后为11111010
求补:对每一位按位取反后再加1 例,00000101,求补后为 11111011
求十进制负数的二进制(补码)表示的两种方法
1、先写出对应的二进制正数表示,然后对其求补运 算(按位取反后加1),例:求-13的二进制补码 表示 ,先写出对应正值: 00001101 取反为 11110010 再加1则为11110011
(进位) (和)
全加器电路
Ai Bi
Ci+1
FA
Ci
S
§1-4 二进制计算及加法电路
10001001 A +)11001010 B
101010011 S
二进制数的减法运算
无专用的减法器
将减法运算改变为加法运算
日常生活的例子: 实际时间2点,手表指针停在11点, 11- 9=2,需倒拨 9,也可以11+ 3=12 + 2 舍掉前面的12,这样就将减法运算改变为加法运算。 在数学中称为某数为模数的补码运算。
00000000
00000000
-10000001
-11111111
01111111
00000001
显然, 10000001 表示 –127, 11111111表示 -1.
1. 可将其按位取反加1求它的绝对值(也称为求补)
2. 也可以将最高位的1理解为-128, 后面的值为正数,两者相 加即为其表示的有符号数值.
常用接口电路设计及常用接口电路芯片的初始化编程:包 括数据传输方式,中断技术,并行通信及接口芯片 8255A,串行通信及接口芯片8250,计数器/定时器 8253, 存储器系统;

微机原理与接口技术实验指导书(硬件部分)

微机原理与接口技术实验指导书(硬件部分)

微机原理与接口技术实验指导书(硬件部分)北京邮电大学自动化学院检测技术及自动化教研中心2007年9月目录硬件实验部分TPC-2003A通用32位微机接口实验台介绍 (2)实验时应注意的问题 (8)实验一 I/O地址译码 (9)实验二 简单并行接口 (11)实验三 可编程定时器/计数器(8253) (13)实验四 可编程并行接口(一)(8255方式0) (16)实验五 交通灯控制实验 (17)实验六 七段数码管 (19)实验七 继电器控制 (24)实验八 数/模转换器 (27)实验九 模/数转换器 (30)TPC-2003A通用32位微机接口实验台硬件:PCI接口卡一块;实验台一个;50线扁平电缆一根;自锁紧导线50根。

实验箱上有微机原理硬件实验最常用接口电路芯片,包括:可编程定时器/计数器( 8253 ) 、可编程并行接口( 8255 ) 、数/ 模转换器( DAC0832 ) 、模/ 数转换器(ADC0809)。

另外,还另附加集成电路芯片(8251、74LS273、74LS244、6116)共4片。

实验台上除了上述接口实验常用的集成电路外、还设有I/O地址译码电路、总线插孔、外围电路及通用IC插座等部分组成。

外围电路包括逻辑电平开关电路、LED显示电路、时钟电路、单脉冲电路、逻辑笔、复位电路、七段数码管显示电路、基本门电路、继电器及步进电机、小直流电机的驱动电路等。

接口卡可以插入PC系列微机中任意一个PCI扩展插槽,它的主要功能是将与实验有关的总线信号加以驱动后引到实验台上。

PLX9054PCI总线扩展卡结构,该卡使用PLX9054和CPLD把PCI总线时序转换成50芯ISA 总线时序,提供给微机实验台使用。

PC/AT ( ISA工业标准总线) PC/XT 总线图1 TPC-2003A通用32位微机接口实验台实验台提供的电路1、I/O地址译码电路如图所示,地址空间:280H~2BFH共分8条译码输出线:Y0~Y7,其地址分别是280H~287H;288H~28FH;290H~297H;298H~29FH;2A0H~2A7H;2A8H~2AFH;2B0H~2B7H;2B8H~2BFH,8根译码输出线在实验台“I/O地址”处分别由“自锁紧”插孔引出,供实验选用。

北京理工大学 实验一 实验报告表

北京理工大学 实验一 实验报告表

实验一实验报告表
实验名称:图灵机模型与计算机硬件系统虚拟拆装实验
学号2015216898 姓名唐玮班级:计算机15-4班实验时间:2015年10月27日
实验报告表1-1图灵机模型中的主要组成部分及作用
说明:可根据需要加行
实验报表1-2冯.诺依曼计算机体系结构的功能描述
实验报告表1-3 实验所使用的计算机硬件配置登记表
实验报告表1-4 微型计算机拆卸顺序记录表
实验报告表1-5 微型计算机安装顺序记录表
实验报告表1-6 微型计算机安装顺序调整记录表
说明:可根据需要加行
实验报告表1-7 6个指定部件的安装顺序记录表
实验报告表1-8 扩充内存
实验报告表1-9更换显卡。

实验一:微程序控制计算机实验报告

实验一:微程序控制计算机实验报告

大连理工大学本科实验报告课程名称:计算机组成原理实验学院(系):软件学院专业:软件工程(日语强化)班级:学号:学生姓名:2011年7 月8 日大连理工大学实验报告学院(系):软件学院专业:软件工程(日语强化)班级:姓名:学号:实验台: 5实验时间:2011.7.6 实验室:C409 成绩:指导教师签字:实验一:微程序控制计算机实验1.实验目的:了解微程序控制计算机的工作原理及实现方法、初步学会程序的流程图画法及程序的模块化设计、调试方法。

2.实验平台:硬件平台:复旦大学FD-MCES教学平台;软件平台:自己做汇编和Unidebbuger调试软件3.实验要求:(任务)1)建立指令集文件(*.DEF 指令系统)2)建立微程序文件(*.M19)3)编写二位乘法程序,通过调试观察汇编指令在微程序控制计算机中的实施过程,学会程序设计中的流程图,模块化设计及调试方法。

4)实验原理图:(P46)要求将CPU的各信号加方向标,延伸IR(指令寄存器)下面如何接微程序控制部分以及各部件的控制端口与微指令发出口的联结。

5)实验原理:要求通过一条具体汇编指令说明本实验计算机的工作原理及实现方法(从PC=0、MPC=0 形成开始说起,为什么程序可以连续执行?)一条指令一般可分为两部分,即本条指令的操作码和操作数部分和下调指令的入口地址部分。

在多级时序系统中,一条指令被分为几个节拍,计算机按照一定的时序逻辑在不同的节拍中发出相应的控制信号,控制完成该指令的的相应操作。

计算机执行完本条指令的操作之后会将PC改为下调指令的入口地址,使程序得以连续执行。

程序开始执行时,根据ORG 0 找到第一条指令的入口地址,并从此处开始执行。

此时,PC=0,MPC=0。

程序执行的第一条指令是取指令操作,该指令只有一个节拍,即(PC)→AB,(M)→IR,(PC)+1 →PC,(A)→ACT。

完成程序计数器PC的数据传输到地址总线AB上,需要置MXA1为0,读存储器置CRD为0,IR接指令置GI为0,同时MPC 接数允许置MPLD为0,程序计数器加一,置PINC为’1’,累加器A输出数据到暂存器ACT置CG为0,其他各位置无效状态。

微机原理与接口技术实验

微机原理与接口技术实验

Flying College of BinZhou University
© 2009 Yuanwei
微机原理与接口技术实验
试验程序框图
Flying College of BinZhou University
© 2009 Yuanwei
微机原理与接口技术实验
试验六: A/D转换试验
Flying College of BinZhou University
用8255PA口控制PB口。
试验接线
PA0~PA7→K1~K7;(开关量输入模块) PB0~PB7→L1~L8;(发光管输出模块) 8255数据、控制线内部已线连好。
Flying College of BinZhou University
© 2009 Yuanwei
微机原理与接口技术实验
编程指南
⒈ 8255A芯片简介:8255A可编程外围接口芯片是INTEL企业 生产旳通用并行接口芯片,它具有A、B、C三个并行接口,用 +5V单电源供电,能在下列三种方式下工作: 方式0:基本输入/ 输出方式 方式l:选通输入/ 输出方式 方式2:双向选通工作方式 ⒉ 使8255A端口A工作在方式0并作为输入口,读取Kl-K8个开 关量,PB口工作在方式0作为输出口。
© 2009 Yuanwei
微机原理与接口技术实验
试验目旳
1、学习微机系统中扩展简朴I/O口旳措施。 2、学习数据输入输出程序旳编制措施。
试验内容
利用74LS244作为输入口,读取开关状态,并将此状态经过 74LS273再驱动发光二极管显示出来。
Flying College of BinZhou University
© 2009 Yuanwei

北理工8255A可编程并行接口实验

北理工8255A可编程并行接口实验

本科实验报告实验名称:8255A可编程并行接口实验实验一8255A可编程并行接口实验1. 实验目的1)掌握并行接口芯片8255A 和微机接口的连接方法;2)掌握并行接口芯片8255A 的工作方式及其编程方法;3)掌握小键盘的工作原理及接口技术;4)利用8255A 并行接口芯片与小键盘的接口电路,实现并行接口实验。

2. 实验原理和内容1) 8255A 芯片原理8255A 是可编程并行接口芯片,双列直插式封装,用+5V 单电源供电,如图3-1 是8255A 的逻辑框图,内部有3 个8 位I/O 端口:A 口、B 口、C 口;也可以分为各有12位的两组:图3-1 8255A 芯片管脚示意图A 和B 组,A 组包含A 口8 位和C 口的高四位,B 组包含B 口8 位和C 口的低4 位。

A 组控制和B 组控制用于实现方式选择操作;读写控制逻辑用于控制芯片内寄存器的数据和控制字经数据总线缓冲器送入各组接口寄存器中。

由于8255A 数据总线缓冲器是双向三态8 位驱动器,因此可以直接和8088 系统数据总线相连。

2) 8255A 端口地址图3-2 8255A 端口地址3) 8255A 工作方式8255A 芯片有三种工作方式:方式0、方式1、方式2。

它通过对控制寄存器写入不同的控制字来决定其三种不同的工作方式。

方式0 :基本输入/输出该方式下的A 口8 位和B 口8 位可以由输入的控制字决定为输入或输出, C口分成高4 位(PC7~PC4)和低 4 位(PC3~PC0)两组,也有控制字决定其输入或输出。

需注意的是:该方式下,只能将C 口其中一组的四位全部置为输入或输出。

方式1 :选通输入/输出该方式又叫单向输入输出方式,它分为A、B 两组,A 组由数据口A 和控制口C 的高4 位组成,B 组由数据口 B 和控制口C 的低4 位组成。

数据口的输入/输出都是锁存的,与方式0 不同,由控制字来决定它作输入还是输出。

C 口的相应位用于寄存数据传送中所需的状态信号和控制信息。

微机原理实验---并行接口实验

微机原理实验---并行接口实验

深圳大学实验报告课程名称:微机计算机设计实验项目名称:8255 并行接口实验学院:信息工程学院专业:电子信息工程指导教师:报告人:学号:2009100000班级:<1>班实验时间:2011. 06. 09实验报告提交时间:2011. 06. 25教务处制一、实验目的1. 学习并掌握8255的工作方式及其应用。

2. 掌握8255 典型应用电路的接法。

3. 掌握程序固化及脱机运行程序的方法。

二、实验要求1. 基本输入输出实验。

编写程序,使8255 的A 口为输入,B 口为输出,完成拨动开关到数据灯的数据传输。

要求只要开关拨动,数据灯的显示就发生相应改变。

2. 流水灯显示实验。

编写程序,使8255 的A 口和B 口均为输出,数据灯D7~D0 由左向右,每次仅亮一个灯,循环显示,D15~D8 与D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。

三、实验设备PC 机一台,TD-PITE 实验装置或TD-PITC 实验装置一套。

四、实验原理并行接口是以数据的字节为单位与I/O 设备或被控制对象之间传递信息。

CPU 和接口之间的数据传送总是并行的,即可以同时传递8 位、16 位或32 位等。

8255 可编程外围接口芯片是Intel 公司生产的通用并行I/O 接口芯片,它具有A、B、C 三个并行接口,用+5V 单电源供电,能在以下三种方式下工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。

8255的内部结构框图和引脚图五、实验过程1. 基本输入输出实验要求:实验使8255 端口A 工作在方式0 并作为输入口,端口B 工作在方式0 并作为输出口。

用一组开关信号接入端口A,端口B 输出线接至一组数据灯上,然后通过对8255 芯片编程来实现输入输出功能。

(1)按要求连接好实验电路。

(2)编写实验程序,经编译、无误后装入系统。

代码如下:SSTACK SEGMENT STACKDW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV DX, 0646HMOV AL, 90HOUT DX, ALAA1: MOV DX, 0640HIN AL, DXCALL DELAYMOV DX, 0642HOUT DX, ALJMP AA1DELAY: PUSH CXMOV CX, 0F00HAA2: PUSH AXPOP AXLOOP AA2POP CXRETCODE ENDSEND START(3)运行程序,改变拨动开关,同时观察LED 显示,验证程序功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
;********************;
;* 8255薄膜按键实验 *;
;********************;
a8255 equ 288H ;8255 A口
c8255 equ 289H ;8255 B口
k8255 equ 28bH ;8255控制口
in al,dx ;读行扫描值
and al,0fh
cmp al,0fh
jz key_loop ;未发现有键按下则转
call delay ;delay for amoment
key_findkey:
mov dl,[di]
mov ah,02
int 21h ;显示查找到的键盘码
mov byte ptr key_in,dl
key_waitup:
MOV DX,k8255
data segment
table1 dw 0770h,0B70h,0D70h,0E70h,07B0h,0BB0h,0DB0h,0EB0h
dw 07D0h,0BD0h,0DD0h,0ED0h,07E0h,0BE0h,0DE0h,0EE0h ;键盘扫描码表
LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH
mov di,offset char ;字符表首址
mov cx,16 ;待查表的表大小
key_tonext:
cmp ax,[si] ;cmp (col,row) with every word
cli
mov ax,data
mov ds,ax
mov es,ax
mov ax,stacks
mov ss,ax
mov dx,offset mes ;显示提示信息
mov ah,09
mov ah,al
MOV DX,k8255
mov al,88h
out dx,al
mov dx,c8255
mov al,ah
or al,0f0h
out dx,al
mov al,81h
out dx,al
mov dx,c8255
mov al,0fh
out dx,al
in al,dx ;读行扫描值
and al,0fh
cmp al,0fh
DB 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,'Press Key ',0ah,0dh,'$'
inh
cmp al,0f0h
jz key_loop ;未发现有键按下则转
mov si,offset table1 ;键盘扫描码表首址
int 21h
MOV DX,k8255 ;初始化8255控制字
mov al,82h
out dx,al
main_key:
call key ;get a char in (key_in) and display it
delay proc near
push ax ;delay 50ms--100ms
mov ah,0
int 1ah
mov bx,dx
delay1:
mov ah,0
int 1ah
jz key_findkey ;in the table
dec cx
jz key_loop ;未找到对应扫描码
add si,2
inc di
jmp key_tonext
end start
jnz key_waitup ;按键未抬起转
call delay ;delay for amoment
ret
exit: mov byte ptr key_in,'E'
ret
key endp
call disply ;调显示子程序,显示得到的字符
jmp main_key
mov ax,4c00h
int 21h ;退出
key proc near
delay endp
DISPLY PROC NEAR
PUSH ax
MOV BX,OFFSET LED
MOV AL,byte ptr key_in
MOV DL,AL
MOV AH, 05H
INT 21H
DISPLY ENDP
code ends
cmp bx,dx
jz delay1
mov bx,dx
delay2:
mov ah,0
int 1ah
cmp bx,dx
jz delay2
pop ax
ret
key_loop:
mov ah,1
int 16h
jnz exit ;pc键盘有键按下则退出
mov dx,c8255
mov al,0fh
out dx,al
key_in db 0h
data ends
stacks segment stack ;堆栈空间
db 100 dup (?)
stacks ends
code segment
assume cs:code,ds:data,ss:stacks,es:data
start:
相关文档
最新文档