北邮微原硬件实验报告
北邮2012级微机原理与接口技术实验报告1

北京邮电大学微机原理与接口技术实验报告学院:电子工程学院班级:学号:姓名:汇编语言程序的上机过程一、上机环境要运行调试汇编语言程序,至少需要以下程序文件:▪编辑程序:或其他文本编辑工具软件,用于编辑源程序。
▪汇编程序:MASM.EXE,用于汇编源程序,得到目标程序。
▪连接程序:LINK.EXE,用于连接目标程序,得到可执行程序。
▪调试程序:DEBUG.EXE,用于调试可执行程序。
二、上机过程汇编语言程序上机操作包括:编辑、汇编、连接和调试几个阶段。
1.编辑源程序用文本编辑软件创建、编辑汇编源程序。
常用编辑工具有:、记事本、Word等。
无论采用何种编辑工具,生成的文件必须是纯文本文件,所有字符为半角,且文件扩展名为.asm(文件名不分大小写,由1~8个字符组成)。
2.汇编用汇编工具对上述源程序文件(.asm)进行汇编,产生目标文件(.obj)等文件。
3.连接汇编产生的目标文件(.obj)并不是可执行的程序,还要用连接程序把它转换为可执行的EXE文件。
4.程序运行在DOS提示符下输入可执行程序的文件名即可运行程序。
5.程序调试在程序运行阶段,有时不容易发现问题,尤其是碰到复杂的程序更是如此,这时就需要使用调试工具进行动态查错。
常用的动态调试工具为DEBUG。
三、运行调试DEBUG是为汇编语言设计的一种调试工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段,它可以直接调试COM文件和EXE文件。
DEBUG状态下的所有数据都采用十六进制形式显示,无后缀H。
1.DEBUG的运行在DOS状态下,就可以进入DEBUG调试状态。
命令一:DEBUG ↙ (回车)格式二:DEBUG 可执行文件名↙(回车)进入DEBUG调试状态后,将显示提示符“-”,此时,可输入所需的DEBUG命令。
2.DEBUG的主要命令(1)显示内存单元内容的命令D(2)修改内存单元内容的命令E格式一:用给定内容代替指定范围的单元内容格式二:逐个单元相继地修改(3)检查和修改寄存器内容的命令R格式一:显示CPU内部所有寄存器内容和标志寄存器中的各标志位状态格式二:显示和修改某个指定寄存器内容格式三:显示和修改标志寄存器内容(4)运行命令G(5)跟踪命令T格式一:逐条指令跟踪格式二:多条指令跟踪(6)汇编命令A(7)反汇编命令U格式一:从指定地址开始,反汇编32字节格式二:对指定范围内的存储单元进行反汇编(8)执行命令P(9)退出DEBUG命令Q四、运行调试-DEBUG使用说明①在DEBUG中的提示符“-”下才能输入命令,在按回车键后,该命令才开始执行。
微原实验报告

8259 中断实验一、实验目的和要求1)了解PC的中断结构及8259中断控制器的初始化。
2)熟悉8259中断控制器的工作原理和硬件连线方法。
3)了解8259的应用并利用8255驱动8路发光二极管来验证中断的实现。
4)练习8259中断的编程方法,熟悉四个初始化命令字和三个操作命令字的设置。
二、实验内容1.单片8259中断实验2.编写中断实验程序,其中主程序使8255的PB口为输出口,输出0FFH,L0-L7指示灯全亮。
2.编写中断服务程序从PB口输出0FH,L0-L3亮,L4-L7灭,并延时一段时间后返回主程序。
三、实验仪器、设备。
1.硬件环境:PC机一台微机原理及接口实验箱一台2.软件环境:1)微机在Windows98环境、Windows2000环境、Windows XP环境下均可以进行2)在WindowsXP环境下运行SAC-86S集成软件,编辑、运行汇编语言程序,并结合实验硬件来编辑、运行汇编语言程序。
四、实验原理1.8259A的内部结构的三大部分1)总线及级联缓冲:数据总线缓冲器、读写控制逻辑、级联缓冲/比较器。
2)中断处理:中断请求寄存器IRR、优先级比较分析器PR、中断服务寄存器ISR和中断屏蔽寄存器IMR。
3)中断控制部分:四个初始化命令寄存器和三个操作命令寄存器。
四个初始化命令寄存器是用以存放四个初始化命令字ICW1、ICW2、ICW3、ICW4。
初始化命令字是在对8259A初始化时设定的,一般在工作过程中就不再改变。
三个操作命令字寄存器是用以存放三个操作命令字OCW1、OCW2、OCW3。
2.8259功能:1)单片8259可管理8级优先级中断,最多通过9片8259级联可以管理64级优先级中断;2)8259可对任一级中断源进行屏蔽或取消屏蔽;3)具有多种中断优先级管理方式;4)能够向CPU发出中断请求信号INT及中断类型码;5)接收CPU发来的中断响应信号实验中断服务子程序是用8255的B口输出高电平驱动8个LED灯显示;当响应中断时8位LED灯高4 个灯灭;返回主程序时8个LED灯又全亮。
通信原理硬件实验报告 北邮

