INC A MOV B,A CJNE A,B,RT MOV 30H,A MOV A,32H INC A MOV 32H,A RT: AJMP L10 ;//跳转到L0程序循环检测各个按键是否被按下// DEL05S: MOV TMOD,#10H ;//定时器T1,方式1// MOV TL1,#0DCH ;//送计数初值,保证定时时间为125ms// MOV TH1,#0BH MOV R2,#4 ;//设置软计数器,使4*125ms=0.5s// SETB TR1 ;//启动定时计数器// LOOP: JNB TF1,$ ;//等待1ms定时到// MOV TL1,#0DCH ;//再送计数初值,保证定时时间始终为125ms// MOV TH1,#0BH CLR TF1 ;//清除溢出标志位,以便下次判断// DJNZ R2,LOOP ;//等待0.5S延时到// CLR TR1 ;//关闭定时器1// RET ;//延时程序返回// INT_1: SETB P0.5 ;//熄灭黄灯// MOV A,31H ;//将同意数赋值给寄存器A// MOV B,A MOV A,32H CLR P0.0 CJNE A,B,LP ;//比较同意数与反对数的大小// MOV P0,#00H ;//三个显示灯同时点亮// SJMP OUT ;//跳转到OUT程序// LP: JC GREEN ;//判断溢出标志位Cy// CLR P0.0 ;//点亮绿灯// SJMP OUT ;//跳转到OUT程序// GREEN: CLR P0.2 ;//点亮红灯// OUT: NOP ;//空操作指令// RETI ;//中断返回// END
11
五、制作调试说明
1、制作与程序设计思路:
将所设计的硬件电路焊接好,然后根据硬件电路的基本接法画出软件编程的流程图,然后根据流程图中的各个模块编写相应模块的程序,最后将各个模块综合起来构成说设计的程序。
2、调试过程与结果:
程序的编写过程:
1)、根据软件的流程图中的各个模块的基本要求,先编写出模块程序,使其实现模块功能;然后根据流程图中各个模块之间的箭头方向将各个模块联系在一起,最后对对整体程序进行调节,直至调试运行后没有逻辑错误与警告; 2)、将运行没有错误的程序导入模拟软件中进行仿真调试,首先发现不能实现预期的功能,于是对程序进行修改,直至调试成功,通过仿真能够实现预期的功能,则程序编写成功,可进行硬件电路的调试。 调试过程中出现的问题:
1)、将所编程的的程序烧写在单片机8051芯片中,然后将其加入硬件电路中,然后进行调试,发现不能实现其功能。
2)调整后继续进行调试,结果还是不能实现预期的功能,当按下的同意键大于反对建时,绿灯被点亮;但当按下的反对建大于同意键时,仍然显示绿灯,同意键等于反对建是也显示绿灯,也不能达到预期的功能;进一步对程序进行调试,但仍然不能解决问题。然后对硬件电路进行检测发现有一个管脚虚焊,红灯也不能正常工作,于是将坏掉的元器件换掉后再进行调试后猜成功实现理想的功能。
12
六、操作使用说明
1、将汇编语言程序烧写进单片机8051芯片中,然后把芯片连接到硬件电路中; 2、按下开始按键(外部中断0)后开始表决,P1口上的按键为同意按键,P2口上的按键为反对按键,表决后按下结束按键(外部中断1),点亮相应的显示灯,绿灯表示同意大于反对总数,点亮红灯表示反对大于同意同意数。
七、总结
这次实训,主要实习任务是根据以前所学知识,设计单片机硬件电路,制作电路,自己编写汇编程序;并通过调试硬件电路和程序使其实现预期的功能。这次实训让我真正的了解了单片机设计的基本设计理念,以及设计所需要掌握的一些基本概念。同时更加巩固了我们所学习的知识,并将所学习的理论知识真正的应用于实践中。我认为此次的实习对我是受益匪浅的,让我更加有了学习的动力。当我所设计的电路经调试能够实现预期效果时,我的内心是无比的愉悦,虽然此次在调试过程中遇到了很多的问题,最终的结果页并不是那么理想,但我还是感觉很欣慰,因为这次实训让我了解到了平时学习中的不足,让我更谦虚的学习更多的知识。虽然有很多地方是借鉴别人的,但我能够在调试过程中学到很多以前没有弄明白的问题以及相关知识点。在这实训的二周里,说紧张却稍带着愉快的气氛,整个过程应该是充实的,时而惊喜,时而烦闷特别是最后调试阶段有一块调通了都会让我们高兴不已,当卡在某处时也确实是让人抓狂。总之通过这次单片机实训,我们不但复习了过去所学,并且学到了一些新东西。更重要的是通过这一次切身实践,才使我们真正将理论与实际结合起来,并且遇到了很多实实在在的需要我们亲自解决的问题。通过解决这些问题,我们处理实际问题的能力有了很大提高,积累了我们的实践经验,以便为以后打下牢固的基础。而这些才是我们作为一名工科学生最宝贵的财富。
13