版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《微机系统与汇编语言》课程设计题目:实时时钟的设计与实现姓名:班级:学号:2013年12月25日内容要求:设计内容设计并实现实时时钟并通过LED显示时、分、秒。设计要求①、通过8254产生1s信号中断信号。②、每秒钟产生中断,在中断子程序中修改时间。③、在LED上显示时、分、秒。④、通过键盘修改时钟。三.总体设计1.设计思路:初始化8259A,将中断子程序入口地址写入中断向量表.使用8254的计数器0,方式0计数,输入CLK0=18.432KHz,计数初值等于48H.端口OUT0连接到SIR1(即从8259A的IR1).一秒钟后,输出高电平,请求中断,中断响应后,中断子程序将内存中存储的时间的秒+1,同时控制分和时进位.通过转换数据格式,将时间打入内存中6个LED灯对应的位置,同时8254再次开始计数.中断结束.使用8255A控制LED灯的显示,循环读取内存中的6位LED灯存储信息,显示、清屏、扫描键盘.通过键盘调节时间,读取按键码,调整数据格式,修改内存中的时间,在下一秒刷新时间时,显示修改后的时间.注:(第一次用8259A的主片的MIR7接口,第二次使用从片的SIR1接口.)(1)如果使用8259A的主片的MIR7接口请求中断,向中断向量表的003CH和003EH分别写入中断服务子程序的偏移地址和段基址,初始化主片的ICW2=08H,其中,中断类型码的高五位是00001B(计算方法是3CH÷4),中断服务子程序结束时,OUT20H,20H;(结束中断).(2)如果使用8259A的从片的SIR1接口请求中断,向中断向量表的00C4H和00C6H分别写入中断服务子程序的偏移地址和段基址,初始化主片的方法不变,初始化从片的ICW2=30H,中断类型码高五位是00110B(计算方法是C4H÷4),中断服务子程序结束时,执行OUT0A0H,20H和OUT20H,20H;(结束中断).硬件连接图图一图二图三将中断服务子程序入口地址写入中断向量表是调节按键将中断服务子程序入口地址写入中断向量表是调节按键是调节按键还是数字按键?标志位指向高位(标志输入时间的高位)如果是调时按键,调节时间指针指向时数据位如果是调分按键,调节时间指针指向分数据位如果是调秒按键,调节时间指针指向秒数据位如果是复位按键,内存时间时钟数据全部清零是低位是高位是数字键YESNO初始化主片8259A和从片8259A初始化内存时钟数据初始化8255A,写入控制字初始化8254,写入计数器初值,并开始计数调用显示子程序清屏扫描是否有键盘输入控制8255A读取键盘字读取标志,判断高位还是低位?将输入的2次按键数组合成一个时间位,填入时间指针指向的时间数据位中断服务子程序,每隔一秒钟请求中断,CPU响应中断之后,中断子程序将内存中存储的时间的秒+1,同时控制分和时进位.通过转换数据格式,将时间打入内存中6个LED灯对应的位置,同时8254再次开始计数.中断结束.程序代码代码如下:MY8255_AEQU0600HMY8255_BEQU0602HMY8255_CEQU0604HMY8255_CONEQU0606HA8254EQU06C0H;计数器0的接口地址CON8254EQU06C6H;控制口SSTACKSEGMENTSTACKDW64DUP(?)SSTACKENDSDATASEGMENTTEMPWORDDW0000H;放置当前要调的是哪一位TEMPTDB01H,00H,00H;临时数据TIMEDB00H,00H,00H;时分秒DTABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;定义16进制数字DB7FH,6FH,77H,7CH,39H,5EH,79H,71HDATAENDSCODEEGMENTASSUMECS:CODE,DS:DATASTART:PUSHDS PUSHSIMOVAX,0000HMOVDS,AXMOVAX,OFFSETIRQ7;取中断入口地址MOVSI,00C4H;中断矢量地址MOV[SI],AX;填IRQ7的偏移矢量MOVAX,CS;段地址MOVSI,00C6HMOV[SI],AX;填IRQ7的段地址矢量CLI POPSIPOPDS;初始化主片8259 MOVAL,11HOUT20H,AL;ICW1MOVAL,08HOUT21H,AL;ICW2MOVAL,04H;表明,IR2接口上接从片OUT21H,AL;ICW3MOVAL,01HOUT21H,AL;ICW4;从片MOVAL,11HOUT0A0H,AL;ICW1MOVAL,30HOUT0A1H,AL;ICW2MOVAL,02H;02H=00000010BOUT0A1H,AL;ICW3(中断类型码是010,中断源是IR2)MOVAL,01HOUT0A1H,AL;ICW4=10100001BMOVAL,0FDHOUT0A1H,AL;OCW1=11111101B(=0FDH)只有IR1不被屏蔽MOVAL,6BH;=01101011BOUT21H,AL;主8259OCW1(IR7,IR4,IR2不被屏蔽)STI ;以下内容为时钟显示MOVAX,DATAMOVDS,AX MOVSI,3000HMOVAL,00HMOV[SI],AL;清显示缓冲MOV[SI+1],ALMOV[SI+2],ALMOV[SI+3],ALMOV[SI+4],AL;第二个LEDMOV[SI+5],AL;第一个LED LEADI,TIMEMOVDX,MY8255_CON;写8255控制字MOVAL,81H;10000001BA口,B口方式0,C口下半部输入,其它口做输出OUTDX,AL ;计数器PUSHDXPUSHAXMOVDX,CON8254MOVAL,00110000B;计数器0,16位计数,方式0,2进制OUTDX,ALMOVDX,A8254MOVAL,00H;计数器初值是18432(十进制)OUTDX,AL;写低8位MOVAL,48H;写高8位OUTDX,ALSTI POPAX POPDX BEGIN:CALLDIS;调用显示子程序CALLCLEAR;清屏CALLCCSCAN;扫描JNZINK1JMPBEGININK1:ALLDISCALLDALLYCALLDALLYCALLCLEARCALLCCSCANJNZINK2;有键按下,转到INK2JMPBEGIN;确定按下键的位置INK2:MOVCH,0FEHMOVCL,00HCOLUM:MOVAL,CHMOVDX,MY8255_AOUTDX,ALMOVDX,MY8255_CINAL,DX;IN为输入字节或字L1:TESTAL,01H;isL1?JNZL2MOVAL,00H;L1JMPKCODEL2:TESTAL,02H;isL2?JNZL3MOVAL,04H;L2JMPKCODEL3:TESTAL,04H;isL3?JNZL4MOVAL,08H;L3JMPKCODEL4:TESTAL,08H;isL4?JNZNEXTMOVAL,00H;==L4 ADDAL,CL CALLSETIME;用来确定是调时,还是调分,还是调秒,还是清零 JMPCONTINUEKCODE:ADDAL,CLCALLPUTBUFCONTINUE:PUSHAXKON:CALLDIS;调用显示子程序CALLCLEAR;清屏CALLCCSCAN;扫描JNZKONPOPAXNEXT:INCCL;次数加1MOVAL,CHTESTAL,08HJZKERRROLAL,1;左移MOVCH,ALJMPCOLUMKERR:JMPBEGINCCSCAN:MOVAL,00H;键盘扫描子程序MOVDX,MY8255_AOUTDX,ALMOVDX,MY8255_CINAL,DXNOTALANDAL,0FHRETCLEAR:MOVDX,MY8255_B;清屏子程序MOVAL,00HOUTDX,ALRETDIS:PUSHAX;显示子程序MOVSI,3000HMOVDL,0DFHMOVAL,DLAGAIN:PUSHDXMOVDX,MY8255_AOUTDX,ALMOVAL,[SI]MOVBX,OFFSETDTABLEANDAX,00FFHADDBX,AXMOVAL,[BX]MOVDX,MY8255_BOUTDX,ALCALLDALLYINCSIPOPDXMOVAL,DLTESTAL,01HJZOUT1RORAL,1MOVDL,ALJMPAGAINOUT1:POPAXRETDALLY:PUSHCX;延时子程序MOVCX,0006HT1:MOVAX,009FHT2:DECAXJNZT2LOOPT1POPCXRETPUTBUF:PUSHSI PUSHDX LEASI,TEMPT;TEMPT有3个字节,第一个字节记录输入数据是十位还是个位,;第二和第三个数据放置十位和个位的值 MOVAH,[SI] CMPAH,01H JZPUT1 JMPPUT2PUT1: MOV[SI+1],ALMOVAH,02HMOV[SI],AH JMPGOBACKPUT2:MOVAH,01HMOV[SI],AHMOV[SI+2],ALMOVAL,[SI+1] MOVDL,0AH;=10 MULDL;AX=DL*AL MOVAH,[SI+2] ADDAL,AH;AL当前放的是两次输入的正确的时间,2位 LEASI,TEMPWORD MOVSI,[SI] MOV[SI],ALJMPGOBACKGOBACK:POPDXPOPSIRETSETIME:;找出最后一行阵列按的是第几个,确定调整时分秒PUSHAX PUSHSI LEASI,TEMPT MOVAH,01H MOV[SI],AH LEASI,TEMPWORD LEADI,TIMECMPAL,00H JNZL41 MOV[SI],DI CALLSETIMENDL41: CMPAL,01H JNZL42 INCDI MOV[SI],DI CALLSETIMENDL42: CMPAL,02H JNZL43 INCDI INCDI MOV[SI],DI CALLSETIMENDL43:MOVSI,DI;时钟全部置0MOVAH,00HMOV[SI],AH MOV[SI+1],AH MOV[SI+2],AHSETIMEND:POPSIPOPAXRETIRQ7:;中断服务子程序,自动修改时间STIPUSHSIPUSHAXPUSHDXMOVDX,CON8254MOVAL,00110000B;计数器0,16位计数,方式0,2进制OUTDX,ALMOVDX,A8254MOVAL,00H;计数器初值是18432(十进制)OUTDX,AL;写低8位MOVAL,48H;写高8位OUTDX,ALMOVDL,00111100B;=60MOVDH,00011000B;=24LEASI,TIMEMOVAX,0000H;清空MOVAL,[SI+2];取得时间,秒ADDAL,01H;秒+1DIVDL;取模60MOV[SI+2],AH;AH=余数(模),装回去MOVAH,[SI+1];取时间,分ADDAL,AH;AL=秒位的进位(=1或0),分+1或0MOVAH,00HDIVDL;取模60MOV[SI+1],AH;AH=模(余数),装回去MOVAH,[SI];小时ADD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 办公场地租赁押金管理细则协议2025年
- 2024年中考道德与法治(上海)第二次模拟考试(含答案)
- 2025年海南省公需课学习-重点排污单位自动监测数据标记规则第344期
- 冰点文库捞铁牛课件
- 2025年中考沈阳历史试卷及答案
- 2025年共同条例考核试卷及答案
- 景区轮船维修合同范本
- 2025年高热度智商测试题及答案
- 2025年行政管理常识题库及答案
- 矿山承包协议合同范本
- 病理生理学(南华大学)知到智慧树章节答案
- 《特种设备重大事故隐患判定标准》培训
- 森林资源动态监测
- 气血疏通中级班教材
- 云南中烟公司招聘笔试真题
- 某厂降压变电所电气部分设计
- 售后服务技巧提升售后服务的满意度
- 汽车销售实务(第3版)课件 学习情境七 车辆交付
- 烟花爆竹行业事故应急救援处置培训
- 外贸企业出口退税计算及账务处理会计分录
- 辽宁省《公共机构能源资源消费统计制度》实施方案
评论
0/150
提交评论