《综合创新训练》研究报告(论文)单片机实现数字电压表的训练.doc

上传人:仙人指路1688 文档编号:3933205 上传时间:2023-03-28 格式:DOC 页数:37 大小:1.26MB
返回 下载 相关 举报
《综合创新训练》研究报告(论文)单片机实现数字电压表的训练.doc_第1页
第1页 / 共37页
《综合创新训练》研究报告(论文)单片机实现数字电压表的训练.doc_第2页
第2页 / 共37页
《综合创新训练》研究报告(论文)单片机实现数字电压表的训练.doc_第3页
第3页 / 共37页
《综合创新训练》研究报告(论文)单片机实现数字电压表的训练.doc_第4页
第4页 / 共37页
《综合创新训练》研究报告(论文)单片机实现数字电压表的训练.doc_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《《综合创新训练》研究报告(论文)单片机实现数字电压表的训练.doc》由会员分享,可在线阅读,更多相关《《综合创新训练》研究报告(论文)单片机实现数字电压表的训练.doc(37页珍藏版)》请在三一办公上搜索。

1、 单位代码 10006 学 号 38153219 分类号 密 级 综合创新训练研究报告研究题目:单片机实现数字电压表的训练完成人:余武江 院(系):宇航学院指导教师: 2010年 12 月 21 日工程训练中心目录一.试验题目2二.实验要求与任务2三.实验箱、仿真器的用途及使用的简单说明2四.实验电路及说明(硬件设计)31.硬件设计方案32.8255的基本工作原理43.8255与单片机的连接及电路译码64.键盘与8255的连接方式65.LED的显示方法及其与8255的连接76.时钟系统的工作原理及时钟功能的实现方法97.A/D的工作原理10五.程序编制及说明。111.主程序设计及说明112.各

2、子程序设计及说明131)校时子程序132)时钟显示子程序143)电压测量子程序154)定时器1中断服务程序165)欢迎界面及班号显示子程序:17六.程序调试及问题、解决方法18七.实验结果及结果分析19八.结论及创新点20九.简易数字电压表(数字频率表)操作手册21附录:全部程序22一. 试验题目80C196单片机实验箱数字电压表训练程序设计与调试二. 实验要求与任务1、熟悉实验箱上键盘、LED显示器与单片机的电路连接2、熟悉仿真器的作用及文件建立、现场调试等软件的使用3、熟悉80C196的汇编语言程序的编制、编译与调试。4、完成实验箱键盘上LED显示器程序的设计与调试5、利用80C196的定

3、时器完成时钟程序的调试。6、完成双通道数字电压表(含时钟功能)程序的编制与调试。(要求实现键盘的判别及键盘数据的显示,A/D数据采集,数字电压表的实现,要实现程序的主、从结构,程序调试完成后全速运行中可以任意键入键盘数据,并实时刷新显示数据,程序运行过程中不得死机)。通过键盘实现时钟的校时(校时要求实现:小时、分、秒)、电压采集通道的转换、不同功能(时钟与电压表)的切换运行,键盘功能利用键盘已经提供的09数字键和AF功能键自行定义。7、编制简易操作手册三. 实验箱、仿真器的用途及使用的简单说明实验箱是集单片机应用技术、在线调试、在线仿真等功能于一体的开发系统。仿真器是用以实现硬件仿真的硬件。仿

4、真器可以实现替代单片机对程序的运行进行控制,例如单步,全速,查看资源断点等。尽管软件仿真具有无需搭建硬件电路就可以对程序进行验证的优点,但无法完全反映真实硬件的运行状况,因此还要通过硬件仿真来完成最终的设计。 目前的开发过程中硬件仿真是必需的。本实验系统包括AEDK196W仿真机和EXP96实验箱。实验箱自带电源,仿真机AEDK196W由仿真机主机、仿真电缆和仿真插头三部分组成,可以通过EXP96实验箱上的XC1两芯电源插座供电。进行实验时,实验箱需要和仿真机配合使用。仿真机通过仿真电缆接至实验箱上的仿真插座。具体参看图一。四. 实验电路及说明(硬件设计)1. 硬件设计方案实验箱配备了丰富的硬

