at89c51数字频率计的设计与实现内容摘要:

溢出。 二进制转BCD子程序二进制转BCD分为小数部分和整数部分。 二进制转BCD子程序流程图 显示程子序先进行查码,然后由串行口发送到移位寄存器中。 程序:DISP:JB ALLOW,OUT。 显示更新是否允许 MOV R2,04H。 位数 MOV R1,40H。 显示数据首地址 DL0:MOV A,@R1 MOV DPTR,TAB2 MOVC A,@A+DPTR MOV SBUF,A。 发送 JNB TI,$ CLR TI INC R1 DJNZ R2,DL0 RETTAB2:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH六、 系统调试 硬件调试硬件调试,由大到小,从整体到局部,进行调试。 本设计电路简单,所以不一一调试,就最复杂的显示电路进行调试。 先由仿真器连接显示电路,循环发送四位(19)显示编码,如果四位都不能显示,检查信号传输电路,时钟电路,电源。 如果四位都能显示,但有的位显示不正确,检查LED与移位寄存器的连线顺序是否正确。 如果还显示不正确,与正常的位调换LED数码管。 调换后,正常的位显示不正常,则数码管坏了,换数码管。 调换后,不正常的位显示不正常,则移位寄存器坏了,换移位寄存器。 软件调试 软件调试的步骤(1) 源文件的建立:使用菜单 “FileNew”或者点击工具栏的新建文件按钮,即可在项目窗口的右侧打开一个新的文本编辑窗口,在该窗口中输入汇编语言源程序()。 保存该文件,加上扩展名(.asm或a51)。 (2)建立工程文件:点击“ProjectNew Project”菜单,出现以个对话框,要求给工程起一个名字,我们输入examl,不需要扩展名,点击保存按钮,出现第二个对话框。 这个对话框要求选择目标CPU(即我们所使用的芯片型号80C51)点击ATMEL前面的“+”号,展开该层,点击其中的80C51,然后点击确定按钮。 回到主界面,此时,在工程窗口的文件页中,出现了“Targ et1”,前面有 “+”号,点击“+”展开,可以看到下一层的“Source Group1”,这时的工程还是一个空工程,里面什么文件也没有,需要手动把刚才编写好的源程序加入,点击“Souce Group”使其反白显示,然后,点击鼠标右键,出现一个下拉菜单。 选中其中的“Add file to Group”Souce Group1”,对话框,要求寻找源文件,注意该对话框下面的“文件类型“默认为C Souce file (*.c),也就是以C为扩展名的文件,而我们的文件是以asm 为扩展名的,,要将文件类型该掉,点击对话框中”文件类型‘后的下拉列表,找到并选中“Asm Souce File(*.asm,*.a51)”,这样。 ,将文件加入项目,注意,在文件加入项目后,该对话框并不消失,等待继续加入其他文件,但初学时常会认为操作没有成功而再次双击同一文件,这时会出现对话框,提示你所选的文件以在列表中,此时点击确定,返回前一对话框,然后,点击”Close”即可返回主界面,返回后,点击“Souce Goup 1”前的加号, 文件以在其中。 双击文件名,即打开源程序。 (3)工程的详细设置:首先点击左边Project窗口的Target 1,然后使用菜单“ProgetOption for target ‘target 1’”即出现对工程设置的对话框,对这个对话框可谓非常复杂,共有8个页面,要全部高清可不容易,好在绝大部分设置项取默认值就行了。 设置完成以后安确认返回主界面,工程建立、设置完毕。 (4)编译、连接:在设置好工程后,既可以进行编译、连接。 选择菜单ProjectBuild target,对当前工程进行连接,如果当前文件已修改软件会先对该文件进行比阿尼,然后在连接以产生目标代码。 编译过程中的信息将出现在输出窗口中的Build页中,如果源程序有语法错误,会有错误报告出现,双击该行,可以定到出错的位置,对源程序反复修改后,最终会得到如图51所示的结果,该文件即可被编程器读入并写到芯片中,同时还产生了一些其他相关文件可被用于KEIL的仿真与调试。 正确编译之后的结果 调试过程中遇到的问题及解决方法在进入环境以后,遇到了很多问题,总结如下:(1)提示无asm文件编译时候提示:F:\...\File has been changed outside the editor, reload。 解决方法:重新生成项目。 (2)在进入Keil的调试环境以后,发现程序有错解决方法:将光标定位于需要修改的程序上,用菜单,Debug》Inline Assambly…即可出现对话框,Enter New 后面的编辑框内直接输入需要修改的程序语句,输入完之后键入回车将自动指向下一条语句,可以继续修改,如果不在需要修改,可以点击右上角的关闭按钮关闭窗口。 (3)程序调试时,一些程序必须满足一定的条件才能被执行到解决方法:这些条件往往是异步发生或难以预先设定的,这类问题使用的单步实行方法是很难调试的,这时就要使用发哦程序调试中的另一种非常重要是方法断点设置。 断点设置的方法有多种,常用的是在某一程序行设置断点,设置好断点后可以全速运行程序,一旦执行到该程序行即停止,可在此观察有关变量值,以确定问题所在。 在程序行设置/移除断点的方法是将光标定位于需要设置断点的程序行,使用菜单Debug/Insert/RemoveBreakPoint设置或移除断点(也可以用鼠标在该行双击实现同样的功能);Debug/Enable/Disable BreakPoint是开启或暂停光标所在懂行的断点功能;Dubug/Disale All BreakPoint暂停所有断点;Debug/Kill All BreakPoint清除所有的断点设置。 这些功能也可以用工具条上的快捷键进行设置。 (4)输入程序时,有中文标点,用keil编译时出现错误解决方法:程序里有带中文标点,用英文重输入一遍(5)汇编出现数字、字母混淆解决方法:字母“O” 和 数字 “0”。 主要错在这里。 注意细节。 参考文献[1]李全利,单片机原理及应用技术。 北京:高等教育出版社,2004[2]王曙霞,单片机实验与实训指导。 西安:西安电子科技大学出版社,2007[3]及力,Protel 2004原理图与PCB设计教程。 北京:电子工业出版社,2007[4]何利民,单片机高级教程。 北京:航空航天大学出版社,2000[5]李朝青,单片机原理与接口技术。 北京:航空航天大学出版社,1999[6]张毅刚,MCS51单片机应用设计。 哈尔滨:哈尔滨工业大学出版社,1997[7]李华,MCS51系列单片机实用接口技术。 北京:航空航天出版社,2000[8]陈光东,单片微型计算机原理接口技术。 武汉:华中理工大学出版社,1999[9]王福瑞,单片机测控系统大全,北京:航空航天大学出版社,1998 附录A 程序ORG 0000HAJMP MAIN。 主程序ORG 0003HLJMP KAYBOARD。 键盘中断入口ORG 000BHLJMP TIME。 定时中断入口ORG 0013HLJMP ZHOU。 周期测量入口ORG 002BHLJMP JSH。 计数中断入口LC EQU 50H。 量程存放TO EQU 51H。 定时溢出次数存放 NEW EQU 52H。 量程切换状态存放CHAO EQU 53H。 超量程状态存放ENTER BIT 00H。 确定按键位ALLOW BIT 01H。 显示更新允许位MAIN:MOV P1,FFH。 按键初始化 MOV IE,83H。 允许定时T0,按键INT0中断 SETB IT0。 按键中断出发方式为下降沿触发 CLR。 显示初始化 SETB MOV SCON,00H。 串口工作方式0 MOV 40H,00H。 显示缓存清零 MOV 41H,00H MOV 42H,00H MOV 43H,00HHOME:MOV LC,03H。 量程初始化 ACALL DISPLC。 显示量程DOWN:JNB ENTER DOWN。 确定量程。 CLR ENTERCHOSE:CJNE LC,01H,NEXT1。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。