




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、微机原理与接口技术课程设计报告电子钟实验学院: 计算机学院指导教师:马学文实验任务及要求任务:1、掌握综合使用基本输入输出设备、通用接口芯片、专用接 口芯片的方法;2、掌握实时处理程序的编制和调试方法。要求设计一个定时显示装置,用实验仪左侧的六个LED数码管显 示时间,时间显示格式为 24小时制。分秒值为59分55秒 时开始报时,每秒钟蜂鸣器鸣叫一声,至廛点报时停止。 矚慫润厲钐瘗睞枥庑赖。0123456789GS用小键盘控制时钟的启停和时钟的设置,键的定义参见上图键值具体定义如下:G键(启停键) 程序启动后,按下该键时钟启动;再次按下该键,暂停计时,显示当前时间。S键(设置键) 按下S键后,
2、为时钟设置时、分、秒初始值。二硬件连线键盘的控制、LED显示模块:采用74系列模块控制键盘的行信号Q 0 Q 1 Q 2 Q 3分别与开放的输入信号 Q0Q1 Q2 Q3相连,键盘的列信号P_0 P_1 P_2和开放的输出信号P0 P1、P2相连。74芯片的片选信号CS1接地址译码信号340H, CS2 接地址译码信号360H。 聞創沟燴鐺險爱氇谴净。时间的精确定时:用8254定时器0产生25ms的中断信号;8254的片选CS连地址输出端320H,A0,A1分别连地址总线A2,A3 ,GATEO 连 +5V ,CLKO 连 74LS393 分频输出的 47K 输出端,OUTO 连接至U 825
3、9的IRQO残骛楼諍锩瀨濟溆塹籟。整点报时控制:由8255模块控制;PC0直接与蜂鸣器相连,CS_4连接到实验仪中部的地址输出端CS_4中断处理模块:由8259控制8259的片选CS-1连地址输出300H, INT1连总线输入INTR ,8259 模块的INT-A连总线的INTA , 8259的SP/1连+5V, 8259的IRQ0连 接至U 8254的 OUTO。酽锕极額閉镇桧猪訣锥。三、程序流程图主程序初始化各阶段寄存器及相关变量I初始化8254、8259、8255芯片I设置中断向量、开放8259中断屏蔽开放处理器中断扫描键盘Stop 值取 反Stop 置 OFF调用键盘扫描 程序设置当前
4、 时分秒值Stop置为0中断服务程序其他键N保护现场COUNT 力口 1NCOUNT=40?Y修改时间,调用ADDONE子程序COUNT 清 0显示时间,调用显示时间子程序结束中断(发EOI命令)恢复现场中断返回四、实验源代码.486pDATASEGMENT AT 0 USE16ORG 1000HHOURDW ?MIN DW ?SEC DW ?SLL DB ?COUNT DB ?DATA ENDSCODE SEGMENT USE16ASSUME CS:CODE,DS:DATAORG 1500HBEG:JMP STARTTAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
5、,7FH,6FH,77H,7CH,00H ;0F 的共阴极七段译码表 00H 表示不显示任何东西 彈贸摄尔霁毙攬砖卤庑。KEYCOD DB 0EEH,0DEH,0BEH,0EDH,0DDH,0BDH,0EBH,0DBH,0BBH,0E7H,0D7H,0B7H ;行列编 码 值謀荞抟箧飆鐸怼类蒋薔。KEYV AL DB 0,1,2,3,4,5,6,7,8,9,0AH,0BH ; 所有键的键面值PORT1 EQU340H ;数码管段选端口PORT2 EQU360H ;数码管位选端口,键盘矩阵的行列端口START: MOV EAX,60000000HMOVCR0,EAXMOVAX,DATAMOVDS
6、,AXMOVHOUR,0203H;小时分钟以及秒的初始化MOVMIN,0509HMOVSEC,0502HLEABX,TABMOVSLL,0; 开始暂停标志位置 0MOVCOUNT ,0;中断次数计数初始值为 0;8255 初始化 ,用于产生报时的脉冲MOVMOVEAX,80808080H; 控制字DX,20CH;后面的是4个 8255的控制端口 20C-20F (这个地址由实验台决定)厦礴恳蹒骈時盡继價骚。OUTDX,EAX;初始化8255,A、B、C 口均为方式 0 输出MOVDX,20BHMOVAL,0FFHOUTDX,AL;8254 初始化 ,用于产生周期为25ms 的中断MOVAL,0
7、0110110B; 计数器 0,先低后高,方式三,二进制 茕桢广鳓鯡选块网羈泪MOVDX,32cH;写往控制口OUTDX,ALMOVDX,320H;计数器 0 写初值: 47KHz*25ms 鹅娅尽損鹌惨歷茏鴛賴。MOVAX,1175OUTDX,ALMOVAL,AHOUTDX,AL;8259 初始化CLIMOVDX,300HMOVAL,00010011BOUTDX,ALMOVDX,308HMOVAL,08HOUT DX,AL:关中断;ICW1;ICW2;IR0 中断类型号为 08HMOV AL,00000001BOUT DX,AL;ICW4MOV AL,0FEHOUT DX,ALXOR AX,
8、AXMOV ES,AXMOV DI,08H*4MOV AX,OFFSET INTSRMOV ES:DI,AXMOV AX,SEG INTSRMOV ES:DI+2,AXSTIJMP $;IR0 开屏蔽;装载中断向量;开中断INTSR PROCCMP MIN,0509H 间 籟丛妈羥为贍偾蛏练淨。JL NEXT1CMP SEC,0505H JL NEXT1MOV DX,20BHMOV AL,00HOUT DX,ALJMP NEXT2NEXT1: CMP MIN,0JNE NEXT3CMP SEC,0JNE NEXT3;中断服务程序;比较当前时间是否在 59 分 55 秒 00 分 00 秒之;蜂
9、鸣器低有效,报时MOVDX,20BHMOVAL,00H;蜂鸣器低有效,报时OUTDX,ALJMPNEXT2NEXT3:MOVDX,20BHMOVAL,0FFHOUTDX,ALNEXT2:CMPCOUNT,20;用8255产生0.5ms的蜂鸣JLENEXT4MOVDX,20BHMOVAL,0FFHOUTDX,ALNEXT4:CMP SLL,0JZ LOBCALL TSTARTLOB:CALLKEYCHECK; 检测有无键按下FCMPAL,0AH; 启停键按下,调用启停程序JNZNEXT5CALLTSTARTJMPNEXT6NEXT5:CMPAL,0BH; 设置键按下,调用设置时间程序JNZNEX
10、T6CALLSETTIMENEXT6:INCCOUNT;当 COUNT直为 40 时,加一秒,之后置0 預頌圣鉉儐歲龈讶骅籴。CMPCOUNT,40;25ms*40=1sJBNEXT7CALLADDONEMOVCOUNT,0NEXT7:CALLSHOW; 显示时间MOVAL,20H; 发 EOI 命令,结束中断MOVDX,300HOUTDX,ALIRETINTSRENDPTSTART PROC ;控制时间暂停和开始。CMP SLL,0JNZ R1DEC SLLR1:CALL KEYCHECKCMP AL,0AHJZ R2CALL SHOWJMP R1R2 :INC SLLRETTSTART E
11、NDPADDONE PROCMOV AX,SEC CMP AL,9 JE N1 INC ALMOV SEC,AX JMP N6N1: INC AHMOV AL,0 CMP AH,6 JE N2MOV SEC,AX JMP N6N2:MOV AX,0MOV SEC,AXMOV AX,MIN CMP AL,9 JE N3 INC ALMOV MIN,AX JMP N6N3: INC AHMOV AL,0 CMP AH,6 JE N4MOV MIN,AX JMP N6N4: MOV AX,0 MOV MIN,AX MOV AX,HOUR INC ALCMP AX,0204H JE N5MOV HOU
12、R,AX JMP N6N5: MOV AX,0;加 1 秒子程序; 当前秒个位为 9,加 1 后变 0,十位加 1;十位加 1 后为 6,则秒变为 00,分钟个位加 1; 当前分钟个位为 9 ,加 1 后变 0,十位加 1;十位加 1 后为 6,则分钟变为 00,小时个位加 1; 小时加 1 后与 24 比,相等,则变为 0MOV HOUR,AXN6: RETADDONE ENDPSETTIMEPROCLEABX,TABMOVHOUR,0MOVMIN,0MOVSEC,0NOPNOPL1:CALLKEYCHECK釤呛俨匀谔鱉调硯錦。;设置时间子程序; 调用 KEYCHECK ,无键按下时, AL
13、 中值为 0CH 渗CALL DELAYCMP AL,0CHJNZ L2JMP L1L2:CMPJGAL,02HL1 ; 设置小时十位时,将其他各位数码管灭掉及对应的七段译码表0CHMOVAH,ALMOVBYTE PTRHOUR+1,ALMOVBYTE PTRHOUR,0CHMOVMIN,0C0CHMOVSEC,0C0CHL3:CALL SHOWCALLKEYCHECK ; 设置小时的个位CALLDELAYCMPAL,0CHJZL3MOVAH,BYTE PTRHOUR+1L4:CMPAX,0204HJGEL1MOVHOUR,AXL5:CALLSHOWCALLKEYCHECK ; 设置分钟的十位
14、CALLDELAYCMPAL,0CHJZL5L6:CMPAL,06HJGEL1MOVAH,ALMOVBYTE PTRMIN+1,ALL7:CALLSHOWCALLKEYCHECK;设置分钟的个位CALLDELAYCMPAL,0CHJZL7MOVAH,BYTE PTRMIN+1L8:CMPAX,0509HJGL1MOVMIN,AXL9:CALLSHOWCALLKEYCHECK;设置秒的十位CALLDELAYCMPAL,0CHJZL9L10:CMPAL,06HJGEL1MOVAH,ALMOVBYTE PTRSEC+1,ALL11:CALLSHOWCALLKEYCHECK;设置秒的个位CALLDEL
15、AYCMPAL,0CHJZL11MOVAH,BYTE PTRSEC+1L12:CMPAX,0509HJGL1MOVSEC,AXL13:CALLSHOWCALLKEYCHECK;再次按键,启动计时CALLDELAYCMPAL,0CHJZL13SETTIMERETENDPKEYCHECK PROC; 判断有无键按下子程序PUSH BXCALL CLEARMOV D X,PORT2IN AL,DXAND AL,0FHCMP AL,0FHJZ EXIT;有按键按下 ,延时消抖NOPNOP;再次确认是否有键按下 IN AL,DX AND AL,0FH CMP AL,0FH JZ EXIT;开始对每一列进
16、行逐行扫描MOV CX,3 MOV BL,0FEHNEXT: MOV AL,BL MOV DX,PORT2 OUT DX,AL NOP NOPIN AL,DXANDCMPAL,0FHAL,0FHJNZKEYROL BL,1LOOPJMPKEY: SHLOR 息NEXTEXITBL,4AL,BL ;形成一个字节的键码信息存入AL, 高 4 位为列信息低 4 位为行信LEALEAMOVSI,KEYCODDI,KEYV ALCX,12NEXT11: CMP JZ INC INCAL,SIFINDSIDILOOP NEXT11JMPEXITFIND: MOVPUSHNOPNOPWAIT1: IN AN
17、D CMP JNZ POP JMPEXIT:MOV EXIT2:NOPAL,DI ;AL 中内容为所按键的键面值 AXAL,DX;判断按键是否已释放,若无则等待AL,0FHAL,0FHWAIT1AXEXIT2AL,0CHPOP BXRETKEYCHECK ENDPSHOW PROC;显示时间MOVAX,HOURXLATMOVDX,PORT1;段选输出数据OUTDX,ALMOVDX,PORT2;位选输出小时的个位MOV AL,0C2HOUT DX,ALCALL DELAY CALL CLEARMOVAL,AHXLATMOVDX,PORT1;段选输出数据OUTDX,ALMOVDX,PORT2; 位
18、选输出小时的十位MOVAL,0C1HOUTDX,ALCALL DELAYCALLCLEARMOVAX,MINXLATMOVDX,PORT1;段选输出数据OUTDX,ALMOVDX,PORT2;位选输出分钟的个位MOV AL,0C8HOUT DX,ALCALL DELAYCALLCLEARMOVAL,AHXLATMOVDX,PORT1;段选输出数据OUTDX,ALMOVDX,PORT2;位选输出分钟的十位MOVAL,0C4HOUTDX,ALCALL DELAYCALL CLEARMOVAX,SECXLATMOVDX,PORT1;段选输出数据OUTDX,ALMOVDX,PORT2;位选输出秒的个位MOVAL,0E0hOUT DX,ALCALL DELAYCALLCLEARMOVAL,AHXLATMOVDX,PORT1;段选输出数据OUTDX,ALMOVDX,PORT2;位选输出秒的十位MOVAL,0D0HOUTDX,ALCALL DELAYCALL CLEARRETSHOW ENDP;延时子程序DELAY PROCPUSH CXMOV CX,1000LOOP $POP CX RETDELAYENDPCLEARPROCMOVAL,00HMOVDX,PORT1OUTDX,ALMOVDX,PORT2OUTDX,ALNO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度建筑工程款拨付与节能减排协议
- 2025年度个人创业贷款中介代理服务合同(含政策咨询)
- 旅游景区设施居间销售合同
- 2025年度房屋赠与及智能家居系统安装合同
- 2025年度房屋代购与智能家居系统集成协议
- 2025年度拆迁安置房抵押贷款服务合同
- 2025年度电动自行车贷款抵押服务协议
- 2025年个人投资入股文化创意产业合作协议
- 2025年度土地个人承包经营权委托管理合同
- 2025年度企业退休项目经理再聘用服务协议
- 分布式储能系统的成本效益评估
- 二次函数(最全的中考二次函数知识点总结)
- 建筑卫生陶瓷生产英文资料
- 网络意识形态安全
- 汽油安全技术说明书(MSDS)
- 人工智能的伦理问题及其治理研究
- 眼球摘除患者的护理病例讨论
- ABB工业机器人编程-第五章
- 《鲁滨孙漂流记》讲解
- 《现代食品检测技术》全套教学课件
- payne效应的概念及其测试方法和应用
评论
0/150
提交评论