5、件电路,和详细的实验内容,同时模块化、 积木化的结构支持用户自己开发实验,以满足INTEL 96系列单片机教学培训需要。硬件的配备使本实验系统可以工作在二种状态,使用跳线XB3(位于实验箱右下部)切换: (1)短路套XB3打在右端(VCC),实验机上64K程序空间完全供用户使用。 (2)短路套XB3打在左端(GND),实验机上提供16KRAM,3/4K I/O,37.25K ROM空间。 实验箱电路中各接口芯片占用单片机地址如下:ROM(27512)空间地址: 00000BCFFHRAM(6264) 空间地址: 0C0000FFFFHD/A转换芯片0832片选地址:0BD000BDFFH并行扩

6、展芯片244 : 0BE000BEFFH并行扩展芯片8255的PA口地址: 0BF00H并行扩展芯片8255的PB口地址: 0BF02H并行扩展芯片8255的PC口地址: 0BF04H并行扩展芯片8255的控制寄存器地址:0BF06H仿真器中晶体振荡器参数:晶体振荡器:11.0592MHz仿真器在进行系统初始参数设置时,按以下数据进行设置:1、CPU类型:缺省(80C196KB)总线宽度:8位ALE管脚:ALE2、仿真器:AEDK96W3、通讯:COM12. 8255的基本工作原理8255在单片机应用系统中被广泛用于可编程外部I/O扩展接口使用其构成(见图2):数据总线缓冲(驱动)器:用于和单

7、片机的数据总线(D-BUS)连接,以实现单片机与8255芯片的数据传送。并行I/O接口:8位的ABC口。这三个8位I/O接口功能通过编程决定其输入/输出功能读/写控制逻辑,用于管理8255所有数据、控制字、状态字的传送。l :片选控制, =0: 8255选通l :读控制, =0:允许单片机从8255读取各口数据或状态字l :写控制, =0:允许单片机向8255各口写入数据或向控制寄存器写入命令字l A0 A1 口地址选择u 0 0 选通寄存器A(A口)u 0 1 选通寄存器B(B口)u 1 0 选通寄存器C(C口)u 1 1 控制寄存器(控制口)l RESET:复位引脚,RESET=1 825

8、5复位,控制寄存器清零,所有接口(A、B、C)被设置为输入方式图3 8255的控制字图2 8255芯片组成结构图图 4 8255芯片与CPU的连接3. 8255与单片机的连接及电路译码8255占用CPU的地址如下 : PA8255 EQU 0BF00H ;8255的PA口地址 PB8255 EQU 0BF02H ;8255的PB口地址 PC8255 EQU 0BF04H ;8255的PC口地址 C8255 EQU 0BF06H ;8255的控制字地址4. 键盘与8255的连接方式实验箱上由16个键构成了键盘,该16个键分别与8255的PB口及PC0、PC1连接。其中, PB口用于读入键值,称为

9、行线,PC口用于输出键盘扫描信号,称为列线。(见图6)当PC0、PC1输出均为1,键盘封锁当PC0、PC1分别为0,则可扫描键盘。通过PB口读入数据,判断所操作的键值。PC0=0 PC1=1 PB0PB7分别为0,表示所操作的键码为07键PC0=1 PC1=0 PB0PB7分别为0,表示所操作的键码为8F键键码组合关系如下:00000010b 11111110B ( 02H FEH) 000000010b 11111101B ( 02H FDH) 100000010b 11111011B ( 02H FBH) 200000010b 11110111B ( 02H F7H) 300000010b

10、 11101111B ( 02H EFH) 400000010b 11011111B ( 02H DFH) 500000010b 10111111B ( 02H BFH) 600000010b 01111111B ( 02H 7FH) 700000001b 11111110B ( 01H FEH) 800000001b 11111101B ( 01H FDH) 900000001b 11111011B ( 01H FBH) A00000001b 11110111B ( 01H F7H) B00000001b 11101111B ( 01H EFH) C00000001b 11011111B (

11、 01H DFH) D00000001b 10111111B ( 01H BFH) E00000001b 01111111B ( 01H 7FH) F5. LED的显示方法及其与8255的连接试验箱采用共阴LED数码管:图5 七段LED显示块 如图6所示,8255芯片的PA口与各个LED段码引脚连接(PA0PA7连接LED dpa ),由此产生的数码管字形表为:显示字符 0 1 2 3 4 5 6 7段选码 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 显示字符 8 9 A B C D E F段选码 7FH 6FH 77H 7CH 39H 5EH 79H 71H图6 键盘及L