振幅调制与解调(AM)实验目的:1.掌握振幅调制器的基本工作原理;2.掌握调幅波调制系数的意义和求法;3.掌握包络检波器的基本构成和原理。
实验原理:1.调制原理其中m(t)为一均值为0的模拟基带信号;C(t)为一正弦载波信号;DC为一直流分量。
2.解调原理使用相干解调的方法对调制信号进行解调。
实验设备:1、AM信号调制音频振荡器(Audio Oscillator):产生一低失真,具有500Hz 到10KHz范围内频率可调的正弦波信号可变直流电压(Variable DC):可调范围DC输出(正负2.5伏可调)主振荡器(Master Signals):1. 产生100KHz载波振荡器(Carrier Oscillator)、正交正弦波输出和数字输出2. 8.3KHz 取样时钟脉冲(sampling clock)3. 2kHz正弦信号加法器(Adder):将两组模拟输入信号A(t)和B(t)相加。
乘法器(Multiplier):两组模拟信号相乘移相器(Phase Shifer):产生输入和输出之间相位改变的信号2、AM信号解调共享模块(Utilities Module):含有四种独立的功能音频放大器(Headphone Amplifier):将微弱的音频信号通过内部的放大电路将其放大,从而发出响亮的声音实验过程AM调制1.按图进行各模块的连接;2.音频振荡器输出为1khz,主振荡器为100khz,乘法器处于dc开关状态;3.调整加法器的增益G及g均为1;4.逐步增加可变直流电压,使加法器输出波形为正;5.惯出图形是否为am波形;6.调整a值,调整可变直流电压使a=0.5,1,1.5;7.观察不同a值调制与解调信号波形的变化。
AM的解调1.输入a2.用示波器观察rectifier输出波形3.用示波器观察lpf4.改变am的调幅系数a,观察包络检波器输出波形是否随之变化。
实验结果调制系数a=1原信号和AM信号原信号和解调信号a=0.8原信号和AM信号原信号和解调信号a=1.2原信号和AM信号原信号和解调信号实验分析(1)若用同步检波,如何完成实验?比较同步检波和包络检波的优缺点。
北邮2016通信原理硬件实验报告

