吉林师范大学计算机学院PB电子教案:9.ppt

吉林师范大学计算机学院PB电子教案:9.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 用机记录浏览器 9.0 本章概括 9.1 让计算机自动记录本身的工作时间 9.2 数据库及数据窗口对象 9.3 窗口设计 9.4 使用 本章介绍一种使计算机能自动将每次开机时间和关机时间存入磁盘文件并可随时进行浏览、统计的软件方法。这种做法相当于在计算机内安装一个“黑匣子”,不管计算机什么时候开关,或做什么,这个“黑匣子”始终会忠实的记录每次的开、关机时间。尽管它记录的信息很有限,与真正意义上的黑匣子相比有一定差距,但对于加强机器管理,统计机器使用效率具有实际意义。尤其是采用了利用CMOS时钟电路内部的闲置寄存器存储关机时间的关键技术,对开发CMOS时钟电路的应用有参考意义。将汇编语言与PowerBuilder开发工具结合,开发应用软件,也会使读者有所启发。在此基础上进一步做一些工作,有可能开发出更有应用价值的软件或产品。 9.1.1 自动记时的有关技术 9.1.2 将关机时间存入CMOS实时钟寄存器 9.1.3 将上次关机时间和本次开机日期时间存盘 9.1.4 完整的源程序清单 9.2.1 应用程序对象、数据库和表 9.2.2 数据窗口对象 9.3.1 窗口布局和控件 9.3.2 窗口及控件的编码 让计算机将本身每次工作的时间都自动记录下来,对加强机器管理,减少人工登记手续,统计机器使用效率,分析机器技术性能都是有意义的。要做到这一点,只要将每次开机时间和关机时间都自动记录下来就可以了。记录开机时间非常容易。可以通过自动批处理,执行一个特定的文件,将当前日期、时间存入磁盘。甚至可以在自动批处理文件中加一、两条命令来实现。但是,要自动记录关机时间就不那么容易了。我们可能会想到以下几种方法: ① ② ③ ④ 关机之前让用户执行一个事先编好的程序,将当前时间存盘。这种方法实际上是手动的,用户会感到麻烦,极易疏漏。 通过修改计算机的定时中断1CH或08H服务程序,周期性的将当前时间存盘。这种方法要影响到机器的效率,在技术上也有一定困难。 对系统的CMOS实时钟设置报时时间,使之周期性的产生中断,并通过修改50H或4AH中断服务程序,将当前时间存盘。这种方法也不够理想。 有一种比较理想的方法是利用CMOS实时钟内部的闲置寄存器保存关机时间。CMOS时钟内部有一些数据寄存器和状态寄存器,它用电池供电,关机后信息不会丢失。其中有的数据寄存器是闲置不用的。我们可以周期性地把当前时间存入这些寄存器中,关机前最后一次存入的时间,便可做为关机时间。待下次开机时,将其取出存入磁盘。此种方法精巧、高效,不会影响机器的正常工作,也比较简单。 按照前面分析的技术路线,将关机时间存入CMOS时钟寄存器,要解决两个问题:一是存到哪些寄存器中,二是如何周期性的自动保存当前时间到指定的寄存器。 CMOS实时钟电路的寄存器资源十分有限,不太容易找到空闲的寄存器。但研究发现,其中的报时寄存器在一般情况下是闲置不用的,可以用它来存放关机时间(时、分、秒)。由于关机是随机性的,为了保存关机时间,必须要在关机前周期性的保存“当前时间”,被保存的最后一个“当前时间”可近似的做为关机时间。保存“当前时间”的周期越短,关机时间与最后一个“当前时间”的误差也越小。 计算机系统的08H号中断和1CH号中断在系统定时器的控制下,每隔55毫秒发生一次,也就是说,这两个中断服务程序每隔55毫秒就自动被执行一次。根据这一特性,可以通过修改1CH号中断服务程序,使其每执行一次,都将“当前时间”存入CMOS实时钟的报时寄存器一次,这样,就可以保证关机时间与关机前最后一次保存的“当前时间”的误差不超过55mS。尽管每55毫秒就要保存一次当前时间,但由于是寄存器存储操作,速度极快,对机器的正常工作毫无影响。 修改1CH号中断服务程序并使中断服务程序驻留内存,用高级语言显然不合适,因为会浪费大量的存储空间和执行时间,而用汇编语言完成这项工作则恰如其分。只要将下面这段汇编语言程序添加到原1CH号中断服务程序中,设置中断向量后,每55毫秒就自动被执行一次,将当前时间存入CMOS报时寄存器。 程序用系统1AH号中断的2号功能读取当前实时间,得到BCD码形式的时、分、秒分别在CPU内部寄存器CH、CL和DH中。用OUT指令将01输出到70H号端口(COMS索引寄存器地址),则71H号端口对应的是秒报时寄存器,用OUT指令可将当前秒存入该寄存器。类似地,将03输出到70H号端口,则71H号端口对应的是分报时寄存器,用OUT指令可将

文档评论(0)

ormition + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档