12、ED显示管与8255的连接6. 时钟系统的工作原理及时钟功能的实现方法(1)基本功能工作原理:图7 计数器1原理图系统利用计数器1溢出中断实现时钟功能。计数器1的计数脉冲来自对Ts进行八分频的电路。计数器在系统上电后便自由运行,当计数器计满产生溢出后,IOS1.5置“1”( IOS1.5 =1),读IOS1.5一次,IOS1与时间有关的各个标志清“0”,同时溢出信号还可申请定时器中断。定时器1溢出中断参数计算如下:计算每次溢出所需时间 T=(2*8/11.059)*65536 us=94.8165ms计算每秒的溢出次数 N=1000ms/94.8165ms=10.55 程序中,定义一个名为t_

13、buf 的六字节十进制时钟数据存储区,一个名为dis_buf的8字节显示缓存区,s_buf、m_buf、h_buf 分别为秒、分、时二进制数据存放单元。程序运行时,定时器1每中断11次,使秒单元加1;秒单元每增加60次,使分单元加1,同时秒单元清零;分单元每增加60次,使时单元加1,同时分单元清零;时单元每增加24次(12次)清零。每次中断,均将s_buf、m_buf、h_buf 的值经过二十进制转换为十进制,存入t_buf中。将t_buf 的值依次取出,在table 中寻找其相应的显示代码,并送入dis_buf中,再经过显示移位,送至8255A口,再通过对8255C口的动态扫描实现时钟的动态

14、显示。(2)校时原理:校时用到6键及7键。6键实现时钟秒单元、分单元、时单元的转换,7键实现对应单元具体值的调整。在主程序中不断扫描是否按下6键,若按下6键,进入校时子程序,关中断。此时对应秒单元的调整,6键继续按下1、2、3次,分别对应调整分单元、调整时单元以及跳出校时,开中断显示时钟。在相应调整单元每按下7键一次,相应单元二进制寄存器(s_buf,m_buf,h_buf)加1。7. A/D的工作原理图 8 A/D转换原理图将被测的外部模拟信号转换为计算机所能接受的数字量。(如图8)8098集成A/D转换器是8通道10位逐次逼近A/D转换器由一个8通道的模拟多路转换开关、一个采样/保持电路、

15、一个10位逐次逼近型A/D转换器、A/D命令寄存器、A/D结果寄存器等组成。在80196中,该A/D转换器还可以选择8位与10位精度两档。A/D转换器的模入通道与P0.0P0.7共享。A/D转换可以通过HSO命令选择F、通道或将A/D命令寄存器AD_COMMAND(02H)的GO位置1的办法来启动。在实验中,程序将通道采集的十六进制转化为以mV为单位的十进制数值。原理为:标准电压Vref(4710mv)经过内部的256个梯形电阻网络分压(20mv),再经过电容分压至1024个标准电压(4.6mv)。启动A/D转换后,经过88个状态周期(Ts),完成转换并将转换码存入AD结果单元。 AD的分辨率

16、=Vref/1023 被测电压计算:Vin= AD的分辨率*N =(Vref/1023)*N(N为从A/D结果寄存器中取出的结果) 转换时间:88Ts五. 程序编制及说明。1. 主程序设计及说明功能说明:时钟程序:进行初始化,开放定时器1溢出中断,运行欢迎界面(HELLO)子程序,并提供功能键的扫描。当C键按下时,运行24小时制时钟子程序;当6键按下,进入时钟设置子程序,设置完需退出校时子程序;当1或2键按下时,运行电压测量子程序,分别测量ACH6和ACH7两个通道电压值,此时若按下3键,则实现ACH6和ACH7通道的巡检,交替显示两通道的电压值;当0键按下时,显示班号381532。流程图:(

17、见下页)2. 各子程序设计及说明1) 校时子程序校时子程序功能说明:校时过程中中断关闭,通过按键6进行选位,通过按键7对所选位进行加1调整。第三次按6键时确认修改,重新开中断,在输入数值的基础上运行时钟程序。2) 时钟显示子程序功能说明:将时钟十进制数值送入显示缓冲区,寻找各自相应的显示代码,经过显示移位,通过对8255A口和C口的控制,实现动态显示时钟基本功能。3) 电压测量子程序功能说明:将A/D采集到的电压数值显示在低五位的显示器,同时判定所采集的通道号,显示在最高位显示器上。流程图:(见下页)4) 定时器1中断服务程序功能说明:定时器1每94.8165ms中断一次,每中断11次秒单元加