北邮2016通信原理硬件实验报告电子工程学院通信原理硬件实验报告指导教师:实验日期:目录实验一双边带抑制载波条幅 (3)实验二:具有离散大载波的双边带调幅 (8)实验六:眼图 (13)实验七:采样、判决 (14)实验八:二进制通断键控 (17)实验十二:低通信号的采样与重建 (20)实验总结 (24)实验一双边带抑制载波条幅(DSB-SC AM)一、实验目的(1)了解DSB-SC AM信号的产生以及相干解调的原理和实现方法;(2)了解DSB-SC AM信号波形以及振幅频谱特点,并掌握其测量方法;(3)了解在发送DSB-SC AM 信号加导频分量的条件下,收端用锁相环提取载波的原理及其实现方法;(4)掌握锁相环的同步带和捕捉带的测量方法,掌握锁相环提取载波的调试方法。
二、实验原理AM信号的产生及相干解调原理框图如图1.1(输出图1.1由图知,锁相环乘法器的输出为:经过锁相环反馈,相干解调时与恢复载波想成,则,经过LPF、隔直流后,输出为.四、实验步骤SC-DSB 信号的数学表达式为s(t)=Acm(t)cos(Wct),这个实验产生SC-DSB 的方法很简单,就是用载波跟调制信号直接相乘,其中载波是由主振荡器产生为幅度为1V,频率为100KHZ的正弦波,而调制信号由音频振荡器产生的正弦信号再经缓冲放大器组成,幅度为1V,频率为1KHZ。
1)按照图连接,将音频振荡器输出的模拟音频信号及主振荡器输出的100KHz模拟载频信号分别用连接线连至乘法器的两个输出端;2)用示波器观看音频输出信号的信号波形的幅度以及振荡频率,调整音频信号的输出频率为10kHz,作为均值为0的调制信号m(t);3)用示波器观看主振荡器输出信号的幅度以及振幅频谱;4)用示波器观看乘法器的输出波形,并注意已调信号波形的相位翻转与已调信号波形;5)测量已调信号的波形频谱,注意其振幅频谱的特点;6)调整增益G=1:将加法器的B 输出端接地,A 输入端接已调信号,用示波器观看加法器的输出波形以及振幅频谱,使加法器输入与加法器输出幅度一致;7)调整增益g;加法器A 端接已调信号,B 接导频信号。
微机原理硬件实验报告

微机原理课程实验报告实验题目简易微型计算机控制系统的设计与接口芯片的使用,8259A、8254、8255A、8251A 的联合编程。
实验目的掌握简易微型计算机控制系统的设计和搭建的步骤和方法,理解并使用8259A、8254、8255A、8251A接口芯片进行联合编程,实现双机通讯、基本输入输出、计数\定时、中断响应的基本功能,在此基础上,达到实验设计构想。
设计思路1. 使用两台实验装置,一台为发送机,一台为接收机,进行两机间的串行通讯。
2. 运行各自对应程序后,发送机在DOS界面下显示开始信息“START”,接收机显示程序启动、等待接受的信息“BEGUN,RECEIVING INFO”。
3. 输入控制指令“TURN”(8路LED灯轮流闪动,每次灯闪0.5s),或“BLINK”(8路LED灯一同闪动,每次灯闪0.5s),或“FORWARD”(8路LED从两边向中间闪动,每次灯闪0.5s),回车后则接收机上8路LED灯出现各自对应效果,屏幕上显示“IT’S SHOW TIME”。
4. 显示15次(1min)后,演示结束,接收机LED灯出现OVER状态(每隔一灯亮),屏幕上显示“SHOW OVER”,并将结果传回发送机,发送机屏幕上显示同样内容。
5. 按ESC键退出程序。
程序思路分为发送机程序和接收机程序两大部分发送机程序思路(SENDER.ASM)1. 程序启动时显示提示信息。
指令字符串、提示信息的输入、显示、存储操作采用INT 21H的DOS中断功能调用。
2. 得到指令字符串后,判断其类型后,向发送机发送指令类型,功能实现通过8251A的双机通信,S/R(发送机、接收机,下同)设置相同的波特率、数据格式(1个停止位、偶检验、字符长度8位),均允许收发数据。
3. 发送完指令类型后,开始等待接收演示结束的指令。
4. 程序结束。
综上,发送机端主要用到8255的基本输入输出、8251A的双机串行异步通信、DOS功能调用等主要功能。
北邮计算机组成实验报告

