1、基于C单片机的数字时钟课程设计(完整资料)(可以直接使用,可编辑 优秀版资料,欢迎下载)单片机技术课程设计数字电子钟学院:班级:姓名:学号:教师:摘 要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。所以设计一个简易数字电子钟很有必要。本电子钟采用A95单片机为核心,使用1MHz晶振与单片机T895相连接,通过软件编程的方法实现以24小时为一个周期,同时位7段ED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。该电子钟设有四个按键KE1、KEY2、KEY、KEY4和KY键,进行相应的操作就可实现
2、校时、定时、复位功能。具有时间显示、整点报时、校正等功能。走时准确、显示直观、运行稳定等优点.具有极高的推广应用价值.关键词:电子钟A89C2 硬件设计 软件设计目 录一、数字电子钟设计任务、功能要求说明及方案介绍41.1 设计课题设计任务1。2 设计课题的功能要求说明41 设计课的设计总体方案介绍及工作原理说明二、设计课题的硬件系统的设计5。1硬件系统各模块功能简要介绍521.1 ATC5简介52.1。2 按键电路三、设计课题的软件系统的设计63。1 使用单片机资源的情况632 软件系统个模块功能简要介绍73 软件系统程序流程框图73。 软件系统程序清单7四、设计课题的设计结论、仿真结果、误
3、差分析1设计结论及使用说明94。2 仿真结果0结 束 语参考文献12附 录13附录:程序清单13一、数字电子钟设计任务、功能要求说明及方案介绍1.1 设计课题设计任务设计一个具有特定功能的电子钟。具有时间显示,并有时间设定,时间调整 功能。 设计课题的功能要求说明设计一个具有特定功能的电子钟。该电子钟上电或按键复位后能自动显示系统提示符“0042”, 进入时钟准备状态;第一次按电子钟启动调整键,电子钟从2时9分秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态.1。3 设计课的设计总体方案介绍及工作原理说
4、明本电子钟主要由单片机、键盘、显示接口电路和复位电路构成,设计课题的总体方案如图所示:图1总体设计方案图本电子钟的所有的软件、参数均存放在AT892的lashROM和内部RAM中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。键盘采用动态扫描方式。利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。二、设计课题的硬件系统的设计.1硬件系统各模块功能简要介绍21。1 A89C52简介 ()兼容MCS1指令系统;(2)kB可反复擦写(大于10次)lash ROM;(
5、3)32个双向/O口;(4)25x8bt内部RAM;(5)3个16位可编程定时/计数器中断;(6)时钟频率024MHz;(7)2个串行中断,可编程UAR串行通道;(8)2个外部中断源,共个中断源;()2个读写中断口线,3级加密位;(10)低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;(11)有PDI、QP、TQFP及PLC等几种封装形式,以适应不同产品的需求。它的价格便宜,功能强大,能耗低。很大程度上减少总电路的复杂性,提高了所设计系统的稳定性。其芯片引脚图如图21所示。图2单片机AT952引脚图2。.2按键电路图22 按键图三、设计课题的软件系统的设计31 使用单片机资源的情况设计课题使用单
6、片机资源的情况如下:P口输出数码管段选信号,P2口输出数码管位选信号;晶振2MHz;调整选择键EY1:P1.0;通过选择键选择调整位,选中位闪烁;增加键KY2:P.1;按一次使选中位加;减少键KEY:P1.2;按一次使选中位减;此数字钟可实现基本的走时和显示时间时、分、秒;时间的调整;闹钟的设定和调整;闹钟的开启和关闭功能,具体如下:()实现基本的走时和显示时间的时、分、秒,上电自动显示初始时间12-500,且控制闹钟状态的的红色l灯为亮的状态;(2)当第一次按下第一个弹性按键时进入时间的调节状态,此时实现对显示时间的小时调节,按下第二个按键时实现小时的加一调节,按下第三个按键时实现小时的减一
7、调节;(3)当第二次按下第一个弹性按键时进入显示时间的分钟调节状态,按下第二个按键时实现分钟的加一调节,按下第三个按键时实现分钟的减一调节;(4)当第三次按下第一个弹性按键时进入闹钟的小时调节状态,按下第二个按键时实现闹钟小时的加一调节,按下第三个按键时实现闹钟小时的减一调节;()当第四次按下第一个弹性按键时进入闹钟的分钟调节状态,按下第二个按键时实现闹钟分钟的加一调节,按下第三个按键时实现闹钟分钟的减一调节;(6)当第五次按下第一个弹性按键时返回正常的显示时间走时状态;(7)当同时按下第二和第三个弹性按键时,关闭闹钟,且此时蓝色ed灯为灭,及定时时间到蜂鸣器并不响,若再次同时按下第二和第三个
8、弹性按键,则开启闹钟,且此时红色led灯为亮,定时时间到蜂鸣器发出滴滴的闹铃声,同时按下第二和第三个弹性按键即可关闭闹铃。闹铃状态默认为开启。3 软件系统个模块功能简要介绍本设计的软件系统主要采用以下基本模块来实现,主程序、中断服务程序、键盘输入程序模块、数码管及其驱动模块和延时模块。主程序:主要是用于对输入信号的处理、输出信号的控制和对各个功能程序模块的运用及其控制.中断服务程序:主要是用于电子钟的准确运行、数据输入过程中的闪烁。键盘输入程序模块:主要是用于确定按键并得到特定的键码值。数码管及其驱动模块:主要是用于驱动数码管及利用数码管显示时间。延时模块:程序中有两种延时子程序,一种是短延时
9、用于判键按下等,一种是长延时。3。3 软件系统程序流程框图系统软件采用汇编语言按模块化方式进行设计,然后通过Keil软件开发平台将程序转变成十六进制程序语言,接着使用Proteous 进行仿真,读出显示数据。3 软件系统程序清单本电子钟实现2小时制,8位数码管显示时分秒,显示式:12-5900。通过4只按键来调整时间:KEY(P10):调整选择键,选中位闪烁;KEY2(P1):增加键,按一次使选中位加1;K3(P。2):减少键,按一次使选中位减1;Bea(P3。):到了整点和闹钟就会响;ed (P1。2):闪烁;0口输出数码管段选信号,2口输出数码管位选信号;晶振1Mz。图-1主程序流程框图图
10、32显示时钟数组子程序 图33中断服务程序程序四、设计课题的设计结论、仿真结果、误差分析4.1 设计结论及使用说明本设计为基于单片机的电子钟的设计。刚开始,我们很多地方理不清头绪,无从下手,但通过认真研究设计课题,找书上网查资料,确定基本设计方案,对所用芯片功能进行查找、调试,然后画电路图等,积累了很多宝贵的经验。本设计用个四位一体的共阳数码管做为显示器,它显示时间值;设计中有三个按键,其中KY1为启动键,KEY2为加控制键 KEY3为减控制键 。图41 结果图4。2 仿真结果 在ProeusISIS的eug菜单中选择Execte,运行程序,系统仿真结果如图所示。实现功能:可调整运行的电子钟具
11、有三种工作状态:“d。1002状态、运行状态、调整状态. 图42“d。1004-22”上电初始化运行状态仿真结果 图43时钟正常运行状态仿真结果 图4闹钟定时调整状态仿真结果图45小时调整状态仿真结果图46分钟调整状态仿真结果结 束语单片机课程设计是一门很实用,很复杂的设计。这个设计用到了单片机,电路等方面的知识,通过这次课程设计,使我对单片机及其附属电路有了一定的了解,对课本上的知识有了近一步的掌握,也深刻明白了自己的不足。完成本次课程设计的过程,是一个从无到有的过程,经历了兴奋、所悟、完成几个过程。刚做做课程设计时,仔细阅读设计的题目和要求,以为没什么困难的,所用的知识书上都有.可是当我动
12、手开始做的时候,才发现其中的算法,设计是那么繁琐。经过一天的努力,再到图书馆和网上查找资料,在经过借鉴很多类似的资料,文献后,总算是有点眉目了。埋头苦干的过程是痛苦的,在思考算法和程序框架时,迷茫,烦躁,也参考别人的思路,不断循环中,终于最后完善了程序.其中的煎熬是很痛苦的,深刻明白攻克自己“未知领域”的困难。但当课程设计完成时,那感觉是甜蜜的,没有耕耘,哪来得收获的喜悦,就在这样的痛与快乐的交换中,我学到了知识。 通过这短短一周的实践,我感觉到自己从课本上学到的理论知识和实践仍有很大的差距.知道了很多元器件有什么功效,在仿真仪器中是什么代码。有的知识,自己感觉已经掌握得差不多了,但是实际操作
13、起来就有问题出现了。我遇到了不少问题,花费了很多的时间。这让我重新反思我们的学习,深刻领悟到我们这个专业动手,实践的重要性.理论不经过实践考验,是没法实施的,就像我们编的程序,很多方面考虑的都不够,几乎没有涉及到实际应用时的防范方法措施。这次的课程设计,让我学到了很多书本上学不到的东西,学到了实际应用时。最大的收获是:对键盘,显示器,5语言的应用有了深刻的了解.参考文献百度文库,基于C51单片机的程序设计2 百度百科,AT89C52简介附录附录A程序清单#incl g.hncludeabsacc.h#nclud #dnuintsigned int#efin ch usid chasbiKE1=
14、P11; 切换键sit KEY2=P12; /minute ,hor调整加定义bit KEY3=P1; /inut ,ur调整减1定义sbt ba=P3;/闹铃bitld=1; /闹钟,整时灯闪烁o unnd char ab=0xc,0xf9,xa4,0xb0,0x99,x,0x82,0x,0x0,0x90,xb,0xc8,08,xff,0x; /段码控制chr cde wkog_cd0fe,0xd,0x,0xf7,0xef,0df,0xf,x7;uchr ms82,2,10,4,0,0,1,14;chr rTab8;uhar minute59,hour=2,secnd=0; /正常时钟秒,分
15、,时定义uchr minute1=0,hur1=00;ecod1=00;/闹钟时钟秒,分,时 定义uchfa=, lg1=0; /切换标志 ucha nm=0;uit ount0; /定时器计数,定时50s,cunt满,秒加1*子函数声明*/vi xianshisuz(); /显示数组子程序voidalarm();/闹钟子程序* 延时子程序* oid ely(uint z) uit ,y;for(x=;xz;)for(y=0;y110;+);/*显示时钟子函数*/ vo dspa(ucha w8) nsgednt i,j,; aa=0xfe; /位选初值1 1110fr(i=0;i8;i+)/
16、依次将数组w中八个数取出,并显示 P2=aa; /位选j=wi; /取出要显示的数码P0=tbj; /取出段选编码a=_crol_(aa,1); /位选信号循环右移delay(1); /显示延时P00xf; /消影 /*显示时钟数组子程序*/void xianshihu() StrTab1=cn/10; /秒个位 Sr0=ecnd10; /秒十位 tTab=10; /间隔符 - StrTab4=mine1; /分个位 rab3=mite%1; /分十位 StTa5=10; /间隔符 StrTab=ur/0; /时个位 tab6=our10; /时十位/*键盘扫描子程序*/voidkeycan(
17、)(KE=0) /按一次,正常显示,按第二次,时调整,按第三次,分调这整, lay(0); /按键1去抖以及动作 if(EY1=) /确认按键是否按下fa+;/切换标志 il(!KEY1);/释放按键 i(fl=1)if(KE=0) delay(1);f(KEY2=) hour+;/正常时间 小时 加1if(ur=24)ou=0; wh(!KEY2) /释放按键 dispaly(StrTab); f(KEY=)delay(10); if(KEY3=0)our-;/正常时间小时 减1if(hour=)hour23; sply(STab); whil(!KEY3)disaly(StrTab); i
18、f(l=2)i(KEY20) /按键去抖以及动作 del(10); f(KE2=0) mnte+;/分加f(minute=6)miute=; ile(!E2) ipaly(StrTb); if(fag=) /秒表的加1 if(KE3=0) day(0); f(Y3=0) secnd+;/秒加if(seond0)ond=; whil(!E3)dispay(SrTab); if(flg=) /闹钟对时 (KE2=0) dely(10);if(KY2=0) 1+;f(hour=)hour1=0; /闹钟时间 小时 加1wile(!KEY2) alar(); if(KY3=0) delay(10);
19、if(EY3=) hour1;f(hur=0)hour1=23;/闹钟时间 小时 减 whi(!KEY3) alar(); i(flg=4) i(KEY=0) /按键去抖以及动作 delay(10);i(KE2=0)iute1+;i(iute=60)nut1; /闹钟分加1 while(!Y2)alarm(); if(KEY=0)/按键去抖以及动作 dely(1);if(KEY3=0) mnute-;if(mnute1=)mint=59; /闹钟分减1 whie(!KEY3) alar();/*蜂鸣器子程序*/void en() bar=1;P3=0xfd;delay(10);bear=;P3
20、=Ff;dlay(10);*整点报警子程序*/vi zhngdin(oi)car i=0;if(econd=0)(minute=) /整点报时 for(i=0;i10;+) TR0=1; bng();disply(ms); /*定时闹钟*/ voi am()uit i;i(hour=hour&seco1=minute1&(ecod=second1&secnsecon1))|(mie=0&seco1)) or(=0;i3;+) beg(); StrTb1=cod1/10; /闹钟秒个位 Sa0=cod%10; /秒十位 SrTb210; /间隔符 StrTb4=minue1/0; /分个位 St
21、Tab3inte1%; /分十位 SrTa0; /间隔符 Strab7=hour110; /时个位 StrTab6=our%10; /时十位 TR=; dispal(SrTab); xanishzu();*中断子程序*/ voi tme() interu 1 /中断程序 out+; H=(655365000)/56; /0。5s重新送初值 TL0=(553650000)256;if(coun=20) /定时器计数,定时50s,cunt满20,秒加 seond+; count=; i(od=60) /秒值等于60,秒清零,分加1 second=;inute+;if(minue=60)/分值等于6
22、0,分清零,时加 iute=0;hor+; f(ur=24)/时值等于24,时清零,返回,全部归零our=0; xianshsuzu(); *数字电子钟主函数*/ oid main()P=0XF;TMO = 0x11; /time为定时器,方式1TH0(65536-500)/256; /预置计数初值,50m TL=(36-50000)56;E; /总中断开T0=1; /允许定时器0中断TR0=1; /开启定时器hile(1) /主循环 if(flag=) TR0=0; isply(ms);/上电初始化就显示ba1004-22 i(P1!=XF) keycn();/按键提前扫描 f(flag0)
23、 if(flag=fa=2) TR0=1;dispaly(StTa); hndia ();/KY1按第二次或第二次定时器开始,电子钟和整点报时正常显示if(flag=3ag=4) TR0=0;alarm(); /按KEY第三或第四次闹钟开始显示,分时的调整f(lg)dispa(SrTa); /按KEY1第五次返回电子钟正常显示if(flag=6) =0; flag=; ispaly(ms); /按KE1第六次定时器关闭,切换标志请零,显示d。1042 课程设计报告课程名称:单片机课程设计报告题目:8位竞赛抢答器的设计学生姓名:所在学院:信息科学与工程学院专业班级:学生学号:指导教师:213 年
24、1月5日课程设计任务书报告题目8位竞赛抢答器的设计完成时间1215-129学生姓名专业班级指导教师职称讲师总体设计要求和技术要点设计一个数字式电容测量仪电路,要求如下:以单片机为核心,设计一个8位竞赛抢答器:同时供8名选手或8个代表队比赛,分别用8个按钮0S7表示。设置一个系统清除和抢答控制开关S,开关由主持人控制.抢答器具有锁存与显示功能。即选手按按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止.当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间为0。5s左右.参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选
25、手的编号和抢答的时间,并保持到主持人将系统清除为止。如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示0工作内容及时间进度安排第17周:周一、周二:选题,明确任务,指导教师对课题进行讲解,资料检索周三:硬件设计,硬件仿真周四、周五:软件设计第8周:周一:综合调试周二、周三、周四:书写课程设计报告周五:答辩评分课程设计成果1与设计内容对应的软件程序2课程设计总结报告摘要抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低.作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期
26、存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器.本设计是以八路抢答为基本理念。考虑到依需设定限时回答的功能,利用AT895单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。用开关做键盘输出,扬声器发生提示。同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在130s设定;可以显示是哪位选手有效抢答,正确按键后有5s的音乐提示(即扬声器发出响声);抢答时间和回答问题时间倒记时显示,满时
27、后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。关键词:852;电路;显示;按键目录一、概述二、方案设计1三、硬件电路设计21、抢答器的电路框图22、单元电路32。、抢答器电路322、时序控制电路3、复位电路3 3、时钟震荡电路34、报警电路3四、软件设计41、系统主程序42、系统程序5五、结论与心得10六、参考文献1一、概述本实验电路由抢答电路、译码显示电路、主持人控制电路、定时电路、报警电路组成.通过复位按键,电路进入准备就绪状态。将抢答时间设定在30S,然后按下开始键开始抢答.,在电路中“0S7”为8路抢答器的个按键,当有键按下,程序锁定信号,从P2口输出抢答者号
28、码的七段码值,送到数码管显示,并封锁按键,保持刚才按键按下时刻的时间,禁止其他人按键的输入,从而实现了抢答的功能。当设定的抢答时间结束,仍然没有抢答键被按下,则产生已经超时的报警信号,结束抢答。当要进行下一次的抢答时,首先按一下复位按键,电路复位.该设计是以MCS51为基础,结合单片机汇编语言知识,设计而成的位竞赛抢答器。在伟福试验箱上实现仿真.主持人按下“开始抢答键既单脉冲键后,喇叭响0。5秒给出提示信号,并立刻进入抢答倒计时(预设30秒抢答时间)此时,数码显示管上显示倒计时时间:有选手抢答,停止计时,八段数码显示抢答时间和选手号;无选手抢答,倒计时0秒后,显示0。然后选手等待主持人按下按钮
29、开始新一轮抢答。注意:()由于设计的局限性,如果在无人抢答期间,30秒还未到,主持人不能按下重新下一轮抢答按钮。(2)由于试验箱上按钮数量有限,故选用开关代替按钮,供位选手抢答使用。鉴于开关与按钮动作过程的差异,所以每次当选手抢答,拨下开关时必须将开关复位。(3)当系统出现错误的时候,停止操作,重新编译开始。二、方案设计方案:该系统采用51系列单片机A9C1作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现.由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改.MS
30、51单片机特点如下: 1可靠性好:单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CU,程序指令和数据都可以写在ROM里,许多信号通道都在同一芯片,因此可靠性高,易扩充。 控制功能强:单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令.三、硬件电路设计1、抢答器的电路框图如图3。1。所示为电路框图。其工作原理为:接通电源后,主持人按下开关即为“开始”状态,宣布“开始”抢答器工作。编号显示器灭灯,定时器显示设定时间。定时器倒计时,扬声器给出5s声响提示。选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示
31、剩余时间。如果再次抢答必须由主持人再次操作开始、停止”状态按键。抢答按扭优先编码电路锁存器译码电路译码显示主持人控制开关控制电路报警电路秒脉冲产生电路定时电路译码电路显示电路图3.1。1电路框图2、单元电路3。2。1、抢答器电路该电路完成两个功能:一是判断出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效。如有再次抢答需由主持人将开关重新置,“清除然后再进行下一次抢答。3.。、时序控制电路时序控制电路是抢答器设计的关键,它要完成以下功能:a主持人将控制开关拨到开始”位置时,扬声器发声,抢答电路和定时电路进人正常抢答工作状态。 。当参赛选手按动抢答键
32、时,扬声器发声,抢答电路和定时电路停止工作。323、复位电路设计外部中断和内部中断并存,单片机硬件复位端,只要持续4个机器周期的高电平即可实现复位,硬件复位后的各状态可知寄存器以及存储器的值都恢复到了初始值,因为本设计中功能中有倒计时时间的记忆功能,所以不能对单片机进行硬件复位,只能用软件复位,软件复位实际上就是当程序执行完之后,将程序通过一条跳转指令让它完成复位。3、时钟震荡电路时钟震荡电路单片机必须在8952驱动下才能工作,在单片机内部有一个时钟震荡电路,只需要外接一个振荡器就能产生一定的时钟信号送到单片机内部的各个单元。4、报警电路报警电路用于报警,当遇到报警信号时,发出警报。8952动
33、喇叭的信号为各种频率的脉冲。因此,最简单的喇叭驱动方式就是利用达林顿晶体管,或者以两个常用的小晶体管连接成达林顿架势。在右图中电阻R为限流电阻,在此利用晶体管的高电流增益,以达到电路快速饱和的目的。不过,如果要由0输出到此电路,还需要连接一个10K的上拉电阻.图3硬件电路图四、软件设计、系统主程序为了能够达到抢答的公平、公正、合理,应该在主持人发布抢答命令之前必须先设定抢答的时间,因而在编开始抢答前的程序得先编写设定时间的程序,当时间设好了之后,主持人发布抢答命令按下按键,程序开始打开定时中断开始倒计时,然后调用键盘扫描子程序,编写键盘扫描程序。当在扫描到有人按下了答题键,马上关闭T0、调用显
34、示程序、封锁键盘。以单片机为核心,设计一个8位竞赛抢答器:同时供名选手或8个代表队比赛,分别用8个按钮SS表示.设置一个系统清除和抢答控制开关,开关由主持人控制。抢答器具有锁存与显示功能。即选手按按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间为0.5s左右。参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止.如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。主程序设置抢答时间和
35、回答问题时间定时器及并行口初始化将时间计数器及启动标志值1开中断采并行口数据为0吗?启动标志=1吗?判断抢答组号将抢答组发光二极管点亮判断哪一组为抢答组将抢答组号送显示抢答时间到了吗?输出响铃信号提示超时NYNYYYN抢答时间到了吗?继续抢答比赛吗?系统返回NYYYNYN图41主程序方框图、系统程序inclere2hdefi uintunsgeintdeine uchar ugned charsbit s=30;bit we=P;hr h=0xe0,0xd,0x,07;uchr e table=xc0,f9,0xa,xb0,099,0x2,0x82,x8,080,x90,0xff;uchr num,c