18、1,秒单元每增加60次分单元加1,分单元每增加60次时单元加1,时单元分增加24次清零。从而实现时钟基本功能 。5) 欢迎界面及班号显示子程序:功能说明:当单片机最初运行时显示“HELLO”欢迎界面,当按下0键时显示班号381532。六. 程序调试及问题、解决方法1.显示子程序调试问题分析:(1) 在KEY_LED子程序中,若延时过短,显示亮度高,但是数码无法辨认,无法读数;若延时过长,显示亮度低,闪烁严重,显示不清晰。我们经过反复的调整,找到了一个合适的延时时间,使显示码清晰可辨,而且稳定,亮度适宜。(2) 在校时子程序中,延时不仅影响显示,而且,将影响输入值的采集。延时过短,键盘扫描过快,

19、一次可能输入几位;延时过长扫描过慢,需按下键较长时间才能响应。所以我们在每次大循环当中,利用多次调用显示子程序,使显示清晰,同时由于显示子程序占用了一次大循环的大部分时间,键盘扫描的时间间隔也变得更加适宜,可谓是一箭双雕!(3) 由于A/D转换过快,电压采集值也变化很快,造成电压的低位显示不稳定,处于不断改变的状态,可以适当增加延时时间或取平均值,最后多调用显示程序,这样既保证了稳定性,又保证了显示亮度。2.欢迎界面及班号显示问题分析:(1) 要实现HELLO及381532两个代码在数码管上的循环移位显示的动态效果,就是要实现数码管位选和数码管段选的同时变化。这是我们亟待解决的技术问题。(2)

20、 为此我们先将要显示的字符所对应的显示代码存放在显示缓存区中,然后依次将显示缓存区中的代码送至8255A端口,同时将8255位选即C端口逐次加上20H,以实现移位,这样就实现了代码的一次扫描显示。(3) 当再次扫描时,我们将位选的初始位在上一次的基础上右移一位,再次扫描显示缓存区中的内容。周而复始,即可实现HELLO及381532的动态移位显示。3.电压巡检子程序中的问题分析:(1) 为实现电压巡检功能,需定时交替扫描ach6与ach7两个通道的电压值,这就要求定时改变A/D通道,即改变A/D通道选择寄存器的值,同时在改变显示的通道号。(2) 我们通过设置巡检标志寄存器NN,在未开启巡检功能时

21、NN=0,而开启后NN=1。在主程序中,当检测到NN=1时,则显示某一通道一定时间后切换到另一通道,如此往复。七. 实验结果及结果分析1.标准数据与测量数据表(电压表):序号标准电压(mv)测量电压误差备注ACH6ACH7ACH6ACH7100000最小测量值2172151161-12.21%-6.40%3916896906-2.18%-1.09%4149814791489-1.27%-0.60%5211020922107-0.85%-0.14%6260025772592-0.88%-0.31%7308030473062-1.07%-0.58%8356035323547-0.79%-0.37%

22、9409040674086-0.56%-0.10%104710472347330.28%0.49%最大测量值2.误差分析:整体上看,电压较低时,误差相对较大,电压较高时,误差相对较小,测量精度较高。误差来源主要有三方面,首先是系统误差,这主要由A/D转换自身的误差决定,无法消除;其次是由A/D基准电压不是标准的5.12V所致,若输入为5.12V,则输入电压计算公式为:Vin= 5120/1023*N(N为从A/D结果寄存器中取出的结果),理论A/D的分辨率约为5mv,但若实际的A/D参考电压与标准值相差较大时就会带来较大的误差,这一误差可通过测量真实的参考电压,求得实际的分辨率来提高精度;最后

