微机原理与接口技术课程设计报告电子钟_第1页
微机原理与接口技术课程设计报告电子钟_第2页
微机原理与接口技术课程设计报告电子钟_第3页
微机原理与接口技术课程设计报告电子钟_第4页
微机原理与接口技术课程设计报告电子钟_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理和接口技术课程设计报告电子钟实验学院:计算机学院指导教师:马学文实验任务及要求任务:1、掌握综合使用基本输入输出设备、通用接口芯片、专用接口芯片的方法;2、掌握实时处理程序的编制和调试方法。要求设计一个定时显示装置,用实验仪左侧的六个LED数码管显示时间,时间显示格式为24小时制。分秒值为59分55秒时开始报时,每秒钟蜂鸣器鸣叫一声,至V整点报时停止用小键盘控制置,键的定义参见上图键值具体定义如下:G键(启停键)一一程启动;再次按下该键,暂停计时,显示当前时间S键(设置键)二硬件连线按下S键后,为时钟设置时、分、秒初始值键盘的控制、LED显示模块:采用74系列模块控制键盘的行信号Q_0

2、Q_1Q_2Q_3分别和开放的输入信号Q0Q1Q2Q3相连,键盘的列信号P_0P_1P_2和开放的输出信号P0P1、P2相连。74芯片的片选信号CS1接地址译码信号340H,CS2接地址译码信号360HL时间的精确定时:用8254定时器0产生25ms的中断信号;8254的片选CS连地址输出端320H,A0,A1分别连地址总线A2,A3,GATE0连+5V,CLK0连74LS393分频输出的47K输出端,OUT0连接到8259的IRQ0整点报时控制:由8255模块控制;PC0直接和蜂鸣器相连,CS_4连接到实验仪中部的地址输出端CS_4中断处理模块:由8259控制8259的片选CS-1连地址输出

3、300H,INT1连总线输入INTR,8259模块的INT-A连总线的INTA,8259的SP/1连+5V,8259的IRQ0连接到8254的OUT0。三、程序流程图主程序初始化各阶段寄存器及相关变量I初始化8254、8259、8255芯片设置中断向量、开放8259中断屏蔽开放处理器中断仃扫描键盘G键G键其他键Stop置0Stop置0N调用键盘中程时分秒值务程刖、亠判断时间是否不小于59分55秒报时G键?调用启停子程序S键?Y调用设置时间子程序COUNT力口1COUNT=40?YV修改时间,调用ADDONE子程序COUNT清0彷显示时间,调用显示时间子程序结束中断(发EOI命令)恢复现场中断返

4、回中断返回四、实验源代码.486pDATASEGMENTAT0USE16ORG1000HHOURDW?MINDW?SECDW?SLLDB?COUNTDB?DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATAORG1500HBEG:JMPSTARTDB;行列编码TABDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,00H;0F的共阴极七段译码表00H表示不显示任何东西KEYCOD0EEH,0DEH,0BEH,0EDH,0DDH,0BDH,0EBH,0DBH,0BBH,0E7H,0D7H,0B7H值KEYVA

5、LDB0,1,2,3,4,5,6,7,8,9,0AH,0BH;所有键的键面值PORT1EQU340H;数码管段选端口PORT2EQU360H;数码管位选端口,键盘矩阵的行列端口RT:MOVEAX,60000000HMOVCR0,EAXMOVAX,DATAMOVDS,AXMOVHOUR,0203H;小时分钟以及秒的初始化MOVMIN,0509HMOVSEC,0502HLEABX,TABMOVSLL,0;开始暂停标志位置0MOVCOUNT,0;中断次数计数初始值为0;8255初始化,用于产生报时的脉冲MOVEAX,80808080H;控制字MOVDX,20CH;后面的是4个8255的控制端口20C

6、-20F(这个地址由实验台决OUTDX,EAX;初始化8255,A、B、C口均为方式0输出MOVDX,20BHMOVAL,0FFHOUTDX,AL定);8254初始化,用于产生周期为25ms的中断MOVAL,00110110B制MOVDX,32cHOUTDX,ALMOVDX,320HMOVAX,1175OUTDX,ALMOVAL,AHOUTDX,AL;8259初始化CLIMOVDX,300HMOVAL,00010011BOUTDX,ALMOVDX,308HMOVAL,08HOUTDX,ALMOVAL,00000001BOUTDX,ALMOVAL,0FEHOUTDX,ALXORAX,AXMOVE