一、实验目的1. 了解计算机组成原理的基本概念和组成结构。
2. 掌握计算机各部件的功能和相互关系。
3. 通过实验,加深对计算机组成原理的理解和认识。
4. 培养动手能力和实际操作技能。
二、实验内容本次实验主要分为以下几个部分:1. 计算机组成原理实验台介绍2. 数据通路和控制器实验3. 存储器实验4. 输入/输出实验5. 系统总线实验三、实验步骤1. 计算机组成原理实验台介绍实验开始前,先对实验台进行简要介绍,包括实验台的功能、操作方法、注意事项等。
2. 数据通路和控制器实验(1)观察数据通路和控制器结构,了解其组成和功能。
(2)通过实验,验证数据通路和控制器的基本工作原理。
(3)掌握数据通路和控制器的设计方法。
3. 存储器实验(1)观察存储器结构,了解其组成和功能。
(2)通过实验,验证存储器的基本工作原理。
(3)掌握存储器的设计方法。
4. 输入/输出实验(1)观察输入/输出设备,了解其组成和功能。
(2)通过实验,验证输入/输出设备的基本工作原理。
(3)掌握输入/输出设备的设计方法。
5. 系统总线实验(1)观察系统总线结构,了解其组成和功能。
(2)通过实验,验证系统总线的基本工作原理。
(3)掌握系统总线的设计方法。
四、实验结果与分析1. 数据通路和控制器实验通过实验,我们成功验证了数据通路和控制器的基本工作原理。
在实验过程中,我们了解到数据通路由数据总线、控制总线、地址总线等组成,控制器负责协调各部件的工作。
2. 存储器实验通过实验,我们成功验证了存储器的基本工作原理。
在实验过程中,我们了解到存储器由存储单元、地址译码器、读写控制电路等组成,存储单元负责存储数据。
3. 输入/输出实验通过实验,我们成功验证了输入/输出设备的基本工作原理。
在实验过程中,我们了解到输入/输出设备通过接口电路与主机相连,实现数据的输入和输出。
4. 系统总线实验通过实验,我们成功验证了系统总线的基本工作原理。
在实验过程中,我们了解到系统总线由数据总线、地址总线、控制总线等组成,负责传输数据和控制信号。
北邮微机原理软件实验报告
实验一1.实验要求:编一程序,将地址偏移量为100H单元开始的256个单元分别写入00H,01H,……,FFH数据;统计写入的数据块的0元素、正元素、负元素的个数,并分别将统计结果送入上述数据块后的三个单元中;用DOS功能调用显示上面数据快各单元(包括统计结果)内容,要求每行显示16个数据,两个数据之间用空格隔开。
程序设计思路:分配256个单元存放数据00H,01H,……,FFH,3个单元存放统计结果。
约定:DH存放0的个数,BH存放负数的个数,BL存放正数的个数,然后进行将256个数据一一与0进行比较,得到 DH、BH、BL。
将DH、BH、BL 存入SI的最后三个单元。
最后在以高、低4位,依次将每个单元的数据输出。
2. 程序流程:4.子程序:DISP PROC NEAR ;Show number MOV DL,AL MOV AH,2 INT 21H RET DISP ENDP开始初始化;SI 前256个单元存放00 H……FFH;CX=256;DH=0;BX=0;CMP AL ,0;MOV AL ,[SI] CX=0?将DH ,BX 存入SI ;INC SI ;CX=259;YESINC DH ;INC BHINC BL显示高4位显示低4位; 添加空格; INC SI ;BH=0??BH=16;CX=0?SF=ELSZF=1N ONO YE SN O终止YE实验二1.实验要求:编一程序,把键入的十六进制数转换成十进制,要求:(1)在屏幕上显示转换的十进制数,键入的最大值为FFFFH;(2)若键入非16进制的数,则提示错误;(3)程序中至少用一个子程序和宏命令。
2.程序设计思路:首先判断键入的字符是否为合法的十六进制字符,若是十六进制,将其转化成二进制数值,放入BX中,然后接收下一个字符,并将上一个字符左移4位,再讲此时的BX与接收到的BX相加,直到键入回车,停止接收。
然后通过除以10000,依次将余数除以1000、100、10、1,将二进制转化为十进制,再显示出来。
微机原理硬件实验报告_实验一
微机原理硬件实验报告目录实验一 (2)一、实验目的 (2)二、实验内容及要求 (2)三、操作步骤 (2)四、实验流程图 (4)五、源代码 (5)六、思考题 (7)七、心得体会 (8)实验一一、实验目的1.通过实验了解和熟悉实验台的结构,功能及使用方法。
2.通过实验掌握直接使用Debug 的I、O命令来读写IO端口。
3.学会Debug的使用及编写汇编程序二、实验内容及要求1.学习使用Debug 命令,并用I、O命令直接对端口进行读写操作,2.用汇编语言编写跑马灯程序。
(使用EDIT 编辑工具)实现功能A.通过读入端口状态(ON为低电平),选择工作模式(灯的闪烁方式、速度等)。
B.通过输出端口控制灯的工作状态(低电平灯亮)。
三、操作步骤1.实验板的IO端口地址为EEE0H在Debug 下,I是读命令。
(即读输入端口的状态---拨码开关的状态)O是写命令。
(即向端口输出数据---通过发光管来查看)进入Debug后,读端口拨动实验台上八位拨码开关输入I 端口地址回车屏幕显示xx 表示从端口读出的内容,即八位开关的状态ON是0,OFF 是1写端口输入O 端口地址xx (xx 表示要向端口输出的内容)回车查看实验台上的发光二极管状态,0是灯亮,1 是灯灭。
运行查看结果修改输出内容再运行查看结果该段程序的作用3.利用EDIT工具编写汇编写跑马灯程序程序实现功能A.通过读入端口状态(ON为低电平),选择工作模式(灯的闪烁方式、速度等)。
B.通过输出端口控制灯的工作状态(低电平灯亮)C>EDIT 文件名.asm录入程序按Alt 键打开菜单进行存盘或退出编译文件C>MASM 文件名.asm四、实验流程图五、源代码以上就是个拨码开关对应的功能跳数可以实现一次一跳,一次两跳河一次三跳,还有一种特殊的跳数一次零跳,就是暂停状态方向有左移和右移两种 速度有快慢两种码型是一种对跑马灯的初始化,在跑动后有些码型的效果是一样的。
北邮微原作业中断实验与编程分析
微原第二次软件实验一、实验要求编写一程序,在显示器上显示时、分、秒。
具体要求如下:1)借用计数器8253的Timer()作为中断源,通过8259A向CPU发中断,每10ms产生一次中断;2)在中断服务程序中管理刷新时、分、秒;3)输入文件名后清屏显示:Current time is : XX:XX:XX(时、分、秒键盘输入);4)当键入CTRL+C时,停止计时,返回系统,且系统正常运行不死机。
二、设计思路1)数据段定义四个字符串,分别用于显示程序功能、提示用户输入,显示当前时间以及错误格式输入提示。
同时定义六个变量用于存储当前显示的的时、分、秒的十位及个位,一个变量count100用以中断计数;2)在BIOS功能调用中,令AH=6,设置窗口左上角、右下角行列位置使当前页上滚,从而实现程序一开始的清屏功能;3)提示用户输入起始时间时,需要对输入格式进行判断,严格要求输入在00:00:00至23:59:59,正确输入时则存入相应的变量中,输入任意键开始计时,错误时则屏幕显示输入错误,提示用户重新进行输入,若输入为“CTRL+C”时退出程序;4)利用8253作为中断源,输入控制字36H,时间常数为11932,使其选用通道0计数,产生频率100Hz的方波,即中断100次时间间隔为1s,时间刷新显示;5)8253中断源每中断一次,进入timer中断子程序,将其段基地址及段内偏移量存入中断向量表,利用8259向CPU发出中断;6)timer子程序会对中断次数进行判断,每中断满100次时根据当前时间进行相应的时、分、秒修改,若不满100次时直接退出中断;7)屏幕显示时将时、分、秒的十位和个位分别送人al中,在BIOS功能调用中令ah=14h,实现将al中的字符写到光标位置,并将光标进一,8次循环直到时钟完全显示,同时比对second,中断满100次时,即时间间隔1s时second变化,当检测到这一变化时重新进入disp刷新显示;8)在每秒变化需要刷新显示时,都先进行键盘输入判断,当有输入且输入为“ctrl+c”时,退出程序。
微机硬件实验报告
微机硬件实验报告篇一:计算机硬件实验报告 (6000字)计算机硬件技术实验报告第四次和第五次实验姓名:李新基学号:XX010630实验班号:23 机器号:39目录实验四. 中断技术 ................................................ ............................. (3)一.实验目的 ................................................ ............................. (3)二.实验基本任务 ................................................ ................................................... ............ 3 1. 中断响应过程的理解 ............................................................................. (3)2. 中断程序编程练习 ................................................ ............................. (6)三、已完成的选作任务。
.............................................. ............................. (8)1. 6)(选做)去掉l4_int.c程序最后的那条无限循环语句,看看有什么现象?可以去掉吗? .............................................. ............................. (8)3. (选做) 采用事件标志处理中断 ................................................ ............................. (8)4.(选做) 按键抖动处理 ................................................ ............................. (10)实验五. 基本时钟和定时功能 ................................................ ............................. (11)一.实验目的 ................................................ ............................. (11)二.实验基础任务。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 微原硬件实验报告 学 院:信息与通信工程学院 班 级:2010211123 姓 名:罗 学 号:10211XXX 班内序号: 2
实验一 熟悉实验环境及IO的使用 一, 实验目的 掌握I/O地址译码的基本原理 二,实验内容
三,硬件接线图 3 四,程序流程图
五,源程序代码 CODE SEGMENT
选择Y4端口 选择Y5端口 送出脉冲 延时函数
送出脉冲 延时函数 键盘有按键 结束 4
ASSUME CS:CODE START: EXIT:MOV DX,2A0H;时钟Y4端口 OUT DX,AL;输出时钟负脉冲 CALL DELAY;延时,灯泡端为高电平 MOV DX,2A8H;D触发器数据口Y5 OUT DX,AL;送入低电平熄灭灯泡 CALL DELAY MOV AH,1;测试按键 INT 16H JMP EXIT MOV AX,4C00H INT 21H
DELAY PROC NEAR PUSH BX MOV BX,28AH WAIT:LOOP WAIT POP BX RET DELAY ENDP
CODE ENDS END START
七,实验收获和体会
本次实验主要联系了端口的输出,D触发器作为一个外部端口实现了向D触发器内写值并正确输出,控制灯泡亮灭,实现了译码功能,其中一个译码输出对应8个地址信号。 5
实验二 简单并行接口 三、 程序流程图 6 四、 源程序
CODE SEGMENT ASSUME CS:CODE START:MOV AH,1 INT 21H CMP AL,00011011B JZ EXIT MOV DX,2A8H;送出ASCII码 OUT DX,AL MOV DX,2A0H;读入ASCII码 IN AL,DX MOV DL,AL MOV AH,02H;屏幕显示ASCII码 INT 21H JMP START EXIT:MOV AX,4C00H INT 21H CODE ENDS END START
实验四 七段数码管 7 四,源程序代码 显示静态学号 DATA SEGMENT DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV DX,28BH;控制口地址 MOV AL,80H ;控制字10000000设定工作方式0 OUT DX,AL
LOP1: MOV DX,288H ;A口地址 MOV AL,06H;段选写1 8
OUT DX,AL MOV DX,28AH ;位选第4个LED,C口地址 MOV AL,08H OUT DX,AL
MOV DX,28AH ;熄灭数码管 MOV AL,0 OUT DX,AL
MOV DX,288H ;段选写3 MOV AL,4FH OUT DX,AL
MOV DX,28AH ;位选第3个LED MOV AL,04H OUT DX,AL
MOV DX,28AH ;熄灭数码管 MOV AL,0 OUT DX,AL
MOV DX,288H ;段选写9 MOV AL,6FH OUT DX,AL
MOV DX,28AH ;位选第2个LED MOV AL,02H OUT DX,AL
MOV DX,28AH ;熄灭数码管 MOV AL,0 OUT DX,AL
MOV DX,288H ;段选写4 9
MOV AL,66H OUT DX,AL
MOV DX,28AH ;位选第1个LED MOV AL,01H OUT DX,AL
MOV DX,28AH ;熄灭数码管 MOV AL,0 OUT DX,AL MOV AH,01H INT 16H JNZ EXIT;有键输入则跳出 JMP LOP1
EXIT: MOV AX,4C00H INT 21H CODE ENDS END START 五,实验心得与体会
这次的实验里我学习了使用8255芯片进行并口接口的应用,先用了I/O命令检测出了数码管的显示规律和段选规律。在显示学号的实验中,由于数码管一次只能显示一个,所以只有靠扫描显示的方法,通过选位寄存器选择一个数码管,显示数字,接下来换下一个显示另一个数字,由于数字停留的时间特别短,所以一秒内数码管会显示很多次从人眼看就是几位数码管在同时显示。
实验五 键盘显示控制实验 一、实验目的 10
1、掌握8255控制键盘及显示电路的基本功能及编程方法 2、掌握一般键盘和显示电路的基本原理 二、实验内容
三、流程图 11 开始
初始化8255 C口高四位输出 低四位输入
C口高四位输出低电平
读入C口低四位
是否有键按下 延时 是否有键按下 写控制字 C口高四位输入 低四位输出
查询为低电平的行值
查表得按键 数码管显示 12
四、源程序: DATA SEGMENT TABLE1 DB 0,4,8,12 TABLE2 DB 1,5,9,13 TABLE3 DB 2,6,10,14 TABLE4 DB 3,7,11,15 TABLE5 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,53H,79H,71H DATA ENDS STACK SEGMENT 'STACK' STACK
CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV DX,SEG DATA MOV DS,DX MOV DX,OFFSET DATA PUSH DX
LOOPS:MOV DX,28BH ;控制口地址 MOV AL,81H ;控制字10000001 OUT DX,AL
MOV DX,28AH ;C口 MOV AL,0FH ;行赋0 OUT DX,AL IN AL,DX ;读入列值在高4位 MOV CL,AL ;保存列值 CALL DELAY;延迟函数 ;MOV DX,28AH;再读一遍 ;MOV AL,0FH ; ;OUT DX,AL IN AL,DX ; CMP AL,CL ;两次读入列值相同,说明不是抖动产生 JNZ LOOPS TEST AL,08H ;按键是否在第一列 13
JZ COL1 TEST AL,04H JZ COL2 TEST AL,02H JZ COL3 TEST AL,01H JZ COL4 ;没有键值输入 ;MOV DX,289H ;位选第4个LED,B口地址 ;MOV AL,0H ;OUT DX,AL;熄灭数码管 MOV AH,01H INT 16H JNZ ENDD ;有键输入则跳出 JMP LOOPS COL1: CALL JROW;返回行值在AL中 MOV BX,OFFSET TABLE1 JMP NEXT COL2: CALL JROW MOV BX,OFFSET TABLE2 JMP NEXT COL3: CALL JROW MOV BX,OFFSET TABLE3 JMP NEXT COL4: CALL JROW MOV BX,OFFSET TABLE4 JMP NEXT
NEXT: XLAT ;AL中行值对应查列所在的表 MOV BX,OFFSET TABLE5 XLAT ;根据下标查到数码管对应显示 MOV CL,AL ;保存到CL中
MOV DX,289H ;位选第4个LED,B口地址 MOV AL,0H 14
OUT DX,AL ;熄灭数码管 MOV DX,288H ;A口地址 MOV AL,CL ;段选写CL OUT DX,AL
MOV DX,289H ;位选第4个LED,B口地址 MOV AL,08H OUT DX,AL MOV AH,01H INT 16H JNZ ENDD;有键输入则跳出 JMP LOOPS
ENDD: MOV AX,4C00H INT 21H JROW PROC NEAR PUSH AX ;AL中为已产生的列值 MOV DX,28BH ;控制口地址 MOV AL,88H ;控制字10001000 OUT DX,AL POP AX OR AL,0F0H MOV DX,28AH ;把列值输入 OUT DX,AL MOV DX,28AH ;把列值输入 IN AL,DX ;读入行值,高四位 TEST AL,80H JZ ROW0 TEST AL,40H JZ ROW1 TEST AL,20H JZ ROW2 MOV AL,3 ;都不满足则在第3行