23、一点是测量仪器(数字电压表)本身存在误差,这一误差也无法消除。最后我们还通过更改不同的分辨率来测量输入电压,再将其与实验测量值进行比较和校正,从而寻找到最佳的分辨率。八. 结论及创新点1.课题完成情况我们圆满完成了要求的所有任务,并且加入了要求之外的一些功能,同时还对整个系统进行了多次改进和优化,用较少数目的按键实现了所有功能,并且各按键功能独立,互不干扰,这样既提高了按键的利用率,又有利于系统的进一步扩展。除此之外,我们还编写了多位数输入右移显示的小程序。2.课题创新点或新思路(1) 程序的欢迎界面(2) 电压的双通道独立测量和巡检(3) 校时的同步显示调整(4) 各功能键相互独立,互不干扰

24、(5) 按键数目少,键的利用率高3.目前存在的问题及解决的方案存在问题:(1) 校准时间时还不能很直观的看出是对哪个单元进行更改(2) 电压显示尚不够稳定,波动较大解决方案:(1) 在调整相应单元时,相应单元闪烁(2) 取多次电压值的平均值1. 收获与体会经过将近一个学期的学习,我们的程序终于臻于完善。作为第一次接触单片机的实际应用,我们磕磕绊绊地走过来,经历了很多很多的坎坎坷坷,从对单片机的一无所知到似乎已经开始入门,我们克服很多困难,也因此收获巨大。由于大二的时候学习了足够多的数字电路知识,我们本学期也同时学习微机原理,所以理解单片机的理论知识并不太难,而由理论进入编程,用了太长的时间。起

25、初的几个周,我们主要锻炼一些小程序,对比着实验指导书,我们从第一个实验做起,一点一点摸索,当又一个小程序成功写出,当又一个流程图从手中画出,当实验目的成功被达到,我们都被这一个一个小小的胜利鼓舞。第一个实验程序是最艰辛的,就像所有的事情,第一步总是最难的,而当我们做到时,后面的就容易了很多。编程的时候,首先要把思路认清。在我们编写校时子程序的时候,由于刚开始没有将时钟程序的原理弄清楚,白费了一上午的时间,后来仔细地学习了程序原理,将思路弄清楚,画出大致流程图,程序很快就出来了。最重要的是耐心和细心。在编写电压程序的时候,我们决定采用中断法。程序的草稿很快出来了,但运行后显示数值总不能随外部电压

26、动态变化,这个问题折磨了我们两天,就在筋疲力尽就要放弃时,忽然发现进入中断后没有PUSHF修改之后,问题迎刃而解。我在期间得到的最大教训是:有一些细节的东西必须注意到,否则可能扰乱整个程序。例如:地址的存放占据一个字的空间;如果A/D中服程序如果有PUSHF,那么同时也关闭了软件定时器的中断;调用子程序(lcall或scall)必须有ret和它配套;堆栈时注意“先进后出”这些都让我们或多或少的吃了点亏,也因此记忆深刻,牢牢掌握。团队精神发挥着很大的作用。尽管大家原来都没有学过,但一起来摸索,一方面可以想得更详细,更周到,可以产生更多的想法和思路;一方面也能相互鼓励,尤其在检查程序的时候,一个人

27、做很容易有挫败感。不管怎么说,我们最终实现了程序要求的所有功能,可谓圆满完成任务。这次学习经历使我进一步接触了实践操作,更为以后更深层次的操作打下了基础。虽然还有很多路要有,但我更有自信。感谢陈老师耐心的教导,深入浅出的教学使我能抓住重点,在我们程序毫无头绪时给予关键的指点。九. 简易数字电压表(数字频率表)操作手册运行程序后,显示欢迎界面“HELLO”。说明按键功能备注0按下后动态移位显示班号381532除7键外各按键功能独立,且可实现任意功能间的切换(校时环节需先完成时间设置),时钟可由按下c键或通过校时开启,一旦开启便一直运行。1按下后显示ach6通道的输入电压值2按下后显示ach7通道

