实验三:中断实验与编程_第1页
实验三:中断实验与编程_第2页
实验三:中断实验与编程_第3页
实验三:中断实验与编程_第4页
实验三:中断实验与编程_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、实验三:中断实验与编程一、实验目的1.掌握PC机中断系统的基本原理2.学会编写中断服务程序3.掌握定时/计数器芯片8253的基本工作原理和使用方法二、实验任务及内容编一程序,在显示器上显示时、分、秒。借用计数器8253的Timer0作为中断源,通过8259A向CPU发中断,每10ms产生一次中断。在中断服务程序中管理刷新时、分、秒。输入文件名(如CLK)后清屏后显示:Current time is: xx:xx:xx (时分秒键盘输入)。1. 打回车,时、分、秒开始计时。时钟不停的刷新。2. 当键入CTRL+C时,停止计时,返回系统,且系统正常运行不死机。 8253的初始化程序段可借用口地址为

2、40H、41H、42H、43H控制字为36H=00110110B时间常数TC=11932:1.1932MHz/11932=100Hz输出方波频率为100Hz,其周期为1000/100=10ms三、程序代码DATA SEGMENT PARA PUBLIC 'DATA'COUNT100 DB 100MESG1 DB 'Current time is:$'MESG2 DB 'The time is wrong, please input agian.',10,13,'$'GETTIME DB 9,'?'TENHOUR D

3、B 0HOUR DB 0,':'TENMIN DB 0MINUTE DB 0 ,':'TENSEC DB 0SECOND DB 0OLD_OFF DW 0OLD_SEG DW 0DATA ENDSSTACK SEGMENT PARA STACK 'STACK' DB 256 DUP(0)STACK ENDSCODE SEGMENT PARA PUBLIC 'CODE' ASSUME CS:CODEASSUME DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESG1 MOV AL,

4、09HINT 21HMOV DX,OFFSET GETTIME MOV AH,0AHINT 21HMOV HOUR+1,':' MOV MINUTE+1,':'检测时间输入是否符合要求CMP SECOND,'0'JC ERROCMP SECOND,'9'JNC ERROCMP TENSEC,'0'JC ERROCMP TENSEC,'6'JNC ERROCMP MINUTE,'0'JC ERROCMP MINUTE,'9'JNC ERROCMP TENMIN,'

5、;0'JC ERROCMP TENMIN,'6'JNC ERRO;显示'Current time is:' ;接受屏幕输入时间 ;时分秒之间的分隔符为':'CMP HOUR,'0'JC ERROCMP HOUR,'9'JNC ERROCMP TENHOUR,'0'JC ERROCMP TENHOUR,'2'JNC ERROJMP NEXT1ERRO: MOV DX,OFFSET MESG2 ;输入有错,显示'The time is wrong, please inpu

6、t agian.' MOV AH,09HINT 21HJMP START;设置中断向量表NEXT1: CLIMOV AL, 08H ;取08号中断向量的服务程序地址MOV AH, 35HINT 21HMOV BX,ESMOV OLD_SEG, BXMOV AL,08HMOV AH,25HMOV DX,SEG TIMERPUSH DSMOV DS,DXMOV DX, OFFSET TIMERINT 21HPOP DS;设置8253MOV AL,36HOUT 43H,ALMOV BX,11932MOV AL,blOUT 40H,ALMOV AL,bHOUT 40H,AL;设置8259AMO

7、V DX,20H ;ICW1地址MOV AL,11H ;写ICW1,沿触发方式、级联,要ICW4OUT DX,AL ;设置08号中断向量的服务程序地址 ;ES:BX = 入口地址 MOV OLD_OFF, BX ;保存原来的终端服务程序地址ADD DX,1 ;指向ICW2、ICW3、ICW4地址MOV AL,8 ;ICW2,中断向量号为08HOUT DX, ALMOV AL, 4 ;ICW3,IR2接有从片PICOUT DX, ALMOV AL, 1 ;ICW4,正常屏蔽方式、全嵌套、正常EOI OUT DX,ALMOV DX, 0A0H ;从片ICW1地址MOV AL, 11H ;写ICW1

8、,沿触发方式、级联,要ICW4 OUT DX, ALADD DX, 1 ;指向ICW2、ICW3、ICW4地址 MOV AL, 70H ;ICW2,中断向量号为70HOUT DX, ALMOV AL, 2 ;ICW3,从片PIC识别号=2OUT DX, ALMOV AL, 1 ;ICW4,正常屏蔽方式、正常EOI OUT DX,ALSTI;显示时间信息FOREVER: MOV DX,OFFSET MESG1 ;显示'Current time is:'MOV AH,09HINT 21HMOV BX,OFFSET TENHOURMOV CX,8DISD: MOV AL,BX ;显示

9、具体时间INC BXLOOP DISDMOV AL,0DHCALL DISPCHARNEXT: CMP AL,SECOND ;检测时间是否改变JE NEXTJMP FOREVER;中断服务程序 TIMERTIMER PROC FARPUSH AXDEC COUNT100 ;每100次中断为1秒JNZ TIMERX MOV AL,SECOND CALL DISPCHARMOV COUNT100,100INC SECOND CMP SECOND,'9' JLE TIMERXMOV SECOND,'0'INC TENSEC CMP TENSEC,'5'

10、 JLE TIMERXMOV TENSEC,'0'INC MINUTE CMP MINUTE,'9' JLE TIMERXMOV MINUTE,'0'INC TENMIN CMP TENMIN,'5' JLE TIMERXMOV TENMIN,'0'INC HOURCMP HOUR,'9' JLE TIMERX MOV HOUR,'0'INC TENHOUR CMP TENHOUR,'2' JLE TIMERXMOV TENHOUR,'0'TIMERX: MOV AL,20H OUT 20H,AL POP AX IRETTIMER ENDP;显示字符的子程序DISPCHAR PROC NEAR PUSH BXMOV BX,0 MOV AH,14 INT 10HPOP BX ;不到100次则结束中断RETDISPCHAR ENDP;恢复原来的中断服务程序MOV AH,4CHMOV DX,OLD_SEG PUSH DSMOV DS,DXMOV DX,OLD_OFFINT 21HPOP DSCODE ENDSEND START四、程序流程图8

温馨提示

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

评论

0/150

提交评论