7、S,AX;计数器0,先低后高,方式三,二进;写往控制口;计数器0写初值:47KHz*25ms:关中断;ICW1;ICW2;IR0中断类型号为08H;ICW4;IR0开屏蔽;装载中断向量;开中断;中断服务程序;比较当前时间是否在59分55秒00分00秒之;蜂鸣器低有效,报时MOVDI,08H*4MOVAX,OFFSETINTSRMOVES:DI,AXMOVAX,SEGINTSRMOVES:DI+2,AXSTIJMP$INTSRPROCCMPMIN,0509H间JLNEXT1CMPSEC,0505HJLNEXT1MOVDX,20BHMOVAL,00HOUTDX,ALJMPNEXT2NEXT1:CM

8、PMIN,0JNENEXT3CMPSEC,0JNENEXT3MOVDX,20BHMOVAL,00HOUTDX,ALJMPNEXT2NEXT3:MOVDX,20BHMOVAL,0FFHOUTDX,ALNEXT2:CMPCOUNT,20JLENEXT4MOVDX,20BHMOVAL,0FFHOUTDX,ALNEXT4:CMPSLL,0;蜂鸣器低有效,报时;用8255产生0.5ms的蜂鸣JZLOBCALLTSTARTLOB:CALLKEYCHECKCMPAL,0AHJNZNEXT5CALLTSTARTJMPNEXT6NEXT5:CMPAL,0BHJNZNEXT6CALLSETTIMENEXT6:IN

9、CCOUNTCMPCOUNT,40JBNEXT7CALLADDONEMOVCOUNT,0NEXT7:CALLSHOWMOVAL,20HMOVDX,300HOUTDX,ALIRETINTSRENDPTSTARTPROC;检测有无键按下;启停键按下,调用启停程序;设置键按下,调用设置时间程序;当COUNT直为40时,加一秒,之后置0;25ms*40=1s;显示时间;发EOI命令,结束中断;控制时间暂停和开始。CMPSLL,0JNZR1DECSLLR1:CALLKEYCHECKCMPAL,0AHJZR2CALLSHOWJMPR1R2:INCSLLRETTSTARTENDPADDONEPROCMOVA

10、X,SECCMPAL,9JEN1;加1秒子程序;当前秒个位为9,加1后变0,十位加1INCALN1:N2:N3:MOVSEC,AXJMPN6INCAHMOVAL,0CMPAH,6JEN2MOVSEC,AXJMPN6MOVAX,0MOVSEC,AXMOVAX,MINCMPAL,9JEN3INCALMOVJMPMIN,AXN6AHAL,0CMPAH,6JEN4;十位加1后为6,则秒变为00,分钟个位加1;当前分钟个位为9,加1后变0,十位加1INCMOV;十位加1后为6,则分钟变为00,小时个位加1MOVMIN,AXJMPN6N4:MOVMOVMOVINCAX,0MIN,AXAX,HOURALN5

11、:CMPJEMOVJMPMOVMOVAX,0204HN5HOUR,AXN6AX,0HOUR,AX;小时加1后和24比,相等,则变为0N6:RETADDONEENDP;设置时间子程序SETTIMEPROCLEABX,TABMOVHOUR,0MOVMIN,0MOVSEC,0NOPNOPL1:CALLKEYCHECK;调用KEYCHECK,无键按下时,AL中值为0CHCALLDELAYCMPAL,0CHJNZL2JMPL1L2:CMPAL,02HJGL1;设置小时十位时,将其他各位数码管灭掉及对应的七段译码表0CHMOVAH,ALMOVBYTEPTRHOUR+1,ALMOVBYTEPTRHOUR,0

