微机原理及应用课程设计报告.doc_第1页
微机原理及应用课程设计报告.doc_第2页
微机原理及应用课程设计报告.doc_第3页
微机原理及应用课程设计报告.doc_第4页
微机原理及应用课程设计报告.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

微机原理及应用课程设计报告一、设计目的:通过课程设计加深对所学微机原理这门课的理解,并学会用汇编语言编写程序实现要求的功能,掌握8255、8259、8253等芯片的功能和应用。在课程设计中培养我们分析问题、解决问题的方法,培养较强的动手能力和一定的微机应用系统的设计和调试能力。二、设计要求采用发光二极管模拟交通红绿灯,并能用数码管显示灯亮的时间剩余值。计数原则:红灯绿灯灯亮的时间为20秒种,在替换间隔绿灯的路口的黄灯闪烁4秒。通过8255A并行口传输数据的方法,来控制LED发光二极管的亮灭。用8255A的B端口和C端口控制12个LED发光二级管的亮和灭(输出为0则亮,输出为1则灭 )。过8253A应用为计数提供硬件计时,为整个红绿灯系统提供时间计数。通过中断控制器8259A为红绿灯系统提供中断服务,以实现中断。程序中应设定好8255A的工作模式,使三个端口均工作于方式0,并处于输出态。8255A的A端口地址为:0FF28H;B端口地址为:0FF29H;C端口地址为:0FF2AH;控制口地址为:0FF2BH三.设计思路设有一个十字路口,1、3为南,北方向, 2、4为东,西方向。 初始化之后, 1、3路口的绿灯亮, 2、4路口的红灯亮, 1、3路口方向通车。 延迟一段时间(20秒)后, 1、3路口的绿灯熄灭,而1、3路口的黄灯开始闪烁。闪烁若干次(延时4秒)后, 1、3路口的红灯亮, 同时2、4路口的绿灯亮, 2、4路口方向开始通车。 延迟一段时间(20秒)后, 2、4路口的绿灯熄灭,而黄灯开始闪烁。闪烁若干次(延时4秒)后,再切换到1、3路口方向。 之后,重复上述过程北红 黄 绿西 东南流程图如下:8253连线:(1)8253的GATE0接+5V。(2)8253的CLK0插孔接分频器74LS393(左上方)的T5插孔。(3)8253OUT0插孔和8259的3号中断IR3插孔相连。8259连线:(1)8259模块上的INT连8088的INTR(在主板键盘矩阵下面)。(2)8253模块上的INTA连8088的INTA(在主板键盘矩阵下面)。(3)8253OUT0插孔和8259的3号中断IR3插孔相连。(4)8259模块上的D0D7连到BUS 2区的XD0XD7。(5)8259模块上的CS端接Y6。(6)8259模块上的A0连到BUS 区的XA0上。(7)8259模块上的RD、WR信号线分别连到BUS 3区的XRD、XWR上。8255连线:(1) L1PC0 L4PC1 L7PC2 L10PC3L2PB4 L5PB5 L8PB6L11 PB7L3PC4 L6PC5L9PC6 L12 PC7 六、源程序及注释CODESEGMENTASSUME CS:CODEINTPORT1EQU0060H ;定义8259控制口和数据口地址INTPORT2EQU0061HINTQ3EQUINTREEUP3 ;定义中断向量IOCONPTEQU0FF2BH ;定义8255各寄存器地址IOAPTEQU0FF28HIOBPTEQU0FF29H;IOBPT控制黄灯IOCPTEQU0FF2AH;IOCPT高四位控制绿灯,低四位控制红灯TCONTROEQU0043H;定义8253控制口和0通道地址TCON0EQU0040HORG1000HSTART:CLD;关中断 MOVDX,IOCONPT ;写8255控制字,三个口均为0输出MOVAL,80HOUTDX,AL CALLWBUF1;调用初始子程序CALLWRINTVER ;调用写中断向量子程序MOVAL,13HMOVDX,INTPORT1; 循环等待中断OUTDX,ALMOVAL,08HMOVDX,INTPORT2OUTDX,ALMOVAL,09HOUTDX,ALMOVAL,0F7HOUTDX,AL MOVBYTEPTRDS:0760H,0H MOVBYTEPTRDS:0762H,0H MOVBYTEPTRDS:0771H,14H ;设置显示初始值为20S MOVBYTEPTRDS:0773H,18H ;设置显示初始值为24S MOVBYTEPTRDS:0772H,1H;设置初始状态 MOVDX,TCONTRO;写控制字,0通道输出方波 MOVAL,36H OUTDX,AL MOVDX,TCON0;计数初值送0通道寄存器 MOVAL,0FEH OUTDX,AL OUTDX,ALSTIWATING:CALLDISP;调用初始显示子程序CMPBYTE PTR DS:0772H,01H ;判断状态JNZ WATING1CALLLIGHT1JMPWATINGWATING1: CMPBYTE PTR DS:0772H,02HJNZ WATING2CALLLIGHT2JMPWATINGWATING2: CMPBYTE PTR DS:0772H,03HJNZ WATING3CALLLIGHT3JMPWATINGWATING3: CALLLIGHT4JMPWATINGLIGHT1:PUSHAXPUSHDXMOVDX,IOBPT ;1、3路口红灯亮,2、4路口绿灯亮 状态1MOVAL,00H OUTDX,ALMOVDX,IOCPTMOVAL,01011010B OUTDX,ALPOPDXPOP AXRETLIGHT2:PUSHAX PUSHDX MOVDX,IOCPT;灭2、4路口绿灯MOVAL,00001010B OUTDX,ALLIGHT2_1:MOVDX,IOBPT;设置黄灯闪烁 MOVAL, BYTE PTR DS:0760H XORAL,50H ;2、4路口黄灯点亮 MOVBYTEPTRDS:0760H,ALOUTDX,ALCALLDELAY2POPDXPOPAXRETLIGHT3:PUSHAX PUSHDX MOVDX,IOBPT ;2、4路口红灯亮,1、3路口绿灯亮状态3 MOVAL,00HOUTDX,AL MOVDX,IOCPT MOVAL,10100101B OUTDX,AL POPDX POPAX RETLIGHT4: PUSHAXPUSHDXMOVDX,IOCPT ;灭1、3路口绿灯 MOVAL,00000101BOUTDX,ALLIGHT4_1: MOVDX,IOBPT ;设置黄灯闪烁MOVAL, BYTE PTR DS:0762HXORAL,0A0HMOVBYTEPTRDS:0762H,AL OUTDX,ALCALLDELAY2POPDXPOPAXRETWRINTVER: MOVAX,0HMOVES,AXMOVDI,002CH ;以下三句写3号中断向量LEAAX,INTQ3STOSWMOVAX,0000HSTOSW RETINTREEUP3:PUSHAXPUSHDXPUSHBXCLI SUBBYTEPTRDS:0771H,01H;从20S开始递减 SUBBYTEPTRDS:0773H,01H;从24S开始递减P1: CMPBYTE PTR DS:0772H,01H ;判断是否是第一个状态 JNZ P2 CMPBYTEPTRDS:0771H,00H;看20S是否已经减到0 JNZINTRE2 MOV BYTEPTRDS:0772H,02H ;转到第二个状态 MOV BYTEPTRDS:0771H,04H ;从4S开始减 MOVBYTEPTRDS:0773H,04H;从4S开始减 JMP INTRE2P2: CMPBYTE PTR DS:0772H,02H ;看是否是第二个状态 JNZ P3 CMPBYTEPTRDS:0771H,00H;看是否以从4S减到0 JNZINTRE2 MOV BYTEPTRDS:0772H,03H ;转到第三个状态 MOV BYTEPTRDS:0773H,14H ;数码管时间显示初值对调 MOVBYTEPTRDS:0771H,18H JMPINTRE2P3: CMPBYTE PTR DS:0772H,03H ;看是否是第三个状态 JNZ P4 CMPBYTEPTRDS:0773H,00H;看是否已经从20秒减到0 JNZINTRE2 MOV BYTEPTRDS:0772H,04H;转到第四个状态 MOV BYTEPTRDS:0773H,04H;设置两数码管的初值都为4秒 MOVBYTEPTRDS:0771H,04H JMP INTRE2P4: CMPBYTE PTR DS:0772H,04H;看是否是第四个状态 JNZ P1 CMPBYTEPTRDS:0773H,00H ;看是否已经从4秒减到0 JNZINTRE2 MOV BYTEPTRDS:0772H,01H;转到第一个状态 MOV BYTEPTRDS:0773H,18H;数码管时间显示初值对调 MOVBYTEPTRDS:0771H,14H JMP INTRE2INTRE2:CALLCONVERS ;写OCW2且中断返回 MOVAL,20H MOVDX,INTPORT1 OUTDX,AL POPBX POPDX POPAX STIIRETCONVERS:MOV AL, DS:0771H ;取中断次数转换成显示代码,并将显示代码写入显示缓冲区CBW;;AX除以10,并把商放到077B,把余数放到077AMOVBL,10DIVBLMOVBX,077cHMOVDS:BX,AHINCBXmovDS:BX,ALMOV AL, DS:0773HCBWMOVBL,10DIVBLMOVBX,077eHMOVDS:BX,AHINCBXmovDS:BX,ALRETDISP: PUSHAX;显示子程序PUSHBXPUSHCXPUSHDXMOVDX,077FH MOVAH,20HDISP0: MOVCX,00FFH MOVBX,DX;将077F放到BX中 MOVBL,DS:BX ;第一次时将14H放到BL中 MOVBH,0H PUSHDX MOVDX,0FF22H;8155的字形端口地址 MOVAL,CS:BX+1300H ;第一次时BX中放14H OUTDX,AL MOVDX,0FF21H;字位端口地址 MOVAL,AH;20H-“00100000”,后六位有效 OUTDX,ALDISP1: LOOPDISP1 ;使显示的倒计时在没有中断信号来之前,一动不动的延时 POPDX ;改变显示地址 DECDX SHRAH,01H ;扫描,使六个数码管向右显示 JNZDISP0 MOVDX,0FF22H;以下三句用来灭数码管 MOVAL,0FFH OUTDX,ALPOPDXPOPCXPOPBXPOPAXRETDELAY2: PUSHCX ;控制黄灯闪烁的延时子程序 MOVCX,10HDELA1:CALLDISPLOOPDELA1 POPCX RETORG1300HDATA1: DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H ;07显示码,DATE1的首地址为1300H DB80H,90H,88H,83H,0C6H,0A1H,86H,8EH;8F显示码 DB0FFH,0CH,89H,0DEH,0C7H,8CH,0F3H,0BFH ;全黑、-等 DB90H,0A3H,0A1H,86H,8FHWBUF1: MOVBX,0;开辟6个内存空间、并初始化显示缓冲区(20、24) MOVWORDPTRDS:BX+077AH,1010H;077B中放的是10,077A中放10 ADDBX,2 MOVWORDPTRDS:BX+077AH,0200H;077D中放02,077C中放00 ADDBX,2MOVWORDPTRDS:BX+077AH,0204H ;077F中放10,077E中放10RET CODEENDSENDSTART七、心得与体会通过本次课程设计,我们熟悉了芯片8253、8259、8255的功能和应用。学会了用汇编语言设计一个程序的方法。虽然程序中有一部分是现成的,但我还是通过查书或问老师的方式读懂了它的思路。在实现数码管显示数字的过程中,我们学会了先画流程图再编写程序的良好习惯,它有利我们理清思路,更快更简洁地编写出程序。在用到8255、8255芯片时,由于我们还课时还没上到,我通过自学基本掌握了它们的功能。课程设计很能锻炼我们的自学能力和合作精神。八、总结与提高在实现计时功能部分,可以用硬件也可以用软件实现,我们同学大多选择了硬件即8253来实现。在成功调试并运行后,我不忘去尝试能否用软件实现。我又仔细把各个芯片的知识内容重新读了一遍,经过思考我大体有了思路,但我发现芯片8259用不上,为此我询问了老师,才得知8259不需要用,只要芯片8255就可以实现。在确认各个细节后,我试着编写了用软件实现的程序。程序如下:软件实现:IOCONPTEQU0FF2BH ;定义8255各寄存器地址IOAPTEQU0FF28HIOBPTEQU0FF29H;IOBPT控制黄灯IOCPTEQU0FF2AH ;IOCPT高四位控制绿灯,低四位控制LIGHT1:PUSHAXPUSHDXMOVDX,IOBPT ;1、3路口红灯亮,2、4路口绿灯亮 状态1MOVAL,00H OUTDX,ALMOVDX,IOCPTMOVAL,01011010B OUTDX,ALCALLDELAY2;延时以实现记时功能POPDXPOP AXRETLIGHT2:PUSHAX PUSHDX MOVDX,IOCPT;灭2、4路口绿灯MOVAL,00001010B OUTDX,ALLIGHT2_1:MOVDX,IOBPT;设置黄灯闪烁 MOVAL, BYTE PTR DS:0760H XORAL,50H ;2、4路口黄灯点亮 MOVBYTEPTRDS:0760H,ALOUTDX,ALCALLDELAY2POPDXPOPAXRETLIGHT3:PUSHAX PUSHDX MOVDX,IOBPT ;2、4路口红灯亮,1、3路口绿灯亮状态3 MOVAL,00HOUTDX,AL MOVDX,IOCPT MOVAL,10100101B OUTDX,ALCALLDELAY2;延时以实现记时功能POPDX POPAX RETLIGHT4: PUSHAXPUSHDXMOVDX,IOCPT ;灭1、3路口绿灯 MOVAL,00000101BOUTDX,ALLIGHT4_1: MOVDX,IOBPT ;设置黄灯闪烁MOVAL, BYTE PTR DS:0762HXORAL,0A0HMOVBYTEPTRDS:0762H,AL OUTDX,ALCALLDELAY2P1: CMPBYTE PTR DS:0772H,01H ;判断是否是第一个状态CALLDELAY2;延时以实现记时功能 CMPBYTEPTRDS:0771H,

温馨提示

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

最新文档

评论

0/150

提交评论