8254定时器 汇编.docx
- 文档编号:11116797
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:13
- 大小:34.12KB
8254定时器 汇编.docx
《8254定时器 汇编.docx》由会员分享,可在线阅读,更多相关《8254定时器 汇编.docx(13页珍藏版)》请在冰点文库上搜索。
8254定时器汇编
(一)实验名称
8254定时器
(二)实验内容
1编写程序,将8254的计数器0设置为方式3,计数值为十进制5,用微动开关KK1作为CLK0时钟,OUT0连接IRQ,每当KK1按动5次后产生中断请求,在中断服务程序中完成屏幕上显示字符“M”。
2定时应用实验——秒表的设计
设计思想:
每计时1秒,描述时间的变量就应加1,并且每计时60秒自动归零。
因此,可利用8254的计数器0设置为方式2,用实验箱提供的信号源10KHZ作为CLK0时钟,计数值为十进制0(即最大计数值10000),这样每隔1秒就会在OUT0端产生0到1的跃变,该信号接IRQ作为中断请求。
在中断服务程序中完成对时钟的修改及显示。
(三)实验目的
1.掌握8254的工作方式及应用编程。
2.掌握8254的典型应用电路的接法。
3.学习8254在PC系统中的典型应用方法。
(四)实验日期、时间和地点
2011-1-10,2:
30—5:
30
微机高级实验室
(五)实验环境(说明实验用的软硬件环境及调试软件)
PC机一台,PIT-B实验箱一套,TDPIT、td-debug软件环境一套
(六)实验步骤(只写主要操作步骤,要简明扼要,还应该画出程序流程图或实验电路的具体连接图)
一:
二:
(七)实验结果(经调试通过的源程序的所有代码,应包含必要的说明文字)
一:
MY_82540EQU0E440H
MY_82541EQU0E441H
MY_82542EQU0E442H
MY_82543EQU0E443H
INTCSR_BYTE0EQU0E438H
INTCSR_BYTE1EQU0E439H
INTCSR_BYTE2EQU0E43AH
INTCSR_BYTE3EQU0E43BH
IMB4_BYTE3EQU0E41FH
DATASSEGMENT
CSBAKDW?
IPBAKDW?
MKBAKDB?
DATASENDS
STACKSSEGMENT
DW20DUP(0);此处输入堆栈段代码
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
MOVDX,INTCSR_BYTE0
MOVAL,00H
OUTDX,AL
MOVDX,INTCSR_BYTE1
MOVAL,1FH
OUTDX,AL
MOVDX,INTCSR_BYTE2
MOVAL,3FH
OUTDX,AL
MOVDX,INTCSR_BYTE3
MOVAL,00H
OUTDX,AL
MOVDX,MY_82543;初始化8254
MOVAL,00010111B;通道0,方式3,十进制计数
OUTDX,AL
MOVDX,MY_82540
MOVAL,05
OUTDX,AL
CALLDALLY
INAL,0A1H;保留8259从片初始屏蔽字的状态
MOVMKBAK,AL
CLI;关中断
ANDAL,11111101B;打开屏蔽
OUT0A1H,AL
MOVAX,0;修改中断的中断矢量
MOVES,AX
MOVDI,01C4H;IRQ9,71H,01C4H=71H*4
MOVAX,ES:
[DI]
MOVIPBAK,AX;写入IP
MOVAX,OFFSETMYINT
CLD
STOSW
MOVAX,ES:
[DI];写入CS
MOVCSBAK,AX
MOVAX,SEGMYINT
STOSW
STI;开中断
JMP$;循环等待
CLI;关中断
MOVAX,0;恢复系统中断矢量
MOVES,AX
MOVDI,01C4H;IRQ9,71H
MOVAX,IPBAK
CLD
STOSW
MOVAX,CSBAK
STOSW
MOVAL,MKBAK;恢复系统8259从片屏蔽字
OUT0A1H,AL
STI;开中断
MYINTPROCNEAR;自定义中断处理程序
PUSHDS
MOVDX,IMB4_BYTE3
INAL,DX
MOVDX,INTCSR_BYTE2
MOVAL,3FH
OUTDX,AL
MOVAL,63H
OUT0A0H,AL
MOVAL,62H
OUT20H,AL
MOVAH,0EH
MOVAL,'M';显示‘M’
INT10H
POPDS
POPAX;修改返回地址
INCAX
INCAX
PUSHAX
RET
MYINTENDP
DALLYPROCNEAR;延时
PUSHCX
PUSHAX
MOVCX,0100H
D1:
MOVAX,2000H
D2:
DECAX
JNZD2
LOOPD1
POPAX
POPCX
RET
DALLYENDP
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
二:
MY_82540EQU0E440H
MY_82541EQU0E441H
MY_82542EQU0E442H
MY_82543EQU0E443H
INTCSR_BYTE0EQU0E438H
INTCSR_BYTE1EQU0E439H
INTCSR_BYTE2EQU0E43AH
INTCSR_BYTE3EQU0E43BH
IMB4_BYTE3EQU0E41FH
DATASSEGMENT
CSBAKDW?
IPBAKDW?
MKBAKDB?
COUNTDW?
STRDB2DUP(0)
DATASENDS
STACKSSEGMENT
DW30DUP(0);此处输入堆栈段代码
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
MOVDX,INTCSR_BYTE0
MOVAL,00H
OUTDX,AL
MOVDX,INTCSR_BYTE1
MOVAL,1FH
OUTDX,AL
MOVDX,INTCSR_BYTE2
MOVAL,3FH
OUTDX,AL
MOVDX,INTCSR_BYTE3
MOVAL,00H
OUTDX,AL
MOVDX,MY_82543;初始化8254
MOVAL,00110101B;通道0,方式2,十进制计数
OUTDX,AL
MOVDX,MY_82540
MOVAL,0
OUTDX,AL
OUTDX,AL
CALLDALLY
INAL,0A1H;保留8259从片初始屏蔽字的状态
MOVMKBAK,AL
CLI;关中断
ANDAL,11111101B;打开屏蔽
OUT0A1H,AL
MOVAX,0;修改中断的中断矢量
MOVES,AX
MOVDI,01C4H;IRQ11,71H,01C4H=71H*4
MOVAX,ES:
[DI]
MOVIPBAK,AX;写入IP
MOVAX,OFFSETMYINT
CLD
STOSW
MOVAX,ES:
[DI];写入CS
MOVCSBAK,AX
MOVAX,SEGMYINT
STOSW
MOVCOUNT,0
STI;开中断
JMP$;循环等待
CLI;关中断
MOVAX,0;恢复系统中断矢量
MOVES,AX
MOVDI,01C4H;IRQ11,71H
MOVAX,IPBAK
CLD
STOSW
MOVAX,CSBAK
STOSW
MOVAL,MKBAK;恢复系统8259从片屏蔽字
OUT0A1H,AL
STI;开中断
MYINTPROCNEAR;自定义中断处理程序
MOVDX,IMB4_BYTE3
INAL,DX
MOVDX,INTCSR_BYTE2
MOVAL,3FH
OUTDX,AL
MOVAL,63H
OUT0A0H,AL
MOVAL,62H
OUT20H,AL
LEASI,STR
MOVBX,COUNT
CALLBIN_T0_DEC
LEADX,STR
MOVAH,09H
INT21H
CMPCOUNT,3CH
JBLOP1
MOVCOUNT,0
JMPBREAK
LOP1:
INCCOUNT
BREAK:
MOVAH,06H
MOVDL,0FFH
INT21H
JERETURN
MOVAX,4C00H
INT21H
RETURN:
IRET
MYINTENDP
BIN_T0_DECPROCNEAR;将十六进制转化为十进制,入口参数为BX,SI
PUSHBX
PUSHCX
PUSHSI
PUSHDI
MOVCX,10
CALLDEC_DIV
MOVCX,1
CALLDEC_DIV
POPDI
POPSI
POPCX
POPBX
RET
BIN_T0_DECENDP
DEC_DIVPROCNEAR;相除分离
MOVAX,BX
MOVDX,0
DIVCX
MOVBX,DX
MOV[SI],AL
ADD[SI],30H;将相应数字转换成其对应的ASCII码
INCSI
RET
DEC_DIVENDP
DALLYPROCNEAR;延时
PUSHCX
PUSHAX
MOVCX,0001H
D1:
MOVAX,2000H
D2:
DECAX
JNZD2
LOOPD1
POPAX
POPCX
RET
DALLYENDP
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 8254定时器 汇编 8254 定时器