28、的输入电压值3按下后实现ach6与ach7双通道巡检6按下后进入校时环节,此时选通秒单元,每按下7键一次,秒单元加一;再次按下6键1、2、3次分别对应选通分单元、选通时单元、返回时钟显示,7键的功能同上。c按下后显示时间附录:全部程序CPU 80C196KBAX EQU 20HAL EQU 20HAH EQU 21HBX EQU 22HBL EQU 22HBH EQU 23HCX EQU 24HCL EQU 24HCH EQU 25HDX EQU 26HDL EQU 26HDH EQU 27HEX EQU 28HEL EQU 28HEH EQU 29HFX EQU 2AHFL EQU 2AHF

29、H EQU 2BHGX EQU 5AH GL EQU GX GH EQU GX+1 HX EQU 5CHHL EQU HXHH EQU HX+1IX EQU 5EH IL EQU IXIH EQU IX+1 LX EQU 60H LL EQU LX LH EQU LX+1 KX EQU 62HKL EQU KXKH EQU KX+1COUNT3 EQU 6AH ;通用计数器3COUNT4 EQU 6BH ;通用计数器4T_COUNT EQU 6CH ;定时计数器T_VT EQU 11 ;T11秒=11DIS_BUF_P EQU 70H ;显示代码存放缓冲区D_BUF EQU 80H T_BUF

30、 EQU 8AH S_BUF EQU 90H ;二进制数秒单元M_BUF EQU 91H ;二进制数分单元H_BUF EQU 92H;二进制数时单元DT EQU4CH;延时系数BCDEQU 0C00EH;BCD码存放地址TABLEEQU 0C014H;段码存放地址HSIRES EQU 0C00AH ;AD计算结果(二进制)HSIRESHEQU 0C00CHPA8255EQU 0BF00H;8255的PA口地址PB8255EQU 0BF02H;8255的PB口地址PC8255EQU 0BF04H;8255的PC口地址C8255EQU0BF06H;8255的控制字地址;*变量*COUNT2EQU

31、30HADSELEQU 50H;AD转换通道选择变量LEDSELEQU4FH;LED扫描显示位选变量CHANNAL EQU 4BH;显示通道号TSPEQU48H;TSP地址不能为4AHSP1EQU 46H;段码查找时的段码地址偏移量ADKEYEQU2CH;AD转换开关标志DDTT EQU 32HNEQU 34HM EQU 35H XEQU36H YEQU37H ZEQU38HZZEQU39HMMEQU40HNNEQU42HORG 2000H ;定时器中断向量DW 2800H;*初始化*ORG2080H LDSP,#0FFH;设堆栈指针首地址LDAX,#C8255;8255初始化.LDBBL,#

32、82H;A,B,C口均工作在方式0STBBL,AX;写8255控制字LDBCL,#1STBCL,PC8255LDCX,#HSIRES;HSIRES存储区清零LDDX,#0LDEX,#0STDX,CX+STEX,CXLDBLEDSEL,#0LDBDDTT,#0LDBN,#0LDBM,#0LDBX,#1LDBZ,#0LDNN,#0LDMM,#0CLRBADKEY;清AD转换开关标志;*主程序*MAIN:ADDBZZ,#1CMPBZZ,#0FFHJERESETZ LDBAH,PC8255;读PC口状态XORBAH,#3;PC1,PC0两位进行异或STBAH,PC8255;键盘扫描移位LDBAL,PB

33、8255;读PB口状态CMPBAL,#0FFH;是否有键按下?JENEXT2;否,转到NEXT2LDBAL,PB8255;读PB口状态LDBAH,PC8255;读PC口状态ANDBAH,#3;提取键码CMPAX,#02FDH;是1键按下吗?JEK1;是,转去K1CMPAX,#02FBH ;是2键按下吗?JEK2;是,转去K2CMPAX,#02F7H;是3键按下吗?JEK3;是,转去K3CMPAX,#01EFH;是C键按下吗?JEKCKC;是,转去KCCMPAX,#02BFH;是6键按下吗JECLKT;是,转去CLK_SETCMPAX,#02FEH;是0键按下吗JEKBKB;是,转去KBSJMP

