




免费预览已结束,剩余29页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机课程设计报告班级: 组长: 组员:完成日期: 指导老师: 目 录1 概述31.1设计目的31.2 设计要求42 概要设计42.1设计环境与器材42.2设计思想52.3电路原理与主要心片功能52.3.1 8253主要功能62.3.2 8255主要功能72.3.3 8259主要功能82.3.4 8279主要功能103 详细设计113.1显示模块的实现123.2转换为段码模块133.3修改时间模块的实现143.4中段计时模块的实现173.5主程序流程图174 接口电路逻辑图184.1方案一实验连接线路图20 4.2 方案二实验连接线路图 215 实现功能与操作说明225.1功能225.2操作说明226 调试记录及误差分析226.1调试结果记录226.2 误差分析 237 课程设计工作日志 238 总结体会249 附录(程序清单)25一、 概述1.1 设计目的1)题目: 设计数字时钟:实时显示时间于LED数码管,并可以修改时间;2)设计目的:通过一个学期对微机原理与接口技术学习,我们掌握的知识还停留在理论的上。但是这是一门实践性较强的课程,让我们在学完该课程之后,进行一次课程设计,使我们将课堂所学的知识和实践有机结合起来,初步掌握接口电路设计的方法,提高我们学生的分析和解决实际问题的能力。通过设计实践,还培养了我们查阅专业资料,工具书或参考书,了解有关工业标准,掌握现代设计手段和软件工具,并能以图纸和说明书表达设计思想和结果的能力。1.2 设计要求本次课程设计的内容为电子时钟的设计与实现,利用8253可编程定时计数器,8259中断控制器,8255可编程并行接口芯片和8279让六个七段数码管显示时分秒设计一个电子钟的电路。利用定时器从0开始进行计时,将计时的结果可以分别通过软件延迟和硬件中断两种方式显示在数码管上。每隔1秒,秒钟计时一次,到60秒,分钟加1,秒钟清零;到60分小时加1,分钟清零;到24时时小时、分钟、秒钟都清零,重新开始计时,这时记做是一天24时。在本次做的数字时钟中我小组还做出了进行修改时间和在到整点时进行声音提示功能。总体内容:设计一数字电子时钟,能在数码管上显示时间并计时。 接口设计:根据题目和所用的接口电路芯片设计出完整的接口电路,并在实验系统上完成电路的连接和调试通过.程序设计:要求画出程序框图,设计出全部程序并给出程序设计说明和程序注释。课程设计报告:正文字数约4000字以上(不包含程序清单),内容主要有总体设计方案,工作和组成原理(框图)或设计说明,采用的技术路线,接口电路设计,程序设计(程序框图和程序清单及注释),对设计中所存在的问题和不足进行分析和总结。 前期完成的实验有:8259A中断控制器实验,8253定时计数器实验,8255并行接口实验。 二、概要设计2.1设计环境与器材(1)电脑一台 功能:用于对程序的进行编译测试等,同时还需要对实验设备进行控制,提供整个程序的运行平台,并且收集和释放硬件信号,实现程序功能。(2)实验箱一台 功能:此设备必须能提供我们小组做的数字时钟所需的8253、8255、8259、8279和显示灯等必要芯片。并且能通过接受PC机传来的信息,显示出相应的功能。以支持电子时钟的实现。(3)导线若干条 功能:用于电路和芯片之间的连接。2.2设计思想这次的课程设计数字时钟我小组选用了两种方案完成,这边我们主要讲第二种方案的设计思想,第二种方案是通过硬件中断的方法来实现。该方案主要是由以下模块组成:一.将时分秒转换为段码;二.显示时分秒模块;三中断计时模块;四.修改时间模块;在整个电子钟的设计中,我们使用8253用于定时功能,由于8259的中断只能是电平与边缘触发,我们这边选择用的是边缘触发。我们选择8253初始化控制字为35H,工作在方式2,在每次的计数初值的N-1时产生一个脉冲。在CLK0引脚接入1MHZ的时钟周期,而将计数初值通过两个计数器写为1000000时,继而在OUT1会每1s产生一个脉冲,然后将输出的脉冲送到8259的IR0产生中断,产生的中断信号去自动修改秒针,根据秒钟的判断再对时和分进行计数。电子时钟的显示格式 HH.MM.SS 由左到右分别为时、分、秒,六个数码管动态显示时、 分、秒的当前值。最大记时 23:59:59 超过这个时间时分秒位都清零重新开始。对于本次实验的一个功能:修改时间功能,该功能主要通过设置8255的工作方式为A口输入,然后将8个开关分别接A口端,通过读入8个开关的状态,判断要进行的修改操作。本实验我们设置8个开关所对应的功能:K0:0表示不修改时间,拨到1状态表示要进行修改时间操作;K1: 拨到1状态可以实现时钟全部清零的功能;K2: 对数字钟的秒进行加操作;K3: 对数字钟的秒进行减操作;K4: 对数字钟的分进行加操作;K5: 对数字钟的分进行减操作;K6: 对数字钟的时进行加操作;K7: 对数字钟的时进行减操作。对于本实验的另一个功能就是在我们在程序的8259里边调用中断函数时进行判断时、分、秒有没超过最大值时,如果到了整点即当分钟达到60min要执行时加1时,系统会通过滴一声来提示。该功能主要是通过8253的计数器2,提供一个声音频率,再对8253初始化一个工作方式,通过计数器2的out2输入该频率的声音到喇叭。2.3电路原理与主要心片功能本次设计实现的电子时钟的功能,电子时钟主要采用可编程并行接口芯片8255A、中断控制器2859A、定时/计数器8253、LED数码显示管和两个按键来设置一个控制灯的开关来组合设计。其中主要用8259A的IR7中断服务程序完成秒、分、时的运算即计时功能,IR6的中断服务程序完成调时、调分功能。8253用来产生50ms的脉冲作为IR7的中断请求信号。8255A负责将内存里的时位、分位和秒位数值输出到数码管。8279A用来控制显示器显示时钟。按键K1+和K2+分别作为IR2和IR6的中断请求信号。按键K1+启动/关闭对时功能,它决定是否屏蔽IR7和IR6中断源。2.3.1 8253主要功能1、主要功能:(1)具有三个独立的16位减法计数器;(2)每个计数器可按二进制或十进制计数;(3)每个计数器的计数速率可达2MHZ;(4)每个计数器有六种工作方式;(5)全部输入输出都与TTL电平兼容。2、8253内部结构:3、8253的控制字: 控制字的作用是决定8253各计数器工作方式。 控制字寄存器实际上是3个,分别控制三个计数器,但它们的端口地址相同。D7、D6 :计数器选择 00 计数器0; 01 计数器1 10 计数器2; 11 非法D5、D4 :读写格式 00 计数器锁存;使当前计数值锁存,以后再读取;因计数器为16位,而数据线8位,故需锁存,分次读取。01 只读写计数器的低8位,高8位自动为0; 10 只读写计数器高8位,低8位自动为0; 11 先读写计数器低8位,再读写高8位。D3、D2、D1 :计数器工作方式 000 方式0; 001 方式1; 10 方式2; 11 方式3; 100 方式4; 101 方式5;D0 :计数数制,决定计数器按二进制计数或BCD码(十进制)计数。 0 二进制; 1 BCD码(十进制)2.3.2 8255主要功能8255 可编程外围接口芯片是 Intel 公司生产的通用并行I/O 接口芯片,它具有A、B、C 三个并行接口,并行接口是以数据的字节为单位与I/O 设备或被控制对象之间传递信息。CPU 和接口之间 的数据传送总是并行的,即可以同时传递8 位、16 位、32 位等。用+5V 单电源供电,能在以下三种方式下工作:方式0-基本输入/出方式、方式1-选通输入/出方式、方式2-双向选通工作方式。8255 的内部结构及引脚如图2.1所示:图2.1 内部结构及引脚8255 工作方式控制字和C口按位置位/ 复位控制字格式如图3-7-2 所示:图2.2 置位/ 复位控制字格式2.3.3 8259主要功能中断控制器8259A 是Intel 公司专为控制优先级中断而设计开发的芯片。它将中断源优先级 排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259A 进行编程,就可以管理8 级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编 程来设定。同时,在不需增加其他电路的情况下,通过多片8259A 的级连,能构成多达64 级的矢量中断系统。它的管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应 和响应哪一级中断,3)响应中断时,向CPU 传送中断类型号。8259A 的内部结构和引脚如图2.3所示:图2.3 内部结构和引脚8259A 的命令共有7 个,一类是初始化命令字,另一类是操作命令。8259A 的编程就是根据 应用需要将初始化命令字ICW1-ICW4 和操作命令字OCW1- OCW3 分别写入初始化命令寄存器 组和操作命令寄存器组。OCW1-OCW3 各命令字格 式如图2.4所示,其中OCW1 用于设置中断屏蔽操作字,OCW2 用于设置优先级循环方式和中断结束方式的操作命令字,OCW3 用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设 置对8259 内部寄存器的读出命令。图2.4 OCW1-OCW3 各命令字格2.3.4 8279主要功能8279是可编程的键盘、显示接口芯片。它既具有按键处理功能,又具有自动显示功能,在单片机系统中应用很广泛。8279内部有键盘FIFO(先进先出堆栈)/传感器,双重功能的8*8=64B RAM,键盘控制部分可控制8*8=64个按键或8*8阵列方式的传感器。该芯片能自动消抖并具有双键锁定保护功能。显示RAM容量为16*8,即显示器最大配置可达16位LED数码显示。 引脚图如上图,8279的一条命令由两大部分组成,一部分表征命令类型,为命令特征位,由命令寄存器高3位D7-D5决定。D7-D5三位的状态可组合出8种形式,对应8类命令。另一部分为命令的具体内容,由D4-D0决定。每种特征所代表的命令如表3.3所示:D4、D3两位用来设定4种显示方式,D2-D0三位用以设定8种键盘/显示扫描方式, 分别如表3.4和表3.5所示。三、详细设计3.1显示模块的实现使用8279控制,用数码管的显示功能来设计,显示部分用八只LED为显示管,这些LED发光二极管的阴极是互相连接在一起的,所以称为共阴极数码管。通过在这八只发光二极管的阳极加+5V或0V的电压使不同的二极管发光,形成不同的字符和数字。电子时钟用到的是0-9十个数字,它们所对应的字符表依次是3FH、06H、5BH、4FH、66H、6DH、7DH、07H、7FH、6FH。该模块主要是将运算模块和对时模块运算出来并存放在内存单元里的十六进制时位、分位和秒位数值转化为十进制,并通过八只数码管显示出来,其中实验室中提供给我们的实验箱因为数码管只有六个,此模块实现的硬件是使用实验箱中的LED单元,采用软件译码,即在程序中设置一个段选码表。CPU直接往LED输出八段代码,省去了硬件译码器。显示的基本代码如下:mov cx,8xz: mov dx,b79 ;逐个清零 mov al,0 out dx,al ;清空显示 loop xz mov cx,8 mov dx,b79 lea si,dis ;缓冲区dis中存放有八位数码管所要显示的值play: mov al,si out dx,al inc si loop play流程图:开始cx赋值8循环控制将数码管清零cx 赋值8循环控制将dis 存放的段码在数码管上显示(即显示时间)返回3.2转换为段码模块流程图:开始将dis的有效地址给si将秒的十位和个位分离存放在si和si+1中将分的十位和个位分离存放在si+2和si+3中将时的各位和十位分离存入si+4和si+5中将led的有效地址给bx将cx赋值8通过循环控制将dis中的数值转换成断码返回3.3修改时间模块利用8个拨码开关,每拨动一次开关,对应的时钟、分钟、秒钟做相应的修改操作。流程图:开始初始化8255读A口将A口的原来的值读入ah将当前的值读入akou中比对A口的两个状态,找出是否有值不同判断最后一位是否为0返回YNal 左移一位对时的十位修改al 左移一位对时的个位修改判断时是否大于等于24YN时清零al 左移一位对分的十位修改al 左移一位对分的个位修改判断分是否大于等于60Y分清零Nal 左移一位对秒的十位修改al 左移一位对秒的个位修改判断秒是否大于等于60Y分清零Nal 左移一位adc bl 0判断bl是否小于1N 时分秒清零Y调用transaction函数将时间转换成段码调用show函数将时间在数码管上显示读A口判断最后一位是否为0Y返回N3.4中段计时模块流程图:开始秒加1判断秒是否等于60分加1Y判断分是否等于60Y时加1判断时是否等于24Y时分秒清零清中断NNN返回3.5主程序流程图开始将段地址放入ds中设定8279工作方式设定8255工作方式调用函数设定8253工作方式,选择工作方式3,采用二进制计数,先读第八位,再读高八位,通过计数器0和计数器1数个脉冲十的六次方产生1秒的时间调用函数设定8259的工作方式,初始化icw1,命令字13H,初始化icw2,选择ir0作为中断,指令八号中断,初始化icw4其命令字为1启用中断调用transaction函数将时间转换成段码调用show函数将时间在数码管上显示关闭中断调用do8255函数实现对时间修改四、接口电路逻辑图4.1方案一实验连接线路图8279的接线如下: CS79接地址208-20F;8255的接线如下: CS55接地址200-207, PA0-PA7分别接相应的开关K0-K7;连线图见纸质报告附表。4.2 方案二实验连接线路图8253的接线如下:CLK0和CLK2都接1M脉冲,OUT0接CLK1,OUT1接8259的IR0,OUT2接音乐发生器CATE0、GATE1和GATE2都接+5V;CS53接地址218-21F8259的接线如下: Cs59接地址210-217;8279的接线如下: Cs79接地址208-20F;8255的接线如下: CS55接地址200-207, PA0-PA7分别接相应的开关K0-K7;连线图见纸质报告附表。五、系统功能与操作说明5.1功能系统的功能主要是实现一下几个方面的内容:1)在程序运行前给时间的时、分、秒分别赋个初值,程序将时间存入内存中,然后一运行程序时就会显示初始化的时间;2)程序设计了通过8253定时(1s为周期产生一个方波)、8259提供中断来使秒钟加1,使能具有时钟计时功能;3)通过8255芯片的A口接到八个拨动开关上,设计了修改时间的操作功能;4)先在中断程序那边进行秒加1,并对秒、分、时判断中通过判断分是否达到最大值即60分钟,如果是,则说明到整时了,再通过8253的计数器2,输出预先设定好的一定频率的声音,作为该系统的一个整点报时的功能;5)我们通过右数起开关2的状态来决定是否要开始设定一个闹钟时间,拨到1状态表示进入设置闹钟状态,此时第38个开关分别对应闹钟的时、分、秒的修改。当时间运行到设定的闹钟时间时也是通过8253的计数器2,输出预先设定好的一定频率的声音提示闹钟时间到了,这就是闹钟的功能。5.2操作说明这边的操作说明主要是针对在运行程序后要进行修改时间时的操作,修改主要是由八个开关来控制。从右数起,第一个拨到1状态表示当前可以执行修改时间的操作了;第二个拨到1表示对时钟进行闹钟设定;第三个表示对秒钟执行加操作;第四个表示对秒钟执行减操作;第五个表示对秒钟执行加操作;第四个表示对秒钟执行减操作;第六个表示对分钟执行加操作;第四个表示对分钟执行减操作;第七个表示对时钟执行加操作;第八个表示对时钟执行减操作;确认修改后即可通过将第一个开关拨回0状态,让数字时钟继续进行计时。对于闹钟功能,开关2的状态来决定是否要开始设定一个闹钟时间,拨到1状态表示进入设置闹钟状态,此时第38个开关分别对应闹钟的时、分、秒的修改。当时间运行到设定的闹钟时间时也是通过8253的计数器2,输出预先设定好的一定频率的声音提示闹钟时间到了。六、调试记录及误差分析6.1 调试结果记录A,之前调试程序时,使用了jnz,jz等条件转移指令,出现了错误提示:跳转的字节数超出范围 改进方法:使用范围更大的jmp无条件转移指令B,实验调试过程中,我们发现中断程序没有运行,在检查完程序后,可以确定程序没有错误,之后我们猜测可能是8259芯片的问题,我们换了台实验机,全速运行之后,秒钟就可以跳动了。调试结果是硬件问题,问题已解决。6.2 误差分析用秒表对时钟进行误差分析:对数字时钟五分钟的走动进行五次时间误差测试,结果为:时钟:00:00:05:00 秒表:00:04:59:60 相差:0.4 秒时钟:00:00:05:00 秒表:00:05:00:10相差:0.1 秒时钟:00:00:05:00 秒表:00:05:00:13相差:0.13 秒时钟:00:00:05:00 秒表:00:04:59:87相差:0.13 秒时钟:00:00:05:00 秒表:00:04:59:76相差:0.24 秒误差分析: 我们运用了两个方案,这是用硬件中断来实现时钟的,会比用软件中断的来得准确,每五分钟的误差,差不多都是差零点几,去掉人为的不同步原因,硬件中断是比较准确的。t=(0.4+0.1+0.13+0.13+0.24)/5=0.18s,即平均每五分钟差0.18秒。则一小时约慢了2.16秒。七、课程设计工作日志6月16号 确定课题,寻找资料。 通过对课题的部分研究,分组讨论,寻找网络的资料,得出对时钟信息的一些看法和意见 组内讨论主要芯片。 组员复习芯片用法和功能。6月17号 讨论分组,确定了两个方案,分别讨论两个方案。1. 运用8253控制时钟信息的运行,并且运用键盘上的按键来控制时间的调整和初始化。2. 运用软件控制时钟信息的运行,并且运用键盘上的按键来控制时间的调整。 主要运用的芯片进行逐步的接线和调试6月20号 第一组:运用8253控制调试出1秒中发出一个信号 并且运用到时钟上,并且查询8279的具体使用方法 第二组:查询资料得出运用软件得出:软件控制需要得到实验箱的单晶振。向老师了解到单晶振之后进行编程和调试。同时发现软件控制需要占用CPU 即用循环的次数来控制时间这样使得CPU负荷高。6月21号 两组得出意见运用开关来进行调节,不需要运用到键盘控制。第一组:运用8253和8255的A口和B口接入LED可以得出led上的控制 实现一秒改变一个数字第二组:运用8279和8255的控制实现对LED灯的控制。查阅8279的led灯现实功能的代码并学习。6月22号: 两组分别调试出用开关接8255A口 通过开关的改变控制寄存器中的数字加减。 第一组出现问题:8253连接8255 B口 通过对B口输出的数据判断是否有脉冲到达,但是屏幕显示出现错误。询问老师得出:8253可能对屏幕有所影响。所以修改方案。用8259中断控制脉冲6月23号 两组整合方案:确定最终方案:8253控制时钟(可以改变为软件控制第二组做软件)用8259中断控制脉冲发出,运用8255控制开关端口,运用8279实现对led灯的显示。软件方面两组整合两组的各个函数,通过主程序调用函数。 实现对钟进行调整和钟得加减,但是进位出现问题。有时候进位加不上去。6月24号 对进位进行调整。记录数据和运行。实现基本功能。进行程序的误差数据进行记录,分析发现软件控制误差比较大硬件控制误差较小。一组添加新功能:整点时候响一声,运用8253的第三个寄存器,控制频率,对喇叭的声音控制,通过循环控制喇叭的时间。一小时嘟一声。6月27号 在基本功能之前完成的情况下,我们今天想到能不能继续添加一个简易的闹钟的功能,我们一开始只是想通过设定一个闹钟时间,然后时间到那一点时通过一个声音提示一下,表示闹钟时间到。通过不断的讨论与调试也基本完成了这一项功能,就是还有些不完善就是了,比如到点时播放一段音乐,还有就是在设定闹钟时也会出现一些小问题,因为时间问题,也没能对它做进一步完善了。 今天还有个任务就是课程设计报告的完成,我们小组也是通过分任务的方式给每个成员分配了一个任务完成。6月29号 课程设计答辩。八、总结体会在这个课程设计的过程中得到了张国安老师的悉心指导,在设计过程中我们碰到的问题张老师为我们小组指点迷津,帮助我们开拓了解决问题思路。这次课程设计我们小组五个人,在一周多的设计期间,我们每个组员都发挥了各自的作用,在该数字中设计中我们要实现的基本任务有时间转化为段码、显示时间、计时模块、8259的中断模块等,还有在调试过程中进行一些结果的记录,我们组长对每个组员分配的这些任务大家都积极主动的去完成。当这些基本功能都实现时我们又集中在一起讨论如何对功能进行完善,我们想出了进行修改时间,后面修改时间完成后我们又想到可以参考其他小组做的音乐播放程序来设置一个可以整点提示的功能。后来又考虑是否要做一个能实现闹钟的数字钟,但由于时间问题,这个功能没能做的完善,当然简单的闹钟功能我们还是可以实现的,只不过还需一定时间去继续完善就是了,我想这问题也是有待我们以后的学习中去慢慢总结的。时钟最重要的是精度问题,一点误差是难免的,当然我们小组也通过了几天的讨论、调试来尽量减少误差。像我们一开始做的方案一,是通过软件延迟的方式实现数字钟,后来老师跟我们说软件延迟误差会比较大,老师建议我们学会用硬件实现。所以我们通过翻阅资料、讨论研究,最终成功实现方案二,通过8259中断来实现计时,达到了精度比较高的要求。最后呢,就是课程实验报告的完成了,我们给各自分配一个任务,每个人写一块:开头的设计方案与最后的总结体会 流程图 连线图 调试记录 工作日记 通过这次课程设计我们小组成员的合作,我们明白了团队协作的力量,单靠一个人的力量是不行的。每个人都有自己的想法,很多问题只有通过大家的讨论,说出各自的想法,才能更快地发现问题、解决问题。九、附录(程序清单)方案一:Z8279 equ 20AhD8279 equ 208h ; 8279端口地址Ledmod equ 0Ledfeq equ 38h cs55a equ 200hcs55b equ 201hcs55 equ 203hcode segmentassume cs:codestart:mov ax,csmov ds,axmov dx,z8279mov al,ledmod ;设定8279工作模式out dx,almov al,ledfeq ;扫描频率out dx,almain: call readsec ;读秒 call timer call turn ;将时分秒转换为段码 call display ;显示时分秒 call do8255 jmp mainexit1: mov dx,cs55 mov al,90h out dx,al mov al,7fhpm1: mov dx,cs55b out dx,al push ax call readsec pop ax ror al,1 jmp pm1 mov ah,4ch int 21hLed db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhsec db 0min db 45hour db 08dis db 8 dup(0) ;显示缓冲区akou db 0;=timer proc cmp sec,59 ;59秒 jae min1add jmp near ptr goon1 min1add: inc min mov sec,0 cmp min,59 jae hour1add jmp goon1hour1add: inc hour mov min,0 cmp hour,24 jb goon1 ;清时钟 mov hour,0 mov min,0 mov sec,0goon1: rettimer endp;=readsec proc near ;读秒 push cx push bx mov bx,4 lpp: mov cx,0ffffhdelayaa: loop delayaa dec bx cmp bx,0 jne lpp inc sec pop bx pop cx retreadsec endp turn proc near ; 转换函数 lea si,dis mov bl,10 xor ax,ax ;清零 mov al,sec div bl mov si,ah ;秒的个位 inc si mov si,al ;秒的十位 add si,3 xor ax,ax ;清零 mov al,min div bl mov si,ah ;分的个位 inc si mov si,al ;分的十位 inc si xor ax,ax ;清零 mov al,hour div bl mov si,ah ;时的个位 inc si mov si,al ;时的十位 mov cx,8 lea si,dis lea bx,ledaskii: ;查表转换为段码 mov al,si xlat mov si,al inc si loop askii retturn endp;=display proc near ;显示函数 mov cx,8Xz:mov dx,d8279 ;逐个清零 mov al,0 out dx,al;清空显示loop xz mov cx,8 mov dx,d8279 lea si,display: mov al,si out dx,al inc si loop play retdisplay endp;=do8255 proc near push ax ;8255初始化 mov dx,cs55 mov al,90h ; 8255控制,A口输入 out dx,al tb1: ;调表 mov dx,cs55a in al,dx ;读A口 mov ah,akou xor ah,al mov akou,al ;保存当前A口状态 test al,01h jz end1 ;调表0,结束 shl ah,1 adc hour,0 shl ah,1 sbb hour,0 shl ah,1 adc min,0 shl ah,1 sbb min,0 shl ah,1 adc sec,0 shl ah,1 sbb sec,0 call turn call display mov dx,cs55a in al,dx test al,01h jnz tb1 end1: pop ax retdo8255 endpcode ends end start方案二:ledmod equ 0 ;工作模式ledfeq equ 38h ;扫描频率 a55 equ 200hb55 equ 201hc55 equ 203h ;8255端口地址a79 equ 20Ah ;8279端口地址b79 equ 208h a59 equ 210h ;8259端口地址b59 equ 211ha53 equ 218hb53 equ 219hc53 equ 21ahd53 equ 21bh ;8253端口地址code segmentassume cs:codestart:climov ax,csmov ds,ax mov dx,a79mov al,ledmod ;设定8279工作模式out dx,almov al,ledfeqout dx,al ;扫描频率mov dx,c55 mov al,80h out dx,al call d8253init call d8259initstimain: call transation ;将时分秒转换为段码cli call show ;显示时分秒 sticli call do8255sti jmp mainled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhsec db 56min db 58hour db 22dis db 8 dup(0) ;显示缓冲区akou db 0;=d8253init proc near mov dx,d53 mov al,36h ;控制字 out dx,al mov ax,1000 ;计0 初值 mov dx,a53 out dx,al mov al,ah out dx,al mov dx,d53 mov al,76h out dx,al mov dx,b53 mov ax,1000 out dx,al mov al,ah out dx,al retd8253init endp;=d8259init proc mov al,13h ;icw1 mov dx,a59 ;8259初始化 out dx,al mov al,8 ;icw2 mov dx,b59 out dx,al mov al,1 ;icw4 out dx,al mov ax,0 push ds mov ds,ax ;写8259中断程序的入口地址 lea ax,int0 mov ds:4*8,ax mov ax,cs mov ds:4*8+2,ax in al,dx and al,0feh out dx,al mov dx,c55 ;8255初始化 mov al,80h out dx,al pop ds retd8259init endp;=int0 proc nearcliinc sec cmp sec,60 ;60秒 jae min1add jmp goon1 min1add: inc min mov sec,0 cmp min,60 jae hour1add jmp goon1hour1add: inc hour mov ax,08e5h push ax mov dx,d53 mov al,0b7h out dx,al pop ax mov dx,c53 out dx,al mov al,ah o
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校音乐班管理制度
- 学生接送点管理制度
- 安全确认制管理制度
- 安服部安全管理制度
- 安置点日常管理制度
- 宗教活动所管理制度
- 实训室各种管理制度
- 实验室采购管理制度
- 客房服务间管理制度
- 室内潜水馆管理制度
- 2025年高考语文备考之小说精读:凌叔华《搬家》(附习题+答案)
- 工余安全知识培训课件
- 地生中考试卷真题及答案
- 浙江国企招聘2024温州市交通发展集团有限公司招聘47人笔试参考题库附带答案详解
- 《临床检验基础》课件-临床检验基础第一章:绪论
- 裱花晋级考核标准
- 高中主题班会 预防青少年药物滥用课件-高中主题班会
- 《资治通鉴》与为将之道知到课后答案智慧树章节测试答案2025年春武警指挥学院
- 苏州市太仓市2025届数学四下期末复习检测试题含解析
- 辊压机的运行与维护
- 表决权委托协议7篇
评论
0/150
提交评论