《微机原理与接口技术》课设报告.docx
- 文档编号:26397436
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:18
- 大小:202.37KB
《微机原理与接口技术》课设报告.docx
《《微机原理与接口技术》课设报告.docx》由会员分享,可在线阅读,更多相关《《微机原理与接口技术》课设报告.docx(18页珍藏版)》请在冰豆网上搜索。
《微机原理与接口技术》课设报告
《微机原理与接口技术》
课程设计报告
设计题目:
电子表
学院:
信息工程学院
专业:
计算机科学与技术
(交通信息工程)
姓名:
朱良玉王铁志
学号:
201124020304
201124020308
指导教师:
马荣贵
2013年12月28日
1.设计内容
【设计内容】
1.电子表,能够led数码显示分和秒
2.能够准确的运行
3.暂停,能够对十分位和个分位进行调时
【设计原理】
实验本程序的主要设计原理是在int10中断处理键盘按键的扫描,实现调时功能,可以对个位分和十位分进行调时,在主程序中接收int3中断产生的一秒脉冲,然后进行秒的进位和各个位的判断清零工作。
键盘扫描用到了8255,一秒脉冲的产生用到了8254。
2.实验平台
2.1TPC—ZK实验系统平台
该系统由一块USB总线接口模块、TPC-ZK验系统及集成开发环境软件组成。
USB总线接口模块通过USB总线电缆与PC机相连,模块直接插在TPC-ZK实验系统上。
2.2实验所用芯片
1.8254的初始化字
由此,本设计中的8254的初始化为:
movdx,io8254c;向8254写控制字
moval,36h;使0通道为工作方式3
outdx,al
movax,1000;写入循环计数初值1000
movdx,io8254a
outdx,al;先写入低字节
moval,ah
outdx,al;后写入高字节
movdx,io8254c
moval,76h;设8254通道1工作方式2
outdx,al
movax,1000;写入循环计数初值1000
movdx,io8254b
outdx,al;先写低字节
moval,ah
outdx,al;后写高字节
2.8255的初始化字
由此,本设计中的8255的初始化为:
movAL,81H;初始化8255
movDX,28BH
OUTDX,AL;
3.设计流程
3.1程序流程图
3.2硬件连接
【8255连线】
PA0~PA3:
接数码管的位选信号s0~s3
PB0~PB7:
接数码管的段选信号
PC0~PC7:
接键盘扫描行列信号
cs:
288h
【8254连线】
CLK0:
接1M脉冲信号
EN0EN1:
接+5V
OUT0:
接CLK1,进行级联分频
OUT1:
接int3中断(IRQ)
cs:
280h
【int10连线】
IRQ10:
接逻辑开关,控制暂停
4.实验总结
微机接口技术是一门应用性、综合性、实践性都较强的课程,通过本次课程设计过程,我基木熟悉和掌握了微机系统的软件、硬件设计的方法、设计步骤,是一次微机开发应用方面的初步训练;通过本次课程设计使我熟练掌握了微机系统与接口扩展电路的设计方法,并熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法.
在刚开始的两天,设计过程停滞不前,到第三天才发现实验平台对实验结果的影响是至关重要的。
如果没有搞清楚实验平台自身的特点就进行编程,结果往往令人失望。
比如本次试验就是刚开始没有搞清楚int3和int10中断在实验平台的应用。
本次实验程序写的不够严谨,导致运行不是很稳定。
很小的细节往往决定成败,比如本次实验,在前面的过程一直得不到想要的结果,最后才发现,是数码管的共阴极问题搞反了,这导致了很长时间的调试。
这次的课程设计对我来说,是一次非常重要的锻炼,通过这次设计,我对所学的知识有了更深刻的了解和掌握,使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
有了这次的设计经验,相信在以后的学习设计实践过程中,我可以做到更好。
5.程序源代码
io8254aequ280h
io8254bequ281h
io8254cequ283h
io8255aequ288h
io8255bequ289h
io8255cequ28bh
DATASEGMENT
TIMEDB0,0,0,0
LEDTALDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,67H
table1dw0770h,0B70h,0D70h,0E70h,07B0h,0BB0h,0DB0h,0EB0h
dw07D0h,0BD0h,0DD0h,0ED0h,07E0h,0BE0h,0DE0h,0EE0h;键盘扫描码表
chardb'0123456789ABCDEF'
key_indb0h
DATAENDS
STACKSEGMENTSTACK
DW256DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
movax,cs
movds,ax
movdx,offsetint3;int3中断服务
movax,250bh
int21h
inal,21h
andal,0f7h
out21h,al
sti
movAL,81H;初始化8255
movDX,28BH
OUTDX,AL;
movdx,io8254c;向8254写控制字
moval,36h;使0通道为工作方式3
outdx,al
movax,1000;写入循环计数初值1000
movdx,io8254a
outdx,al;先写入低字节
moval,ah
outdx,al;后写入高字节
movdx,io8254c
moval,76h;设8254通道1工作方式2
outdx,al
movax,1000;写入循环计数初值1000
movdx,io8254b
outdx,al;先写低字节
moval,ah
outdx,al;后写高字节
l1:
inal,21h
andal,0f7h;中断3开
out21h,al
movax,cs
movds,ax
movdx,offsetint10
movax,2572h
int21h
inal,21h
andal,0fBh;中断10开
out21h,al
INAL,0A1H;读屏蔽字OCW1
ANDAL,0FBH;改变屏蔽字,中断10允许
OUT0A1H,AL
sti
callDISP
JMPL1
movax,4c00h
int21h
;------------------int10中断--------------处理调时
int10:
dis:
callDISP
callkey
cmpbyteptrkey_in,'C'
jzmin1
cmpbyteptrkey_in,'D'
jzmin0
cmpbyteptrkey_in,'E';结束标志
jznext;暂停显示
jmpdis
;-------------------十位分加---------------------
min1:
inal,21h
oral,08h
out21h,al
movDI,OFFSETTIME
movAL,[DI+3]
INCAL
cmpal,6
jzmin11
mov[DI+3],AL
jmpdis
min11:
moval,0
mov[DI+3],AL
jmpdis
;---------------------个位分加------------------
min0:
inal,21h
oral,08h
out21h,al
movDI,OFFSETTIME
movAL,[DI+2]
INCAL
cmpal,10
jzmin00
mov[DI+2],AL
jmpdis
min00:
moval,0
mov[DI+2],AL
jmpdis
next:
moval,20h
out20h,al
OUT0A0H,AL;结束中断,OCW2
inal,21h
oral,08h
out21h,al
sti
jmpl1
dis0:
jmpdis
keyprocnear
pushax
pushsi
key_loop:
movdx,28ah
moval,0fh;00001111行列
outdx,al
inal,dx;读行扫描值
andal,0fh
cmpal,0fh
jzdis0;未发现有键按下则转
callkeydelay;delayforamoment
movah,al
movdx,28bh;初始化控制口
moval,88h;c口高四位输入
outdx,al
movdx,28ah
moval,ah
oral,0f0h;11110000
outdx,al
inal,dx;读列扫描值
andal,0f0h
cmpal,0f0h
jzdis0;未发现有键按下则转
movsi,offsettable1;键盘扫描码表首址
movdi,offsetchar;字符表首址
movcx,16;待查表的表大小
key_tonext:
cmpax,[si];cmp(col,row)witheveryword
jzkey_findkey;inthetable
deccx
jzdis0;未找到对应扫描码
addsi,2
incdi
jmpkey_tonext
key_findkey:
movdl,[di]
movah,02
int21h;显示查找到的键盘码
movbyteptrkey_in,dl
key_waitup:
movdx,28bh;8255控制
moval,81h
outdx,al
movdx,28ah
moval,0fh
outdx,al
inal,dx;读行扫描值
andal,0fh
cmpal,0fh
jnzkey_waitup;按键未抬起转
callkeydelay;delayforamoment
popsi
popax
ret
keyendp
int3:
movDI,OFFSETTIME
movAL,[DI]
INCAL
mov[DI],AL;秒的低位加1并写回,如为10会在下面修改
CMPAL,10;
JZnext0
cc:
movAL,[DI+1]
CMPAL,6
JZnext1
bb:
movAL,[DI+2]
CMPAL,10;
JZnext2
aa:
movAL,[DI+3]
CMPAL,6
JZnext3
ee:
movAL,20H
OUT20H,AL
IRET
next0:
movAL,0
mov[DI],AL;为10,修改为0
movAL,[DI+1]
INCAL
mov[DI+1],AL;秒的高位加11并写回,如为6会在下面修改
jmpcc
next1:
movAL,0
mov[DI+1],AL;为10,修改为0
movAL,[DI+2]
INCAL
mov[DI+2],AL;分的低位加1并写回,如为10会在下面修改
jmpbb
next2:
movAL,0
mov[DI+2],AL;为10,修改为0
movAL,[DI+3]
INCAL
mov[DI+3],AL;分的高位加11并写回,如为6会在下面修改
jmpaa
next3:
movAL,0
mov[DI+3],AL;为10,修改为0
jmpee
DISP:
PUSHAX
PUSHSI
movDX,io8255a
movAL,00000001b
OUTDX,AL
movAX,SEGTIME;取TIME的段地址
movDS,AX
movSI,OFFSETTIME;取TIME的地址偏移量
movAL,[SI]
movsi,ax
andsi,00ffh
movDX,io8255b
movBX,OFFSETLEDTAL
movAL,[bx+si]
OUTDX,AL
CALLDELAY
movAX,SEGTIME;取TIME的段地址
movDS,AX
movSI,OFFSETTIME;取TIME的地址偏移量
movAL,[SI+1]
movsi,ax
andsi,00ffh
movDX,io8255b
movBX,OFFSETLEDTAL
movAL,[bx+si]
OUTDX,AL
movDX,io8255a
movAL,00000010b
OUTDX,AL
CALLDELAY
movAX,SEGTIME;取TIME的段地址
movDS,AX
movSI,OFFSETTIME;取TIME的地址偏移量
movAL,[SI+2]
movsi,ax
andsi,00ffh
movDX,io8255b
movBX,OFFSETLEDTAL
movAL,[bx+si]
oral,10000000b
OUTDX,AL
movDX,io8255a
movAL,00000100b
OUTDX,AL
CALLDELAY
movAX,SEGTIME;取TIMER的段地址
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理与接口技术 微机 原理 接口 技术 报告