34、NEXT2;跳转到NEXT2KCKC:LJMPKCKBKB:LJMPKBCLKT:LJMPCLK_SETRESETZ:LDBZ,#0SJMPMAINK1:LDNN,#0LDBM,#0LDBN,#1LCALLKEY1;调用KEY1子程序SJMPNEXT2;跳转到NEXT2K2:LDNN,#0LDBM,#0LDBN,#1LCALLKEY2;调用KEY2子程序SJMPNEXT2K3:LDNN,#1LDBM,#0LDBN,#1LCALL KEY1SJMPNEXT2NEXT2:CMPBN,#1JNEDIS_PLAYCMPBM,#1JEDIS_PLAY2;显示38153219-26LCALLDISPLAY

35、;调用电压显示子程序CMPBADKEY,#1;AD转换开关标志=1吗?JNEMAINT;否,跳转到MAINCMPNN,#1JECHANCHANEXT2_2:LDBAL,AD;是,读AD转换结果的低8位JBSAL,3,MAINT;AD转换完吗?否,跳转到MAINLDBAH,ADH;是,读AD转换结果的高8位SHRAX,#6;AD转换结果右移6位MULUAX,#49;计算电压值CLRBXDIVAX,#10STAX,HSIRES;电压值存入HSIRES存放区STR0,HSIRESH;HSIRES存放区的高16位为0LDBADCOM,ADSEL;再次开动AD转换SJMPMAIN;跳转到MAINDIS_

36、PLAY2:SCALLDISPLAY3 SJMPMAIN DIS_PLAY:CMPBM,#1JELOOPSWITCH;CLOCK显示子程序SCALLDISPLAY1;HELLO子程序 SJMPMAIN LOOPSWITCH:LJMPLOOP1CHANCHA:ADDMM,#1CMPMM,#1FFHJNENEXT2_2SJMPKEYKEYKEYKEY:LDMM,#0XORADSEL,#00000001BCMPBCHANNAL,#60HJESETCHANNALLDBCHANNAL,#60HSJMPNEXT2_2SETCHANNAL:LDBCHANNAL,#0DAHSJMPNEXT2_2MAINT:L

37、JMPMAINKC:ORB IOC1,#04H ;接通T1中断源CLRB INT_PENDING LDB INT_MASK,#01H;开放T1中断EILDNN,#0LDBZ,#0CMPBN,#0JNEKC_DISCMPBM,#1JEKC_DIS;跳转KEYC子程序LJMPCLOCKKC_DIS:LJMPLOOP1KB:LDNN,#0LDBM,#1LDBN,#1SJMPNEXT2;*时钟设置子程序* CLK_SET:CMPBZ,#1JENEXTNEXTDILDBY,#035H LDBAH,PC8255;读PC口状态XORBAH,#3;PC1,PC0两位进行异或STBAH,PC8255;键盘扫描移

38、位LDBAL,PB8255;读PB口状态CMPBAL,#0FFH;是否有键按下?JEDIS_P2;否,转到NEXT2LDBAL,PB8255;读PB口状态LDBAH,PC8255;读PC口状态ANDBAH,#3;提取键码CMPAX,#02BFH;是6键按下吗?JEK6;是,转去K6CMPAX,#027FH ;是7键按下吗?JEK7;是,转去K7NEXTNEXT:LJMPNEXT2DIS_P2:LCALLDISPLAY2LCALLDELAY1DJNZY,DIS_P2SJMPCLK_SETK6:CMPBX,#3JEBACKADDBX,#1SJMPCLK_SETBACK:LDBX,#1LDBZ,#1

39、LDBZZ,#0ORB IOC1,#04H ;接通T1中断源CLRB INT_PENDING LDB INT_MASK,#01H;开放T1中断EILJMPLOOP1K7:CMPBX,#4JEBACKCMPBX,#1JESET_SCMPBX,#2JESET_MCMPBX,#3JESET_HSET_S: ADDB S_BUF,#1 CMPB S_BUF,#60 JNE CHANGE1LDBS_BUF,#0ST0H,T_BUFSJMPCLK_SETSET_M: ADDB M_BUF,#1 CMPB M_BUF,#60 JNE CHANGE2LDBM_BUF,#0ST0H,T_BUF+2SJMPCLK_SETSET_H: ADDB H_BUF,#1 CMPB H_BUF,#24 JNE CHANGE3LDBH_BUF,#0ST0H,T_BUF+4SJMPCLK_SETCHANGE1:LDB LL,S_BUF CLRB LH

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号