版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录目录1摘要2关键词2第一章 引言3第二章 硬件系统设计42.1 硬件系统原理图42.2 设计中所用芯片资料介绍52.2.1 8253芯片资料52.2.2 8255芯片资料62.2.3 8259芯片资料82.2.4 键盘的设置92.2.5 LED 数码管的设置12第三章 软件系统设计143.1 程序流程图143.1.1 主程序流程图143.1.2 G处理流程图(开始计时)143.1.3 M处理流程图(名次存储)153.1.4 P处理流程图(显示成绩)153.1.5 A处理流程图(结束比赛)163.1.6 R处理流程图(返回DOS)163.1.7 中断处理流程图173.2 源代码183.3 参
2、数设置24第四章 课程设计总结264.1 心得体会264.2 参考文献26摘要数字式秒表是一种常用的计时工具,以其价格低廉,走时准确,使用方便而广泛的用于体育田径比赛中的一种计时装置。本次课程设计的课题是数字式秒表,主要是利用8253作为定时器,为秒表提供定时脉冲,使用7段码显示器作为秒表时间显示,用键盘控制秒表的工作过程。 数字式秒表拥有的功能:键盘控制秒表计时的开始,记录,结束,计时结束后按相应键显示所记录的时间,最多能够记录8个时间,按键退出设备。秒表计时范围为1分钟,满1分钟后自动退出比赛,计时精度为0.1秒。7段码显示器,第一位显示名次,后三位显示时间,格式为00.0秒。Abstra
3、ctDigital stopwatch timing is a commonly used tool, its low price, accurate time and easy to use and widely used in sports track and field competition in one of timing devices. The course design is the subject of digital watches, mainly using 8253 as a timer, stopwatch provides for the timing pulse,
4、 using 7-segment display shows the time as a stopwatch, stopwatch with keyboard control the working process. Digital stopwatch with features: The keyboard controls the start of stopwatch, record, end, after the time recorded by pressing the corresponding key to display the time, up to record 8 hours
5、 to exit the device. Stopwatch timer range is 1 minute, full-automatically after 1 minute out of the race, timing accuracy of 0.1 seconds. 7-segment display, display the rank first and after three display the time, the format of 00.0 seconds.关键词80X86,8259中断,8255,8253,键盘,LED动态显示第一章 引言微型计算机的诞生和发展是伴随着大
6、规模集成电路的发展而发展起来的,它采用大规模集成电路技术,将组成计算机的核心部件运算器和控制器集成在一块硅片上,组成了微处理器,简称MPU(习惯上也称CPU)。以微处理器为核心,配上内存储器和功能强大的I/O接口电路,通过总线相连而构成微型计算机(主机),简称MC。数字式秒表在我们的生活中应用的十分广泛,从普通的秒表(例如:手机中附带的秒表),到国际运动赛事中使用的非常精确的秒表。那么怎么样提高数字式秒表的精确度与数字式秒表的运算效率,就成为了我们首先要考虑的问题。本次微机接口课程设计所做的数字式秒表,我们通过使用汇编语言,利用8086CPU和试验箱进行数字式秒表的制作。报告中,我将从硬件系统
7、设置、软件系统设置、课设总结几方面介绍本次微机接口课程设计的主要成果。本次微机接口课程设计所做的数字式秒表的主要实现的功能是:数字式秒表拥有的功能:键盘控制秒表计时的开始,记录,结束,计时结束后按相应键显示所记录的时间,最多能够记录8个时间,按键退出设备。秒表计时范围为1分钟,满1分钟后自动退出比赛,计时精度为0.1秒。7段码显示器,第一位显示名次,后三位显示时间,格式为00.0秒第一章为引言,粗略地介绍此次课设的主要内容。第二章为硬件系统设置,介绍8253、8255、8259的引脚图及部分引脚资料、工作方式以及初始化编程,以便读者更容易了解此课设的基本部件,对硬件原理有逐步深入的了解。另外,
8、从键盘和LED显示器的设定的原理、编程进行详细的描述。第三章为软件系统设置,在此章中我们从秒表的五大功能机制入手,软件设计中,我们给出了主程序,中断程序以及各功能模块的程序流程图。此外,还给出了参数信息,增加了汇编源代码的可读性。第四章为课程设计总结,此部分包括心得体会,参考文献。第二章 硬件系统设计2.1 硬件系统原理图图1 数字式秒表硬件系统构成图2.2 设计中所用芯片资料介绍 芯片资料介绍部分分别介绍8253,8259,8255的引脚图,工作方式及初始化编程。2.2.1 8253芯片资料8253是一块定时器/计数器接口芯片,其具有三个独立的16位计数器,它可用程序设置成多种工作方式,按十
9、进制BCD码或二进制进行减法计数,最高计数速率可达2.6MHz。8253能工作于定时方式,OUT脚产生周期性的输出波形,作为可编程方波频率发生器、分频器等,也可以工作于计数器方式,OUT脚产生非周期性的输出波形,作为程控单脉冲发生器、事件计数器等。2.2.1.1 8253芯片引脚图及部分引脚资料图2 8253芯片引脚图部分引脚资料:D0D7为8条双向数据线,/WR为写输入信号,/RD为读输入信号,/CS为片选输入信号,A1、A0为片内寄存器地址输入信号。除/CS外,上述引脚都同系统总线直接相接。此外,每个计数器都有3条信号线:CLK0CLK2用于输入基准脉冲信号;OUT0OUT2输出不同的信号
10、波形来满足定时/计数器的要求;GATE0GATE2用于控制计数器的计数操作或者触发计数器的重启。2.2.1.2 8253的工作方式方式0 计数结束中断方式1 可编程单稳方式2 连续负脉冲发生器方式3 连续方波发生器方式4 软件触发选通方式5 硬件触发选通本次课程设计中8253工作在方式3,此方式为可软、硬件触发的方波发生器,N=Fclk/Tclk,在本次课程设计中,FclK信号为1.193MHZ,输出信号为100HZ,N为11930。其端口地址为4043H,40H口用于计数器0,41H口用于计数器1,42H口用于计数器2,43H口用于状态和控制口,本次课程设计只用到40H和43H两个端口地址。
11、2.2.1.3 8253的初始化编程8253加电后的工作方式不确定,必须经初始化编程后,才能正常工作初始化编程:(1)先写入控制字(2)再写入计数初值工作后,可随时读取计数值,一般先将计数值锁存在通道内的锁存器中,然后可分两次读取16位的计数值2.2.1.4 8253的初始化程序片段mov al,计数器控制字 mov dx,控制方式端口 out dx,al mov ax,计数器初值 mov dx,计数器0端口 out dx,al ;写计数器计数初值的低字节部分 mov al,ah out dx,al ;写计数器计数初值的高字节部分2.2.2 8255芯片资料8255是通用可编程并行接口芯片,具
12、有40个引脚、双列直插式封装的大规模集成电路,采用单一+5V供电,输入/输出电平与TTl完全兼容。2.2.2.1 8255芯片引脚图及部分引脚资料图3 8255芯片引脚图部分引脚资料:(1)端口A:PA0-PA7 (A组控制)常作数据端口使用,功能最强大(2)端口B:PB0-PB7 (B组控制)常作数据端口使用(3)端口C:PC4-PC7 (A组控制), PC0-PC3 (B组控制)可作数据、状态或控制端口使用可拆分成两个4位端口分别输入或输出每位可独立进行输出控制(位控制)2.2.2.2 8255的工作方式(1)方式0:基本输入输出方式(不带联络)适用于无条件传送和查询方式的接口电路(2)方
13、式1:选通输入输出方式(带输入/输出联络)适用于查询和中断方式的接口电路(3)方式2:双向选通方式(同时带输入联络和输出联络)适用于可双向传送数据的外设,适用于查询和中断方式的接口电路2.2.2.3 8255的初始化编程编程:只写 1 个方式控制字到控制口。D7:方式字/复位字选择位,1时为8255A方式控制字,0时为PC口的置/复位控制字,当D7为1时,其余各位的含义为:D6D5:A组选择方式选择位。00为方式0,01为方式1,10为方式2。D2:B组方式选择位。0为方式0,1为方式1.D4、D3、D1、D0:分别为PA口、PC7PC4口、PB口、PC3PC0口输入/输出方式选择位。0为输出
14、,1为输入。工作过程中:通过数据端口对外设数据进行读写。本次课设8255均工作在方式0,其把PA口、PB口和PC口的高4位、低4位都作为基本输入/输出口。2.2.2.4 8255的初始化程序片段mov al,方式控制字 mov dx,端口号 ;如果端口号>255,应用dx间接寻址 out dx,al ;写入控制寄存器2.2.3 8259芯片资料8259是专门用来控制中断的芯片。它内部集成了与中断控制有关的所有基本存储电路,包括中断请求锁存、中断源优先级排队、中断源识别、中断源屏蔽、中断向量号产生等电路,既可以支持程序查询式中断,又可以支持向量式中断,因而8259中断控制器的功能既强大又灵
15、活。2.2.3.1 8259芯片引脚图及部分引脚资料图4 8259芯片引脚图部分引脚资料:(1) D0D7数据总线(2) IR0IR7为7个中断请求(3) CAS0CAS2为级联线,输入/输出线(4) SP/EN从编程/使能缓冲器线,输入/输出线2.2.3.2 8259的初始化编程在8259开始工作前,用户必须对8259A进行初始化编程。通过写入初始化命令字ICW1ICW4对8259进行初始化。2.2.3.3 8259的中断操作编程在8259工作期间,可以随时向8259写入操作命令字OCW1OCW3,使之按用户设置的新的工作方式进行工作,如用户可以通过写OCW1来选择屏蔽某些中断,还可以通过写
16、操作命令字OCW2发中断结束命令。2.2.3.4 8259的操作方式编程OCW1,其格式为:OCW1也可称为屏蔽操作字,其被写入8259内部的中断屏蔽寄存器IMR。OCW1的8位与IR0IR7相对应,当其某一位为1时,即相应IR上的输入信号被屏蔽。IMR中的内容在任何时候都可读出或写入,要访问奇口地址。OCW2,其用于设置中断结束方式和优先级循环方式,要访问偶口地址。其格式为:OCW3,其用于设置特殊中断屏蔽方式和程序查询方式、读状态方式。其格式为: 2.2.3.5 8259的开中断IR0 in al,21h ;读状态进8259并开IR0中断and al,11111110bout 21h,al
17、2.2.4 键盘的设置2.2.4.1 键盘的接口键盘的接口一般分为独立式和矩阵式。独立式按键就是各按键相互独立、每个按键各接一根输入线,一根输入线上的按键是否按下不会影响其他输入线上的工作状态。因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下了。独立式按键电路配置灵活,软件结构简单。但每个按键需占用一根输入线,在按键数量较多时,输入口浪费大,电路结构显得很繁杂。故此种键盘适用于按键较少或操作速度较高的场合。若采用此方式,各按键开关均采用上拉电阻,这是为了保证在按键断开时,各IO口线有确定的高电平。当然如输入口线内部已有上拉电阻,则外电路的上拉电阻可省去。矩阵式键盘适用于按键数量较多的
18、场合,它由行线和列线组成,按键位于行、列的交叉点上,一个4*4的行、列结构可以构成一个含有16个按键的键盘。很明显,在按键数量较多的场合,矩阵键盘与独立式按键键盘相比,要节省很多的I/O口。行、列线分别接到按键的两端。行线通过上拉电阻接到+5V上。平时无按键时,行、列线处于高电平状态,而当有键按下时,行、列线将导通,因此行线电平状态将由与此行线相连的列线电平决定。按键的识别在此课设中采用扫描法。让所有的列线处于低电平,当有键按下时,按键所在的行电平将被拉成低电平,根据此行电平的变化,便能判定此行有键被按下。为了进一步判定到底哪一列的键被按下,可在某一时刻只让一条列线处于低电平,而其余所有列线处
19、于高电平。2.2.4.2键盘接线图 这里采用的是矩阵式按键,且采用行扫描法,键盘接线图见图5图5 键盘接线图2.2.4.3 键盘扫描程序mov dx,p8255tr1 ;将8255PB口的值全部赋值0,使行线电平为0mov al,0out dx,alinc dx ;将8255PB口的端口地址值加1,转换为8255PC口的端口地址start:in al,dx ;从8255PC端口输入数据,读PC口and al,0fh ;将8255PC端口输入的数据的高四位清0cmp al,0fh ;比较255PC端口输入的数据的值是否为0fjz uu ;若为0f则转到uu处执行,此时说明没有键按下mov cx,
20、8000h ;延时去抖loop $mov bh,0 ;将bh清0,行清0,bh中存放首行值mov bl,0 ;将bl清0,列清0,bl中存放列值mov cx,4 ;判别行数,共有4行,将其赋值给cxmov ah,0feh ;行扫描开始,先扫描第一行,第一行的值为0again:mov al,ah ;将ah中的值复制到al中mov dx,p8255tr1 ;将8255PB口的端口的值赋给dxout dx,al ;将al中的值输出到PB口中inc dx ;将8255PB口的端口地址值加1,转换为8255PC口的端口地址in al,dx ;从8255PC端口输入数据,读PC口and al,0fh ;将
21、8255PC端口输入的数据的高四位清0cmp al,0fh ;比较8255PC端口输入的数据的值是否为0fjnz ab1 ;若8255PC端口输入的数据的值不为0f,则转到ab1处执行,此时说明此行中有键按下rol ah,1 ;若8255PC端口输入的数据的值为0f,则ah的值左移一位,即下移一行,使下一行的值为0add bh,4 ;将bh的值加4,此时第二行对应的第一个的键行值为4loop again ;cx不为0时,转到again处执行,直到所有行都扫描完成jmp jianpan ;转到jianpan处执行ab1:mov cx,4 ;判别列数,共有4行,将其赋值给cxab2:shr al,
22、1 ;将al中值右移一位jc ab3 ;cf=1,说明该列中没有键按下,转到ab3处执行jmp ab4 ;cf=0,转到ab4处执行ab3:inc bl ;将列值加1loop ab2 ;当4列没有全部扫描完,cx!=0时转到ab2中执行ab4:add bh,bl ;键号(键值)=行号+列号 ;显示按键的值 mov al,bh ;将键号赋给allea bx,asctab ;取asctab的偏移量xlat ;(al)<-(al)+(bx)mov ah,2 ;将所按的键显示在屏幕上mov dl,almov k,al ;将al的值赋给kint 21hmov dl,al ;将al的值赋给dlmov
23、 k,al ;将al的值赋给kpush dx ;将dx入栈保护mov dx,p8255tr1 ;使行线为0电平,判释放out dx,alinc dx ;将8255PB口的端口地址值加1,转换为8255PC口的端口地址ddd:in al,dx ;读列线,判断是否有键按下and al,0fhcmp al,0fhjnz dddmov cx,00 ;延时去抖loop $mov dx,p8255tr2 ;读列线,判断是否有键按下hhh:in al,dxand al,0fhcmp al,0fhjnz hhhmov cx,00 ;延时去抖loop $pop dx2.2.5 LED 数码管的设置2.2.5.1
24、 LED的说明LED是7段码显示,并且是共阴的,将8255的PA0-PA7接到键盘显示单元的KD0-KD7,PB0-PB3接到KL1-KL4,PC0-PC3接到KH1-KH4,通过次部分可让LED动态显示相应的信息。此课设使用共阴结构,阴极控制端为低电平,数码显示短输入高电平时发亮。显示器的工作方式有静态显示和动态显示。所谓静态显示,就是当显示器显示某一个字符时,相应的二极管恒定地导通或截止。优点是显示稳定,在发光二极管导通电流一定的情况下显示器的亮度大,在系统运行过程中,仅在需要更新显示内容时CPU才执行一次显示更新子程序,大大节省了CPU的时间,提高CPU的利用率。所谓动态显示,就是一位一
25、位地轮流点亮各位显示器,对于每一位显示器来说,每隔一段时间点亮一次。显示器的亮度与导通电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时间参数,可实现亮度较高比较稳定的显示。此课设中使用的是动态显示,8255的A口作为扫描口,经反向驱动器75452接显示器公共极,B口作为数据口,接到显示器的各个段。2.2.5.2 LED的驱动电路如图6所示图6 LED的驱动电路图2.2.5.3 LED的显示程序 lea bx,dseg ;取dseg的偏移量 lea si,buf ;取buf的偏移量led:mov al,si ;led显示单元 xlat ;(al)<-(al)+(bx),要显示的数据
26、赋给al mov dx,p8255tr0 ;8255PA口输入断码 cmp roll,00000100b ;判断是否为第三个数码管,若是则将其小数点位点亮,否则直接输出 jnz xxx and al,01111111b ;点亮小数点位 xxx: out dx,al mov dx,p8255tr1 ;8255PB口输入位码,实现led的动态显示 mov al,roll ;将rool的值赋给al, out dx,al mov di,30 ;延时 mov cx,6000h delay:loop delay dec di jnz delay ;延时 inc si ;将buf的偏移量往后面移动一个位置
27、rol roll,1 ;将rool左移一位,实现led的位选 cmp roll,10h ;四位led数码管是否显示完,若是则将roll的值重新置1,否则跳到led处继续执行 jnz ledmov roll,1第三章 软件系统设计3.1 程序流程图此部分包括主程序,G处理流程图,M处理流程图,A处理流程图,P处理流程图,R处理流程图,中断处理流程图以及软件设置各模块能实现的功能。3.1.1 主程序流程图3.1.2 G处理流程图(开始计时) 3.1.3 M处理流程图(名次存储)3.1.4 P处理流程图(显示成绩)3.1.5 A处理流程图(结束比赛)3.1.6 R处理流程图(返回DOS)3.1.7
28、中断处理流程图3.2 源代码inttype equ 08h ;定时器中断号p8253tr1 equ 43h ;8253方式字端口p8253tr0 equ 40h ;8253计数器0端口p8255tr0 equ 0c000h ;8255PA端口p8255tr1 equ 0c001h ;8255PB端口p8255tr2 equ 0c002h ;8255PC端口p8255tr3 equ 0c003h ;8255方式字端口cnt0 equ 11930 ;初值11930个,1.193Mhz=100hz=10ms.model large.dataflag1 db 0 ;标志位flag0 db 0 ;标志位
29、asctab db '0gm0ar0p00000000' ;定义键盘对应键所对应的键值,0表示该键在本实验中没有用dseg db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h ;定义led显示的0-9buf db 0,0,0,0 ;定义四个led显示的数据buf1 db 0,0,0,0 ;定义四个led显示的数据time dw 0 ;时间控制时使用roll db 1 ;用于led数码管的位选k db 0 ;用于记录按键的键值table db 32 dup(?) ;定义32个空的存储空间,共可以记录8个人的成绩记录mp dw table
30、 ;定义指针指向table表np dw table ;定义指针指向table表hp dw table ;定义指针指向table表.code .startup mov dx,p8255tr3 ;8255写方式字,ab口工作于方式0输出mov al,81hout dx,al mov al,36h ;8253写方式字,方式3mov dx,p8253tr1out dx,almov ax,cnt0out 40h,al ;写低八位数据mov al,ah ;ah不能直接赋给端口out 40h,al ;写高八位数据 ;设置中断向量mov al,inttype ;定时器中断号mov ah,35h ;读中断int
31、 21hpush es ;将执行的指令地址入栈保护push bx mov dx,offset intp ;中断向量的偏移量mov ax,seg intp ;中断向量的段基址push ds ;ds指向数据段mov ds,axmov al,inttype ;定时器中断号mov ah,25h ;设置中断向量,ds:dxint 21hpop dsmov ax,data ;将data段与附加段链接起来,在这里写的原因是es段在中断设置中需要使用mov es,ax in al,21h ;读状态进8259并开IR0中断and al,11111110bout 21h,al sti ;开中断ab:call ji
32、anpan ;调用键盘程序cmp flag0,1 ;比较flag0的值是否为1jz mm ;flag0的值为1转到mm处执行,说明此时数字式秒表已经到达计时上限,退出返回DOS,否则比较按下键的值,再继续相应的操作cmp k,'r' ;判断按下的键的值是否为rjz mm ;若按下的键的值为r转到mm处执行,r键的作用是退出返回DOScmp k,'a' ;判断按下的键的值是否为ajnz ww ;若按下的键的值不为a转到ww处执行,a键的作用是结束比赛mov flag1,0 ;若按下的键的值为a,将flag0的值置1mov di,offset buf ;取buf的偏
33、移量mov si,offset buf1 ;取buf1的偏移量mov cx,4 ;cx赋值为4,因为buf中的内容存在4位rep movsb ;将buf1中的内容复制到buf 中ww:cmp k,'g' ;判断按下的键的值是否为gjnz ef ;若按下的键的值不为g转到ef处执行,g键的作用是开始比赛mov buf,0 ;将buf中的第一位的值置0,该位用来记录名次,此时开始比赛mov flag1,1 ;将flag1的值置1ef:cmp k,'m' ;判断按下的键的值是否为mjnz ab ;若按下的键的值不为m转到ab处执行,m键的作用是记录比赛成绩mov di
34、,mp ;将指向table表的指针赋值给diinc buf ;若按下一次m键,则buf中的值加1,说明已经记录下了第1个人的成绩,以后一次为第2个人.第8个人的成绩mov si,offset buf ;取buf的偏移量mov cx,4 ;cx赋值为4,因为buf中的内容存在4位rep movsb ;将buf中的内容复制到table 中add mp,4 ;此时table的指针的值加4,因为buf中的内容存在4位,指向下一个可存储的存储空间的首址处cmp buf,8 ;判断buf中第一个的值是否为8jge cd ;若 buf中第一个的值大于等于8转到cd处执行,此时说明8个人的成绩已经记录完jmp
35、 ab ;若 buf中第一个的值小于8转到ab处执行,此时说明8个人的成绩还没有记录完,需要继续记录成绩cd:mov buf,8 ;将buf中的第一个的值置8,则led第一个数码管显示8mov flag1,0 ;将flag1的值置0kk:call jianpan ;调用键盘程序cmp k,'r' ;判断按下的键的值是否为rjz mm ;若按下的键的值为r转到mm处执行,r键的作用是退出返回DOScmp k,'a' ;判断按下的键的值是否为ajnz qq ;若按下的键的值不为a转到qq处执行,a键的作用是结束比赛mov flag1,0 ;将flag1的值置0mov
36、 di,offset buf ;取buf的偏移量mov si,offset buf1 ;取buf1的偏移量mov cx,4 ;cx赋值为4,因为buf中的内容存在4位rep movsb ;将buf1中的内容复制到buf 中jmp ab ;转到ab处执行qq:cmp k,'p' ;判断按下的键的值是否为pjnz pp ;若按下的键的值不为p转到pp处执行,p键的作用是显示比赛成绩mov si,np ;将指向table的指针的值赋给simov di,offset buf ;取buf的偏移量mov cx,4 ;cx赋值为4,因为buf中的内容存在4位rep movsb ;将table
37、中的内容复制到buf中,以进行显示成绩add np,4 ;此时table的指针的值加4,因为buf中的内容存在4位,指向下一个显示的数据的首址处cmp buf,8 ;比较buf中第一个数码管的显示值是否为8jnz pp ;若buf中第一个数码管的显示值不为8,则转到pp处执行,此时说明8个人的成绩还没有全部显示完mov np,offset table ;取table的偏移量pp:jmp kk ;转到kk处执行mm:cli ;关中断 pop dx ;返回到中断处pop ds mov al,inttype ;设置中断向量为中断出现时的指令地址,继续执行mov ah,25hint 21h.exit
38、0 intp:push si ;中断处将一些段中的数据入栈保存push dipush axpush bxpush cxpush dx lea bx,dseg ;取dseg的偏移量 lea si,buf ;取buf的偏移量led:mov al,si ;led显示单元 xlat ;(al)<-(al)+(bx),要显示的数据赋给al mov dx,p8255tr0 ;8255PA口输入断码 cmp roll,00000100b ;判断是否为第三个数码管,若是则将其小数点位点亮,否则直接输出 jnz xxx and al,01111111b ;点亮小数点位 xxx: out dx,al mov
39、 dx,p8255tr1 ;8255PB口输入位码,实现led的动态显示 mov al,roll ;将rool的值赋给al, out dx,al mov di,30 ;延时 mov cx,6000h delay:loop delay dec di jnz delay ;延时 inc si ;将buf的偏移量往后面移动一个位置 rol roll,1 ;将rool左移一位,实现led的位选 cmp roll,10h ;四位led数码管是否显示完,若是则将roll的值重新置1,否则跳到led处继续执行 jnz led mov roll,1 ;四位led数码管显示完后,将rool的值置1 cmp fl
40、ag1,1 jnz gg inc time ;时间加1gg: cmp time,10 ;比较是否到达0.1s jnz iexit ;没有到达0.1s,则返回断点,在进入中断进行时间统计 mov time,0 ;到达0.1s后,将time的值置0 inc buf+3 ;将buf+3的内容加1,第四个led数码管显示1 cmp buf+3,10 ;比较buf+3的内容是否已经加满10次,是否到达0.1s jnz iexit ;没有到达10次,返回断点,在进入中断进行时间统计 mov buf+3,0 ;到达10次,将buf+3的内容清0 inc buf+2 ;将buf+2的内容加1,第三个led数码
41、管显示1 cmp buf+2,10 ;比较buf+2的内容是否已经加满10次,是否到达1s jnz iexit ;没有到达10次,返回断点,在进入中断进行时间统计 mov buf+2,0 ;到达10次,将buf+2的内容清0 inc buf+1 ;将buf+1的内容加1,第二个led数码管显示1 cmp buf+1,6 ;最高为只能计数到6,比较计数是否到达6次 jnz iexit ;没有到达6次,返回断点,在进入中断进行时间统计 mov flag0,1 ;到达60s后将flag0置1,数字式秒表最多计时60siexit: ;返回断点前,将入栈的数据出栈返回pop dxpop cxpop bx
42、pop axpop dipop siiret ;返回断点处jianpan: ;键盘显示子程序mov dx,p8255tr1 ;将8255PB口的值全部赋值0,使行线电平为0mov al,0out dx,alinc dx ;将8255PB口的端口地址值加1,转换为8255PC口的端口地址start:in al,dx ;从8255PC端口输入数据,读PC口and al,0fh ;将8255PC端口输入的数据的高四位清0cmp al,0fh ;比较255PC端口输入的数据的值是否为0fjz uu ;若为0f则转到uu处执行,此时说明没有键按下mov cx,8000h ;延时去抖loop $mov b
43、h,0 ;将bh清0,行清0,bh中存放首行值mov bl,0 ;将bl清0,列清0,bl中存放列值mov cx,4 ;判别行数,共有4行,将其赋值给cxmov ah,0feh ;行扫描开始,先扫描第一行,第一行的值为0again:mov al,ah ;将ah中的值复制到al中mov dx,p8255tr1 ;将8255PB口的端口的值赋给dxout dx,al ;将al中的值输出到PB口中inc dx ;将8255PB口的端口地址值加1,转换为8255PC口的端口地址in al,dx ;从8255PC端口输入数据,读PC口and al,0fh ;将8255PC端口输入的数据的高四位清0cmp
44、 al,0fh ;比较8255PC端口输入的数据的值是否为0fjnz ab1 ;若8255PC端口输入的数据的值不为0f,则转到ab1处执行,此时说明此行中有键按下rol ah,1 ;若8255PC端口输入的数据的值为0f,则ah的值左移一位,即下移一行,使下一行的值为0add bh,4 ;将bh的值加4,此时第二行对应的第一个的键行值为4loop again ;cx不为0时,转到again处执行,直到所有行都扫描完成jmp jianpan ;转到jianpan处执行ab1:mov cx,4 ;判别列数,共有4行,将其赋值给cxab2:shr al,1 ;将al中值右移一位jc ab3 ;cf=1,说明该列中没有键按下,转到ab3处执行jmp ab4 ;cf=0,转到ab4处执行ab3:inc bl ;将列值加1loop ab2 ;当4列没有全部扫描完,cx!=0时转到ab2中执行ab4:add bh,bl ;键号(键值)=行号+列号 ;显示按键的值 mov al
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 麻醉药品和精神药品的管理与使用
- 工匠精神赋能创新创业教育与实践
- 精神的三间小屋句子赏析
- 厨师长管理培训
- 检验科体液检查操作流程规范
- 工匠精神开学第一课
- 管理书籍设计展示
- 2026河北沧州任丘关爱精神病医院招聘备考题库附完整答案详解【必刷】
- 2026中煤财务有限责任公司招聘2人备考题库及答案详解(新)
- 2026广东东莞市望牛墩镇中心幼儿园招聘备考题库【夺分金卷】附答案详解
- GB/T 3565.4-2022自行车安全要求第4部分:车闸试验方法
- 进入刘才栋教授示范教学 - 局部解剖学 - 复旦大学上海医学院
- 常用卧位摆放护理操作考核标准、流程与指引
- 2023年安徽省中学生生物学竞赛预赛试卷-完整版
- 基坑开挖风险评估报告
- 水生动物增殖放流技术规范
- 纪委办公室室内改造项目可行性研究报告
- GB/T 17880.6-1999铆螺母技术条件
- SB/T 11094-2014中药材仓储管理规范
- GB/T 23339-2018内燃机曲轴技术条件
- 实验12土壤微生物的分离及纯化课件
评论
0/150
提交评论