基于at89c52单片机的抢答器设计内容摘要:

完成硬件初始化,子程序调用和程序间的切换,由于本设计要求抢答器具有开始、复位、抢答、三种方式切换功能,所以主程序除了要进行硬件部分的初始化以外还要进行各个程序之间的调用和切换。 主程序 流程图如图46 所示。 程序: void main huang 0。 red 0。 EA 1。 TMOD 0x11。 T2CON 0x01。 TH0 6553650000 /256。 TL0 6553650000 %256。 TH1 655365000 /256。 TL1 655365000 %256。 TH2 6553650000 /256。 TL2 6553650000 %256。 ET0 1。 TR0 0。 ET1 1。 TR1 1。 ET2 1。 TR2 0。 IT0 1。 EX0 1。 IT1 1。 EX1 1。 aa 0。 bb 0。 shijian 30。 while 1 keyscan。 外部中断模块 抢答器主要外部中断来自于选手们的抢答,当选手抢答时,抢答器同时判断被按下的键号并显示在数码管之上,然后再数码管上显示剩余时间,同时关闭中断,表示抢答结束,此时再有键按下抢答器也不会做出反应。 外部中断流程图如图 43 所示。 程序: void timer_2 interrupt 5 TH2 6553650000 /256。 TL2 6553650000 %256。 P1 0xfe。 temp P1。 temp tempamp。 0xf0。 while temp! 0xf0 delay 5。 temp P1。 temp tempamp。 0xf0。 while temp! 0xf0 temp P1。 TR2 0。 switch temp case 0xee: TR0 0。 TF2 0。 num 1。 bj。 red 1。 huang 0。 break。 case 0xde: TR0 0。 TF2 0。 num 2。 bj。 red 1。 huang 0。 break。 case 0xbe: TR0 0。 TF2 0。 num 3。 bj。 red 1。 huang 0。 break。 case 0x7e: TR0 0。 TF2 0。 num 4。 bj。 red 1。 huang 0。 break。 while temp! 0xf0 temp P1。 temp tempamp。 0xf0。 P1 0xfd。 temp P1。 temp tempamp。 0xf0。 while temp! 0xf0 delay 5。 temp P1。 temp tempamp。 0xf0。 while temp! 0xf0 temp P1。 TR2 0。 switch temp case 0xed: TR0 0。 TF2 0。 num 5。 bj。 red 1。 huang 0。 break。 case 0xdd: TR0 0。 TF2 0。 num 6。 bj。 red 1。 huang 0。 break。 case 0xbd: TR0 0。 TF2 0。 num 7。 bj。 red 1。 huang 0。 break。 case 0x7d: TR0 0。 TF2 0。 num 8。 bj。 red 1。 huang 0。 break。 while temp! 0xf0 temp P1。 temp tempamp。 0xf0。 定时中断模块 由于抢答器中需要显示倒计时来提示选手们抢答时间,在规定时间内作答,所以需要有定时中断模块,当时间小于 6 秒时,抢答器需要提供警告,以及当抢答时间结束时,要关闭外部中断,表示抢答结束,此时再有键按下抢答器也不会做出反应。 流程图如图 43 所示。 程序: EA 1。 ET0 1。 /*开启总中断源 */ EX0 1。 /*启动外部中断 0*/ if shijian 0 TR0 0。 TR2 0。 TF2 0。 报警模块 报警模块主要作用有两个,一是当时间还剩 5 秒时,蜂鸣器放出报警,以此提示选手们抢答时间将要结束;二是当有选手第一时间抢答成功时发出报警声,提示其他选手不必再抢答。 报警程序流程图如图 44 所示。 程序: if bb 1 bb 0。 if shijian 5 speak ~speak。 if shijian 4 speak ~speak。 if shijian 3 speak ~speak。 if shijian 2 speak ~speak。 if shijian 1 speak ~speak。 控制模块 控制模块主要作用是对抢答器的开始和复位功能进行控制,主要由主持人来实现功能。 当开始键被按下时,抢答器开始正常工作;当抢答器停止工作是,可以按下复位键使抢答器回答初始化状态。 控制程序流程图如图 45 所示。 程序: void keyscan if sjia 0 delay 5。 if sjia 0 shijian shijian+1。 if shijian 99 shijian 0。 while !sjia。 if sji 0 delay 5。 if sji 0 shijian shijian1。 if shijian 0 hijian 30。 while !sji。 第 5 章 系统的调试与仿真 Keil 的安装调试 简介 Keil C:是德国 KEIL 公司开发的单片机 C 语言编译器。 其前身是FRANKLIN C51,功能相当强大。 μ Vision2:是一个 for Windows 的、集成化的 C51 开发环境。 集成了文件编辑处理、项目管理、编译链接、软件仿真调试等多种功能,是强大的C51 开发工具。 在后面的讨论中,对 Keil C 和μ Vision2 两个术语不做严格的区分,一般多称呼为 Keil C,包含有μ Vision2 集成开发环境之意。 Keil C 的编译器和链接器包括 C5 A5 L51 和 BL51。 C51 是 C 语言编译器,其功能是将 C 源代码编译生成可重新定位的目标模块。 A51 是汇编语言编译器,其功能是将汇编源代码编译生成可重新定位的目标模块。 L51 是链接 /定位器,其功能是将汇编源代码和 C 源代码生成的可重定位的目标模块文件( .OBJ),与库文件链接、定位生成绝对目标文件。 BL51 也是链接 /定位器,除了具有 L51 所有的功能之外, 1 可以链接定位大于 64KB 的程序; 2 具有代码域及域切换功能; 3 可用于 RTX51 实时多任务操作系统 库管理器与模拟调试器 LIB51 库管理器可以把由汇编器、编译器。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。