微型计算机原理及应用实验报告清零实验,北京科技大学微机原理及应用实验报告.docx...

253b171540df25e1b84436cbe50dfc72.gif北京科技大学微机原理及应用实验报告.docx

微机原理及应用实验报告学院机械工程学院班级机自1104学号41140194姓名李文虎组员王靖宇实验一 8253定时器计数器(2013年12月19日机电楼305)1. 实验目的掌握8253方式0的工作原理及编程方法。2. 实验内容 按图7虚线连接电路,将计数器0设置为方式0,计数器初值为NN0FH,用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化当输入N1个脉冲后OUT0变高电平。3. 参考流程图4. 程序编码ioportequ 0c800h-0280h Io8253a equ ioport283hio8253bequ ioport280hcode segment assume cscodestart mov al,14h ; 通道0为工作方式2 mov dx,io8253a out dx,al mov dx,io8253b ;送计数初值为0FH mov al,0fh out dx,allll in al,dx ;读计数值 call disp ;调显示子程序 push dx mov ah,06h mov dl,0ffh int 21h pop dx jz lll mov ah,4ch ;退出 int 21h disp proc near ;显示子程序 push dx and al,0fh ;首先取低四位 mov dl,al cmp dl,9 ;判断是否9 jle num ;若是则为0-9,ASCII码加30H add dl,7 ;否则为A-F,ASCII码加37Hnum add dl,30h mov ah,02h ;显示 int 21h mov dl,0dh ;加回车符 int 21h mov dl,0ah ;加换行符 int 21h pop dx ret ;子程序返回disp endpcode ends end start5. 实验现象拨动触发器开关一次产生一个脉冲,拨动14次后绿灯亮,再拨一次红灯又亮。重新拨动14次,绿灯再亮6. 实验心得初次使用DOC系统,对微机原理的编程理解更加深入。实验二 8253定时器计数器(2013年12月19日机电楼305)1. 实验目的掌握8253方式0的工作原理及编程方法。2. 实验内容按图8连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化频率1HZ。3. 编程流程图4. 程序编码ioport equ 0c800h-0280h Io8253a equ ioport283hio8253bequ ioport280hio8253c equ ioport282hcode segment assume cscodestart mov al,27h ; mov dx,io8253a out dx,al mov dx,io8253b mov al,10h out dx,al mov al,01100111B mov dx,io8253aout dx,almov dx,io8253cmov al,10h out dx,al mov ah,4ch int 21hcode ends end start5. 实验现象8253通道0和通道1均工作在方式3,计数初值均为1000。通道0的时钟输入为1MHz标准脉冲,产生1000Hz的方波;通道1以通道0输出的1000Hz方波脉冲为输入,产生1Hz的方波。逻辑笔(接OUT1)的红灯和绿灯1秒内交替亮6. 实验心得掌握了解8253芯片的工作及编程。实验三2.8255可编程并行接口(2013年12月27日机电楼305)1. 实验目的掌握8255方式0的工作原理及使用方法。2. 实验内容1实验电路如图6,8255C口接逻辑电平开关K0K7,A口接LED显示电路L0L7。2编程从8255C口输入数据,再从A口输出。3. 编程流程图4. 程序编码ioport equ 0c800h-0280hio8255aequ ioport288hio8255bequ ioport28bhio8255cequ ioport28ahcode segment assumecscodestart movdx,io8255b moval,8bhoutdx,alinout movdx,io8255c inal,dx movdx,io8255a outdx,almovdl,0ffh movah,06hint21h jzinoutmovah,4ch int21hcodeendsendstart5. 实验现象八个开关的状态,一一对应控制8个LED灯6. 实验心得对8255A工作在方式0的工作状态有了深刻的认识和了解。实验四七段数码管实验(2013年12月27日机电楼305)1. 实验目的掌握数码管显示数字的原理2. 实验内容 静态显示按图10a连接好电路,将8255的A口PA0PA6分别与七段数码管的段码驱动输入端ag相连,位码驱动输入端S1接5V选中,S0、dp接地关闭。编程从键盘输入一位十进制数字09,在七段数码管上显示出来。3. 编程流程图4. 程序编码data segment ioport equ 200h io8255a equ 200h io8255cc equ 203h led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh mesg1 db 0dh,0ah, a num 09h,0dh,0ah, data ends code segment assume cscode,dsdata start mov ax,data mov ds,ax mov dx,io8255cc;使8255的A口为输出方式 mov al,80h out dx,al sss mov dx,offset mesg1 ;显示提示信息 mov ah,09h int 21hmov ah,01;从键盘接收字符 int 21h cmp al,0 ;是否小于0 jl exit ;若是则退出 cmp al,9 ;是否大于9 jg exit ;若是则退出 sub al,30h ;将所得字符的ASCII码减30H mov bx,offset led ;bx为数码表的起始地址 xlat ;求出相应的段码 mov dx,io8255a;从8255的A口输出 out dx,al jmp sss ;转SSS exit mov ah,4ch ;返回DOS int 21h code ends end start 5. 实验现象键盘输入数字,七段数码管显示相应的数字。6. 实验心得七段数码管有共阴极、共阳极之分,实验所用属于共阴极数码管,在数码段程序需弄清。实验五竞赛抢答器实验(2013年12月27日机电楼305)1. 实验目的1 了解微机化竞赛抢答器的基本原理。2 进一步学习使用并行接口。2. 实验内容图12为竞赛抢答器模拟的原理图,逻辑开关K0K7代表竞赛抢答按钮07号,当某逻辑电平开关置“1”时,相当某组抢答按钮按下。在七段数码管上将其组号07显示出,并使微机扬声器响一下。3. 编程流程图4. 程序编码data segment ioportequ 0d400h-0280h io8255aequ ioport28ah io8255bequ ioport28bh io8255cequ ioport288h led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h ;数码表0-7data endscode segment assume cscode,dsdatastartmov ax,data mov ds,ax mov dx,io8255b ;设8255为A口输出,C口输入 mov ax,89h out dx,al mov bx,offset led ;使BX指向段码首址sssmov dx,io8255a in al,dx ;从8255的C口输入数据 or al,al ;比较是否为0 je sss ;若为0,则表明无键按下,转sss mov cl,0ffh ;cl作计数器,初值为-1rrshr al,1 ;shr指令影响CF inc cl ;inc指令不影响CF,用于记录al右移到CF1的次数 jnc rr mov al,cl xlat mov dx,io8255c out dx,al mov dl,7 ;响铃 ASCII码为07 mov ah,2 int 21hwaimov ah,1 int 21h cmp al,20h ;是否为空格 jne eee ;不是,转eee mov al,0 ;是,关灭灯 mov dx,io8255c out dx,al jmp ssseeemov ah,4ch ;返回 int 21hcode ends end start5. 实验现象每次数码显示器只显示第一个按下的按钮,后来按下的按钮没有输入。6. 实验心得竞赛抢答器程序采用移位的方法控制编程。实验六步进电机控制实验(2013年12月27日机电楼305)1. 实验目的1 了解步进电机控制的基本原理。2 掌握控制步进电机转动的编程方法。2. 实验内容1 按图14连接线路,利用8255输出脉冲序列,开关K0K6控制步进电机转速,K7控制步进电机转向。8255 CS接288H28FH。PA0PA3接BABD;PC0PC7接K0K7。2 编程当K0K6中某一开关为“1”向上拨时步进电机启动。K7向上拨电机正转,向下拨电机反转。3. 程序流程图4. 程序编码data segment ioport equ 0c800h-0280h p55a equ ioport288h ;8255 a port output p55c equ ioport28ah ;8255 c port p55ctl equ ioport28bh ;8255 contrl port buf db 0 ;定义一个字节数据(用来存放开关状态)mes db k0-k6 are speed control,0ah,0dh db k6 is the lowest speed ,0ah,0dh db k0 is the highest speed,0ah,0dh db k7 is the direction control,0ah,0dh, ;在屏幕上输出一段符号,显示程序处于执行状态data endscode segmentassume cscode,dsdatastart mov ax,data mov ds,ax ;程序的初始化 mov dx,offset mes mov ah,09 int 21h dos功能,;调用显示字符串 mov dx,p55ctl mov al,8bh ;控制字01001011 c , a output out dx,al ;8255 a 初始化 mov buf,33h ;buf初始化为00110011bout1 mov al,buf ;将buf值置入al寄存器并经a口输出 mov dx,p55a out dx,al push dx mov ah,06h mov dl,0ffh int 21h ;判断是否有键按下 pop dx je in1 ;无键按下,执行扫描开关 mov ah,4ch int 21h ;有键按下,返回odsin1 mov dx,p55c in al,dx ;读取开关状态test al,00h jnz k0 test al,01h jnz k1 test al,02h jnz k2 test al,03h jnz k3 test al,04h jnz k4 test al,05h jnz k5 test al,06h jnz k6 zx0 call delay ;调用延时子程序 mov al,buf ror al,1 ;右移,正转 mov buf,al jmp out1 nx0 call delay ;调用延时子程序 mov al,buf rol al,1 ;左移,反转 mov buf,al jmp out1 delay proc near ;定义循环函数delaydelay1 mov cx,0ffffh delay2 loop delay2 dec bl jnz delay1 ret delay endp code ends end start 5. 实验现象K7控制电机的正反转,K0K6分别控制电机的一个转速。6. 实验心得及总结(用38线制控制电机的转速,K7控制正反转。)程序编程data segment ioport equ 0c800h-0280h p55a equ ioport288h ;8255 a port output p55c equ ioport28ah ;8255 c port p55ctl equ ioport28bh ;8255 contrl port buf db 0 ;定义一个字节数据(用来存放开关状态)mes db k0-k6 are speed control,0ah,0dh db k6 is the lowest speed ,0ah,0dh db k0 is the highest speed,0ah,0dh db k7 is the direction control,0ah,0dh, ;在屏幕上输出一段符号,显示程序处于执行状态data endscode segmentassume cscode,dsdatastart mov ax,data mov ds,ax ;程序的初始化 mov dx,offset mes mov ah,09 int 21h dos功能,;调用显示字符串 mov dx,p55ctl mov al,8bh ;控制字01001011 c , a output out dx,al ;8255 a 初始化 mov buf,33h ;buf初始化为00110011bout1 mov al,buf ;将buf值置入al寄存器并经a口输出 mov dx,p55a out dx,al push dx mov ah,06h mov dl,0ffh int 21h ;判断是否有键按下 pop dx je in1 ;无键按下,执行扫描开关 mov ah,4ch int 21h ;有键按下,返回odsin1 mov dx,p55c in al,dx ;读取开关状态test al,01h jnz k0 test al,02h jnz k1 test al,04h jnz k2 test al,08h jnz k3 test al,10h jnz k4 test al,20h jnz k5 test al,40h jnz k6 zx0 call delay ;调用延时子程序 mov al,buf ror al,1 ;右移,正转 mov buf,al jmp out1 nx0 call delay ;调用延时子程序 mov al,buf rol al,1 ;左移,反转 mov buf,al jmp out1 delay proc near ;定义循环函数delaydelay1 mov cx,0ffffh delay2 loop delay2 dec bl jnz delay1 ret delay endp code ends end start 该程序段实现了用三个开关控制电机的八个转速,通过开关的不同组合,实现不同的高低电平的组合,从而控制电机的不同转速。实验七用8255A芯片,将一组8个开关的状态读入,存到内存的某个位置,然后将读入的数据再利用8255A输出到一个LED显示器上显示(设开关的编号为07,每次利用LED显示编号最小的闭合开关序号,例如,当前序号为1和5的开关薄荷,则利用LED显示一个“1“)(2013年12月30日机电楼305)1. 实验目的;掌握8255方式0的工作原理及使用方法。2. 实验内容用8255A芯片,将一组8个开关的状态读入,存到内存的某个位置,然后将读入的数据再利用8255A输出到一个LED显示器上显示(设开关的编号为07,每次利用LED显示编号最小的闭合开关序号,例如,当前序号为1和5的开关薄荷,则利用LED显示一个“1“)3. 程序流程图4. 程序编码ioport equ 0c800h-280hio8255a equ ioport288hio8255c equ ioport28ahio8255k equ ioport28bhcode segment assume cscodestart mov dx,io8255k mov al,8bh out dx,alL1 mov dx,io8255cin al.dxmov cl,8L2 test al,01h jnz L3 shr al,1 loop L2L3 and al,01hror al,al mov dx,io8255a out dx,al mov ah,01h int 16h jz L1 mov ah,4ch int 21hcode ends end start5. 实验现象当只有一个开关闭合时,则与此开关相对应的LED灯亮;当有N个开关依次闭合是,则每次总是寻找到那个较小数所对应的LED灯亮起来。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值