12、CHMOVMIN,0C0CHMOVSEC,0C0CHL3:CALLSHOWCALLKEYCHECK;设置小时的个位CALLDELAYCMPAL,0CHJZL3MOVAH,BYTEPTRHOUR+1L4:CMPAX,0204HJGEL1MOVHOUR,AXL5:CALLSHOWCALLKEYCHECK;设置分钟的十位CALLDELAYCMPAL,0CHJZL5L6:CMPAL,06HJGEL1MOVAH,ALMOVBYTEPTRMIN+1,ALL7:CALLSHOWCALLKEYCHECK;设置分钟的个位CALLDELAYCMPAL,0CHJZL7MOVAH,BYTEPTRMIN+1L8:CMP

13、AX,0509HJGL1MOVMIN,AXL9:CALLSHOWCALLKEYCHECK;设置秒的十位CALLDELAYCMPAL,0CHJZL9L10:CMPAL,06HJGEL1MOVAH,ALMOVBYTEPTRSEC+1,ALL11:CALLSHOWCALLKEYCHECK;设置秒的个位CALLDELAYCMPAL,0CHJZL11MOVAH,BYTEPTRSEC+1L12:CMPAX,0509HJGL1MOVSEC,AXL13:CALLSHOWCALLKEYCHECK;再次按键,CALLDELAYCMPAL,0CHJZL13SETTIMERETENDPKEYCHECKPROC启动计时

14、;判断有无键按下子程序PUSHBXCALLCLEARMOVDX,PORT2INAL,DXANDAL,0FHCMPAL,0FHJZEXIT;有按键按下,延时消抖NOPNOP;再次确认是否有键按下INAL,DXANDAL,0FHCMPAL,0FHEXITJZ;开始对每一列进行逐行扫描MOVCX,3BL,0FEHNEXT:MOVAL,BLMOVMOVDX,PORT2OUTDX,ALNOPNOPINAL,DXANDAL,0FHCMPAL,0FHJNZKEYROLBL,1LOOPNEXTJMPEXITKEY:SHLBL,4OR息AL,BL;形成一个字节的键码信息存入AL,高4位为列信息低4位为行信LEA

15、SI,KEYCODLEADI,KEYVALMOVCX,12NEXT11:CMPAL,SIJZFINDINCSIINCDILOOPNEXT11JMPEXITFIND:MOVAL,DI;AL中内容为所按键的键面值PUSHNOPAXNOPWAIT1:INAL,DX;判断按键是否已释放,若无则等待ANDAL,0FHCMPAL,0FHJNZWAIT1POPAXJMPEXIT2EXIT:MOVEXIT2:NOPAL,0CHPOPRETBXKEYCHECKENDPSHOWPROC;显示时间MOVAX,HOURXLATMOVDX,PORT1;段选输出数据OUTDX,ALMOVDX,PORT2;位选输出小时的个

16、位MOVAL,0C2HOUTDX,ALCALLDELAYCALLCLEARMOVAL,AHXLATMOVDX,PORT1OUTDX,ALMOVDX,PORT2MOVAL,0C1HOUTDX,ALCALLDELAYCALLCLEARMOVAX,MINXLATMOVDX,PORT1OUTDX,ALMOVDX,PORT2MOVAL,0C8HOUTDX,ALCALLDELAYCALLCLEARMOVAL,AHXLATMOVDX,PORT1OUTDX,ALMOVDX,PORT2MOVAL,0C4HOUTDX,ALCALLDELAYCALLCLEARMOVAX,SECXLATMOVDX,PORT1OUTD

17、X,ALMOVDX,PORT2MOVAL,0E0hOUTDX,ALCALLDELAYCALLCLEARMOVAL,AHXLATMOVDX,PORT1OUTDX,AL;段选输出数据;位选输出小时的十位;段选输出数据;位选输出分钟的个位;段选输出数据;位选输出分钟的十位;段选输出数据;位选输出秒的个位;段选输出数据MOVDX,PORT2MOVAL,0D0HOUTDX,ALCALLDELAYCALLCLEARRETSHOWENDPDELAYPROCPUSHCXMOVCX,1000LOOP$POPCXRETDELAYENDPCLEARPROCMOVAL,00HMOVDX,PORT1OUTDX,ALMOVDX,PORT2OUTDX,ALNOPNOPRETCLE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论