汇编设计.docx
- 文档编号:3877035
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:14
- 大小:319.60KB
汇编设计.docx
《汇编设计.docx》由会员分享,可在线阅读,更多相关《汇编设计.docx(14页珍藏版)》请在冰豆网上搜索。
汇编设计
夜班防睡控制/记录器设计与功能实现
******
学号:
*********227
班级:
计121-2
学院:
计算机与控制工程学院
指导老师:
***
时间:
2014年12月21号
一、设计内容:
实现对值夜班人员的防睡控制和记录睡着时间与次数的功能。
二、设计要求:
①、根据时间定时提示,若值班人员无反应,则声音告警,通过按键可清除。
②、若长时间无人按复位键,则以较急促的声音报警,黄灯闪烁。
③、超过规定时间时红灯闪烁,并以尖锐的声音持续报警,并记录睡觉次数。
④、通过8段数码管显示时间和睡觉的次数。
三、程序流程图:
四、硬件接线图
五、
图1、8259内部连线及外部管脚引出图
图2、8255键盘扫描及数码管显示线路图
图3、8254计数连线图
六、程序代码
MY8255_AEQU0600H
MY8255_BEQU0602H
MY8255_CEQU0604H
MY8255_CONEQU0606H
A8254EQU06C0H;计数器0的接口地址
CON8254EQU06C6H;控制口
SSTACKSEGMENTSTACK
DW64DUP(?
)
SSTACKENDS
DATASEGMENT
TEMPWORDDW0000H;放置当前要调的是哪一位
TEMPTDB01H,00H,00H;临时数据
TIMEDB00H,00H,00H;时(睡觉次数)、分、秒
DTABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;定义16进制数字
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
PUSHDS
PUSHSI
MOVAX,0000H
MOVDS,AX
MOVAX,OFFSETIRQ7;取中断入口地址
MOVSI,00C4H;中断矢量地址
MOV[SI],AX;IRQ7的偏移矢量
MOVAX,CS;段地址
MOVSI,00C6H
MOV[SI],AX;IRQ7的段地址矢量
CLI
POPSI
POPDS
;初始化主片8259
MOVAL,11H
OUT20H,AL;ICW1
MOVAL,08H
OUT21H,AL;ICW2
MOVAL,04H;IR2接口上接从片
OUT21H,AL;ICW3
MOVAL,01H
OUT21H,AL;ICW4
;从片
MOVAL,11H
OUT0A0H,AL;ICW1
MOVAL,30H
OUT0A1H,AL;ICW2
MOVAL,02H
OUT0A1H,AL;ICW3,终端类型码是010,中断源是IR2
MOVAL,01H
OUT0A1H,AL;ICW4
MOVAL,0FDH
OUT0A1H,AL;OCW1=11111101B,只有IR1不被屏蔽
MOVAL,6BH
OUT21H,AL;主片8259,OCW1=01101101B
STI
;时钟显示
MOVAX,DATA
MOVDS,AX
MOVSI,3000H
MOVAL,00H
MOV[SI],AL;清显示缓冲
MOV[SI+1],AL
MOV[SI+2],AL
MOV[SI+3],AL
MOV[SI+4],AL
MOV[SI+5],AL
LEADI,TIME
MOVDX,MY8255_CON;写8255控制字
MOVAL,81H;C口低四位输入,A、B口输出
OUTDX,AL
;计数器
PUSHDX
PUSHAX
MOVDX,CON8254
MOVAL,00110000B;计数器0,16位计数,方式0,二进制
OUTDX,AL
MOVDX,A8254
MOVAL,00H;计数初值为18432(十进制)
OUTDX,AL;写低8位
MOVAL,48H;写高8位
OUTDX,AL
STI
POPAX
POPDX
BEGIN:
CALLDIS;调用显示子程序
CALLCLEAR;清屏
CALLCCSCAN;扫描
JNZINK1
JMPBEGIN
INK1:
CALLDIS
CALLDALLY
CALLDALLY
CALLCLEAR
CALLCCSCAN
JNZINK2;有键按下,转到INK2
JMPBEGIN
;确定按下键的位置
INK2:
MOVCH,0FEH
MOVCL,00H
COLUM:
MOVAL,CH
MOVDX,MY8255_A
OUTDX,AL
MOVDX,MY8255_C
INAL,DX;IN为输入字节或字
L4:
TESTAL,08H;isL4?
JNZNEXT
MOVAL,00H;L4
ADDAL,CL
CALLSETIME;清零
JMPCONTINUE
KCODE:
ADDAL,CL
CALLPUTBUF
CONTINUE:
PUSHAX
KON:
CALLDIS;调用显示子程序
CALLCLEAR;清屏
CALLCCSCAN;扫描
JNZKON
POPAX
NEXT:
INCCL;次数加1
MOVAL,CH
TESTAL,08H
JZKERR
ROLAL,1;左移
MOVCH,AL
JMPCOLUM
KERR:
JMPBEGIN
CCSCAN:
MOVAL,00H;键盘扫描子程序
MOVDX,MY8255_A
OUTDX,AL
MOVDX,MY8255_C
INAL,DX
NOTAL
ANDAL,0FH
RET
CLEAR:
MOVDX,MY8255_B;清屏子程序
MOVAL,00H
OUTDX,AL
RET
DIS:
PUSHAX;显示子程序
MOVSI,3000H
MOVDL,0DFH
MOVAL,DL
AGAIN:
PUSHDX
MOVDX,MY8255_A
OUTDX,AL
MOVAL,[SI]
MOVBX,OFFSETDTABLE
ANDAX,00FFH
ADDBX,AX
MOVAL,[BX]
MOVDX,MY8255_B
OUTDX,AL
CALLDALLY
INCSI
POPDX
MOVAL,DL
TESTAL,01H
JZOUT1
RORAL,1
MOVDL,AL
JMPAGAIN
OUT1:
POPAX
RET
DALLY:
PUSHCX;延时子程序
MOVCX,0006H
T1:
MOVAX,009FH
T2:
DECAX
JNZT2
LOOPT1
POPCX
RET
PUTBUF:
PUSHSI
PUSHDI
MOVSI,DI;存键盘值到相应位的缓冲中
MOV[SI],AL
DECDI
CMPDI,2FFFH
JNZGOBACK
GOBACK:
POPDX
POPSI
RET
SETIME:
PUSHAX
PUSHSI
LEASI,TEMPT
MOVAH,01H
MOV[SI],AH
LEASI,TEMPWORD
LEADI,TIME
L43:
MOVSI,DI;只有分、秒置0
MOVAH,00H
MOV[SI+1],AH
MOV[SI+2],AH
SETIMEND:
POPSI
POPAX
RET
IRQ7:
STI;中断服务子程序,自动修改时间
PUSHSI
PUSHAX
PUSHDX
MOVDX,CON8254
MOVAL,00110000B;计数器0?
16位计数,方式0,二进制
OUTDX,AL
MOVDX,A8254
MOVAL,00H;计数器初值是18432(十进制)
OUTDX,AL;写低8位
MOVAL,48H;写高8位
OUTDX,AL
MOVDL,00111100B
MOVCL,00000101B
MOVDH,10011001B
LEASI,TIME
MOVAX,0000H
MOVAL,[SI+2];秒数
ADDAL,01H
DIVDL;取模60
MOV[SI+2],AH;AH=余数(D),装回去
MOVAH,[SI+1];分钟
ADDAL,AH;AL=秒位的进位(0或1),分+1或0
MOVAH,00H
DIVCL;取模5
MOV[SI+1],AH;AH=模(余数),装回去
MOVAH,[SI];小时
ADDAL,AH;取分位进位
MOVAH,00H;防止混
DIVDH;取模99
MOV[SI],AH;模(余数)=新时间,装回去;将时钟时间写入到6个内存块中
LEADI,TIME
MOVSI,3000H
MOVDL,00001010B;=10
MOVAX,0000H
MOVAL,[DI+2];读取秒
DIVDL
MOV[SI],AH;放余数
MOV[SI+1],AL;放商
MOVAX,0000H
MOVAL,[DI+1];读取分
DIVDL
MOV[SI+2],AH
MOV[SI+3],AL
MOVAX,0000H
MOVAL,[DI];读取睡觉次数(小时)
DIVDL
MOV[SI+4],AH
MOV[SI+5],AL
POPDX
POPAX
POPSI
MOVAL,20H
OUT0A0H,AL
OUT20H,AL;中断结束命令
IRET
CODEENDS
ENDSTART
七、实验结果:
1、已实现功能:
记录时间和睡觉次数,并通过8段数码管显示
设置复位键,按下复位键使时间清零,而睡觉次数不会清零。
2、未实现功能:
定时报警功能和同时亮灯闪烁功能。
实验心得:
经历了一周的课程设计,我感慨颇多,我认识到自己学到的知识在实践中的应用,课程设计中每一天遇到的情况还在我脑海里回旋,它给我带来了意想不到的效果。
课程设计是运用所学知识实践自我的最好途径。
亲身实践,而不是闭门造车。
实现了从理论到实践再到理论的飞跃。
增强了认识问题,分析问题,解决问题的能力。
为学习知识,锻炼能力,打下了良好的基础。
同时还需我们在以后的学习中用知识武装自己,用书本充实自己,为以后工作打下更坚固的基础!
通过这次的课程设计,我认清了自己的位置,发现了自己的不足,对课本上的知识有了更深层次的理解。
这让我认识到自身努力学习知识并将之与具体设计相结合的重要性。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 设计