北京邮电大学 微机原理软件实验3

时间:2019-05-15 10:13:27下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《北京邮电大学 微机原理软件实验3》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《北京邮电大学 微机原理软件实验3》。

第一篇:北京邮电大学 微机原理软件实验3

北京邮电大学

微机原理软件实验·第三次实验

题目一:

一、实验目的1、2、初步掌握中断程序的设计方法;

初步掌握修改 DOS 系统中断,以适应实际使用的方法。

二、实验内容

编一程序,在显示器上显示时、分、秒。借用计数器8253的Timer0作为中断源,通过8259A向CPU发中断,每10ms产生一次中断。在中断服务程序中管理刷新时、分、秒。

要求:

1、输入文件名(如:CLK)后清屏后显示:

2、Current time is: xx:xx:xx(时分秒键盘输入)

3、打回车,时、分、秒开始计时。时钟不停的刷新。

4、当键入CTRL+C时,停止计时,返回系统,且系统正常运行不死机。

提示:

8253的初始化程序段可借用。口地址为40H、41H、42H、43H,控制字为36H=00110110B,时间常数TC=11932:1.1932MHz/11932=100Hz,输出方波频率为100Hz,其周期为1000/100=10ms。

三、设计思路

1、开始程序流程图

重新在屏幕上打印时间是判断键盘缓冲区有无按键按下定义数据段和堆栈段回车是否按下判断内存中的时间是否被修改保存源中断向量否是秒表功能否否将timer子程序地址设置为中断向量显示字符串:“Now the time is:”是判断“S”是否按下否设置8253工作状态,使其输出方波100Hz判断设定时间是否符合规范否输出一条错误信息判断Ctrl+C是否按下是设置8259A工作状态输出一条提示信息,要求用户设定时间是退出程序

2、中断子程序流程图

子程序开始记下进入中断的次数判断次数是否为100是计数清零,修改内存中存储的时间查看是否有进位否进位调整结束

3、可能用到的指令

① STI 置中断允许位.CLI 清中断允许位.格式:CLI STI 功能:开关中断允许标志,用于在程序中防止中断嵌套,设置中断。

② STOS(STOre into String)存入串指令 格式:STOS DST STOSB //存放字节串(DI)= AL STOSW //存放字串(DI)= AX 执行操作:把AL或AX中的内容存放由DI指定的附加段的字节或字单元中,并根据DF值修改及数据类型修改DI的内容。字节操作:((DT))←(AL),(DI)←(DI)±1

4、① 字操作:((DI))←(AX),(DI)←(DI)±2无条件转移指令

IN输入指令

长格式为:IN AL,PORT(字节)IN AX,PORT(字)执行的操作:(AL)<-(PORT)(字节)(AX)<-(wPORT+1,PORT)(字)短格式为:IN AL,DX(字节)IN AX,DX(字)

OUT输出指令

长格式为:OUT PORT,AL(字节)OUT PORT,AX(字)执行的操作:(PORT)<-(AL)(字节)(PORT+1,PORT)<-(AX)(字)短格式为:OUT DX,AL(字节)OUT DX,AX(字)执行的操作:((DX))<-(AL)(字节)((DX)+1,(DX))<-AX(字)

设置中断向量 格式:

mov al,8 mov ah,25h int 21h DS:DX=中断向量 AL=中断类型号

查看中断向量 格式:

mov al,8

mov ah,35h AL=中断类型 ES:BX=中断向量

计数器芯片8253简介 初始化

使用8253前,要进行初始化编程。初始化编程的步骤是:

A向控制寄存器端口写入控制字对使用的计数器规定其使用方式等。B 向使用的计数器端口写入计数初值。

② 8253控制字

D7D6=00:使用0号计数器,D7D6=01:使用1号计数器

D7D6=10:使用2号计数器,D7D6=11:无效 D5D4=00:锁存当前计数值

D5D4=01:只写低8位(高8位为0),读出时只读低8位 D5D4=10:只写高8位(低8位为0),读出时只读高8位 D5D4=11:先读/写低8位,后读/写高8位计数值

D3D2D1=000:选择方式0,D3D2D1=001:选择方式1 D3D2D1=X10:选择方式2,D3D2D1=X11:选择方式3 D3D2D1=100:选择方式4,D3D2D1=101:选择方式5 D0=0:计数初值为二进制,D0=1:计数初值为BCD码数

四、源程序

data segment count100 db 100

;100个10ms=1s,此处count100起计数作用 msg1 db 'Please enter the current time(XX:XX:XX)!(Press ENTER to use default time)$' msg2 db 'Sorry,your date entered incorrectly ,please try again!$' msg3 db 'Now, the time is:',0ah,'(Press Ctrl+C to EXIT.)',0ah,'(Press Enter to use as a Stopwatch.)',0ah,'(Press S or s to set current time again.)(XX:XX:XX)$' msg4 db 0ah,'Program EXIT normally.$' tenhour db '0';小时十位数 hour db '0',':';小时个位数 tenmin db '0';分钟十位数 minute db '0',':';分钟个位数 tensec db '0';秒十位数 second db '0’;秒个位数 data ends

stack segment stack 'stack' db 256 dup(0)stack ends

code segment assume cs:code,ds:data,es:data

start: mov ax,seg data mov es,ax mov ds,ax

cli;使中断标志IF=0 mov al,8;保存源中断向量 mov ah,35h int 21h push es push bx

mov ax,0

mov es,ax;es置零,这是准备中断向量的写入 mov di,20h

mov ax,offset timer;中断子程序timer的偏移量 stows

;字符串填充,将AX的内容

;(timer偏移量)存入di所指向的单元,;di的增减取决于DF,默认段基址总是ES mov ax,cs

stosw;timer端基址

mov al,36h

out 43h,a;设置8253控制字为36H

mov bx,11932

;分频系数为11932,分频结

;果1.1932MHz/11932=100Hz,10ms变化一次

mov al,bl;分两次设置分频系数 out 40h,al

mov al,bh out 40h,al

mov al,0fch;主PIC端口设置为0fch out 21h,al

sti;开中断,允许外部中断

mov ax,seg data mov es,ax mov ds,ax

mov dx,offset msg1;打印提示信息1 mov ah,09h int 21h mov dl,0ah mov ah,02h int 21h

settime:mov si,offset tenhour;设定时间 mov ah,01h int 21h cmp al,0dh jz forever1 cmp al,'0' jc error2;如果输入不合法,报错 cmp al,'3' jnc error2 mov [si],al inc si cmp al,'2' jz ershi

mov ah,01h;如果小时高位为1,;低位可以设置0~9 int 21h cmp al,0dh jz forever1 cmp al,'0' jc error2 cmp al,'9'+1 jnc error2 mov [si],al inc si jmp fen

ershi: mov ah,01h;如果小时高位为2,低位可以设置0~4 int 21h cmp al,0dh jz forever1 cmp al,'0' jc error2 cmp al,'4' jnc error2 mov [si],al inc si jmp fen

fen: mov ah,01h;分高位可设置0~5 int 21h cmp al,0dh jz forever1 cmp al,':' jnz error1 mov [si],al inc si

mov ah,01h int 21h cmp al,0dh jz forever1 cmp al,'0' jc error1 cmp al,'6' jnc error1 mov [si],al inc si

zcy4: mov ah,01h;分低位0~9 int 21h cmp al,0dh jz forever1 cmp al,'0' jc error1 cmp al,'9'+1 jnc error1 mov [si],al inc si jmp zcy

settime2:jmp settime;用来跳转接力 error2: jmp error1 forever1:jmp next2

zcy: mov ah,01h;秒高位可设置0~5 int 21h cmp al,0dh jz forever1 cmp al,':' jnz error1 mov [si],al inc si

mov ah,01h int 21h cmp al,0dh jz forever1 cmp al,'0' jc error1 cmp al,'6' jnc error1 mov [si],al inc si

mov ah,01h;秒低位可设置0~9 int 21h cmp al,0dh jz forever1 cmp al,'0' jc error1 cmp al,'9'+1 jnc error1 mov [si],al inc si

jmp next2

error1: mov dl,0ah;用来报错:设置时间不合法 mov ah,02h int 21h

mov dx,offset msg2;打印提示信息2 mov ah,09h int 21h mov dl,0ah mov ah,02h int 21h

jmp settime

settime3: jmp settime2;跳转接力

next2: MOV AX,0003H;做时钟显示初始化 INT 10H;清屏显示 mov dl,0ah mov ah,02h int 21h mov dx,offset msg3;打印提示信息3 mov ah,09h int 21h mov dl,0ah mov ah,02h int 21h forever:mov bx,offset tenhour;这个程序段循环执行 mov cx,8 cmp tenhour,'2';如果超过24点,置为0点 jnz dispclk cmp hour,'4' jnz dispclk mov tenhour,'0' mov hour,'0' dispclk:mov dl,[bx];用来显示当前时间 call dispchar inc bx loop dispclk

;调用显示子程序,显示初始状态时间,;比如”11:11:11"

mov dl,0dh;输出一个换行 call dispchar

xor al,al;读键盘缓冲区 mov ah,0bh int 21h cmp al,0FFH jnz next3 mov ah,08h;取其字符 int 21h cmp al,03h;Ctrl+C退出 jz stop cmp al,'s';S/s设定时间 jz settime3 cmp al,'S' jz settime3 cmp al,0dh jnz next3 mov dl,0ah;回车则使用秒表功能 mov ah,02h int 21h jmp forever

next3: mov al,second

next: cmp al,second;判断second是否发生变化je next;如果没有,循环比较

jmp forever;如果有变化,刷新输出

stop: mov dx,offset msg4;打印提示信息4 mov ah,09h int 21h mov dl,0ah mov ah,02h int 21h

pop dx;恢复中断向量 pop ds mov al,8 mov ah,25h int 21h mov ah,4ch int 21h

timer proc far;中断程序timer push ax

dec count100;计数100次

jnz timerx;如果计数小于100,跳出中断 mov count100,100

;否则重置count100<=100;1s已经到达

inc second;加一秒 cmp second,'9'

;判断大小,用于进位,以下原理相同 jle timerx

mov second,'0' inc tensec cmp tensec,'6' jl timerx

mov tensec,'0' inc minute cmp minute,'9' jle timerx

mov minute,'0' inc tenmin cmp tenmin,'6' jl timerx

mov tenmin,'0' inc hour cmp hour,'9' ja adjhour cmp hour,'3' jnz timerx

cmp tenhour,'1' jnz timerx mov hour,'1' mov tenhour,'0'

jmp short timerx;段内短转移

adjhour:inc tenhour mov hour,'0' timerx: mov al,20h out 20h,al;主PIC口地址 pop ax;出栈恢复 iret;中断返回 timer endp

dispchar proc near;显示子函数 push bx mov bx,0 mov ah,02h

int 21h

;DOS功能调用,输出DL内容 pop bx ret

dispchar endp

code ends end start

五、实验结果(反色)

这幅图是运行程序之后,设定时间,输入的时间不合法的截图。当输入不合法的字符时,对弹出一条错误信息,然后要求重新输入时间。

这幅图是输入一个合法字符串后,时钟被设定为该值,并且正常计数的程序截图。

这幅图是在时钟运行的过程中,按下Enter键,进入秒表模式的截图。秒表模式,会将按下Enter的时间保存下来。

这幅图是在时钟运行的过程中,按下S键,进入设定模式的截图。该截图输入字符串不合法。当输入合法的字符串后,程序将清屏,这是截图和正常计时状态一样。

这幅图是按下Ctrl+C,程序正常退出的截图。程序正常退出后,与之前的运行情况完全一样,程序运行不死机。

六、实验总结:

这次微原实验是我设计比较大型的汇编程序,从如何使用8253/8255开始,到程序被完整调通为止,这个实验带给我的是对于课本第七章、第八章的知识更加清晰的认识与了解,和对于微机运行的原理的进一步认识。在这次实验中,我都要求自己先做整体思路规划,再去做代码实现,这样节省了我大量时间。也给我带来了很多收获。

整体的思路规划:我认识到,相比于直接闷头就上的编程方法,有一个好的整体思路规划,会节省很多后期的力气,对于任务的完成大有裨益。

严谨认真的代码风格:汇编语言的编译器不如C++等高级语言,当程序出错时,并不会给出错误。我们要有严谨的代码风格,才能保证效率。

学会调试:汇编语言的编译器较差,当程序出错时,我们要善用DEBUG工具,去认真地分析程序的每一部动向,找到问题所在。

回归课本基本概念:在编程的过程中,曾经出过一个bug,总是无法正常的进入计时中断Timer。经过我查阅课本,发现是8253的控制字设置有问题。这说明我对课本的内容掌握的还不够好,应该多多回归课本基本概念,才可以顺利的编程。

第二篇:北京邮电大学微机原理与接口技术硬件实验报告

信息与通信工程学院

微机原理与接口技术硬件实验报告

姓 学 序

级:

名:

号:

号:

期: 2015-10-30——2015-12-26 目录

实验一 I/O地址译码.............................................................................................................................3

一、实验目的............................................................................................................................3

二、实验原理及内容..............................................................................................................3

三、硬件接线图与软件程序流程图..................................................................................3

四、源程序.......................................................................................................................................4

五、实验结果..................................................................................................................................5

六、实验总结..................................................................................................................................5

七、实验收获与心得体会...........................................................................................................5 实验二简单并行接口..............................................................................................................................5

一、实验目的............................................................................................................................5

二、实验原理及内容..............................................................................................................5

三、硬件接线图与软件程序流程图........................................................................................6

四、源程序.......................................................................................................................................6

五、实验结果..................................................................................................................................7

六、实验总结..................................................................................................................................7

七、实验收获与心得体会...........................................................................................................7 实验四七段数码管..................................................................................................................................7

一、实验目的..................................................................................................................................7

二、实验原理及内容....................................................................................................................8

三、硬件接线图与软件程序流程图........................................................................................8

四、源程序.......................................................................................................................................9

五、实验结果...............................................................................................................................11

六、实验总结...............................................................................................................................11

七、实验收获与心得体会........................................................................................................11 实验八可编程定时器/计数器(8253/8254).........................................................................11

一、实验目的...............................................................................................................................11

二、实验原理及内容.................................................................................................................11

三、硬件接线图与软件程序流程图.....................................................................................12

四、源程序....................................................................................................................................13

五、实验结果...............................................................................................................................17

六、实验总结与思考题............................................................................................................17

七、实验收获与心得体会........................................................................................................17 实验十六串行通讯8251....................................................................................................................18

一、实验目的...............................................................................................................................18

二、实验原理及内容.................................................................................................................18

三、硬件接线图与软件程序流程图.....................................................................................18

四、源程序....................................................................................................................................19

五、实验结果...............................................................................................................................22

六、实验总结与思考题............................................................................................................22

七、实验收获与心得体会........................................................................................................22

实验一 I/O地址译码

一、实验目的

掌握I/O地址译码电路的工作原理。

二、实验原理及内容

1、实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:280H~287H,Y1:288H~28FH,„„当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。例如:执行下面两条指令 MOV DX,2A0H OUT DX,AL(或IN AL,DX)

Y4输出一个负脉冲,执行下面两条指令 MOV DX,2A8H OUT DX,AL(或IN AL,DX)Y5输出一个负脉冲。

利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、„„),时间间隔通过软件延时实现。

2、接线: Y4/IO地址接 CLK/D触发器 Y5/IO地址接 CD/D触发器

D/D触发器接 SD/D角发器接 +5V Q/D触发器接 L7(LED灯)或逻辑笔

三、硬件接线图与软件程序流程图

硬件连接图如下: 程序流程图如下:

四、源程序

CODE SEGMENT

ASSUME CS:CODE ;定义代码段

START:

MOV DX,2A0H

;选通Y4

OUT DX,AL

CALL DELAY

;延时

MOV DX,2A8H

;选通Y5

OUT DX,AL

CALL DELAY ;延时

MOV AH,1H

INT 16H;01号功能调用,从键盘接收按键 JZ START

;无键按下,返回START MOV AH,4CH;有键按下,返回DOS系统 INT 21H

DELAY PROC NEAR

;延时子程序,循环系数为100

MOV BX,100 LOOP1: MOV CX,0

LOOP2: LOOP LOOP2

DEC BX

JNZ LOOP1

RET

DELAY ENDP

CODE

ENDS

END START

五、实验结果

按下键盘时L7闪烁发光,交替亮灭。

六、实验总结

实验一开始时不理解怎样选通Y4和Y5的地址,对整个接口电路分析后才明白了译码电路真正的原理。

七、实验收获与心得体会

本次实验主要了解了端口的输出,D触发器作为一个外部端口实现了向D触发器内写值并正确输出,控制灯泡亮灭,实现了译码功能。对I/O接口有了更深的理解,对以后的实验很有帮助。这次实验是第一次用汇编语言来让硬件实现功能,和之前学过的C++有很大的区别,也让我进一步看到了他们的不同之处。

实验二简单并行接口

一、实验目的

掌握简单并行接口的工作原理及使用方法。

二、实验原理及内容

1、按下面图4-2-1简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7。

2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。

3、按下面图4-2-2简单并行输入接口电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7。

4、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。

5、接线:1)输出

按图4-2-1接线(图中虚线为实验所需接线,74LS32为实验台逻辑或门)2)输入

按图4-2-2接线(图中虚线为实验所需接线,74LS32为实验台逻辑或门)

三、硬件接线图与软件程序流程图

硬件连接图如下:

图4-2-1

图4-2-2

程序流程图如下:

四、源程序 CODE SEGMENT;定义代码段 ASSUME CS:CODE START:MOV AH,1 INT 21H;从键盘检测输入 CMP AL,00011011B JZ EXIT MOV DX,2A8H;送出ASCII码 OUT DX,AL MOV DX,2A0H;读入ASCII码 IN AL,DX MOV DL,AL MOV AH,02H;屏幕显示ASCII码 INT 21H JMP START;循环检测

EXIT:MOV AX,4C00H;返回DOS INT 21H CODE ENDS END START

五、实验结果

从键盘输入字符或数字,若不是Esc键,则二极管显示其ASCII码情况,若按下ESC,则返回dos,且各LED灯灭。

六、实验总结

实验一开始不太明白如何把输入的字符通过二极管显示出来,后来参考了实验一的译码输出,理解了实验原理。

七、实验收获与心得体会

这次实验是对I/O接口译码电路的运用,进一步熟悉了译码电路、键盘输入检测等功能的运用,让我很好的明白了CPU的地址总线与外部接口是如何工作,也进一步了解了硬件实验,希望在以后的实验中有更多的收获。

实验四七段数码管

一、实验目的

掌握数码管显示数字的原理

二、实验原理及内容

1、静态显示:按4-4-1连接好电路,将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端a~dp相连,位码驱动输入端S0、S1、S2、S3接PC0、PC1、PC2、PC3,编程在数码管显示自己的学号的后四位。(或编程在数码管上循环显示“00-99”,位码驱动输入端S0、S1 接PC0、PC1;S2、S3接地。)

2、接线: PA7~PA0/8255 接dp~a/LED数码管 PC3~PC0/8255 接 S3~S0/LED数码管 CS/8255 接 Y1/IO地址

三、硬件接线图与软件程序流程图

硬件连接图如下:

程序流程图如下:

四、源程序

DATA SEGMENT;定义代码段 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV DX,28BH;控制口地址

MOV AL,80H;控制字10000000设定工作方式0,所有口都置为输出

OUT DX,AL

LOP1: MOV DX,288H ;A口地址

MOV AL,3fH;段选写0 OUT DX,AL

MOV DX,28AH;位选第4个LED,C口地址

MOV AL,08H OUT DX,AL

MOV DX,28AH;熄灭数码管

MOV AL,0 OUT DX,AL

MOV DX,288H;段选写3 MOV AL,4fH OUT DX,AL

MOV DX,28AH ;位选第3个LED MOV AL,04H OUT DX,AL

MOV DX,28AH;熄灭数码管

MOV AL,0 OUT DX,AL

MOV DX,288H ;段选写0 MOV AL,3fH OUT DX,AL

MOV DX,28AH;位选第2个LED MOV AL,02H OUT DX,AL

MOV DX,28AH ;熄灭数码管

MOV AL,0 OUT DX,AL

MOV DX,288H ;段选写0 MOV AL,3fH OUT DX,AL

MOV DX,28AH ;位选第1个LED MOV AL,01H OUT DX,AL

MOV DX,28AH ;熄灭数码管 MOV AL,0 OUT DX,AL

MOV AH,01H INT 16H JNZ EXIT;有键输入则退出

JMP LOP1 EXIT: MOV AX,4C00H;返回DOS INT 21H CODE ENDS END START

五、实验结果

结果显示了学号的后四位0300,如下如所示:

当有键盘输入时,返回DOS系统。

六、实验总结

本次实验用了8255并行接口芯片,采用方式0,所有口都用输出模式,A口为段选,控制输出的数据,C口为位选,控制不同的位不断扫描、交替亮灭。

七、实验收获与心得体会

这次实验在前两次实验的基础上,用到了并行接口芯片和数码管,在数码管上显示数据,在8255工作在方式0时,用两个输出端口,控制数码管工作,数码管在之前数电实验的基础上比较好理解,这次实验较之前的实验更有难度,不过学到了很多知识,由于理论还没有讲到8255,实验有一定难度,不过对理论课也有一定的帮助。

实验八可编程定时器/计数器(8253/8254)

一、实验目的

学习掌握8253用作定时器的编程原理;

二、实验原理及内容

1.8253初始化

使用8253前,要进行初始化编程。初始化编程的步骤是: ①向控制寄存器端口写入控制字对使用的计数器规定其使用方式等。②向使用的计数器端口写入计数初值。2.8253控制字

D7D6=00:使用0号计数器,D7D6=01:使用1号计数器 D7D6=10:使用2号计数器,D7D6=11:无效 D5D4=00:锁存当前计数值

D5D4=01:只写低8位(高8位为0),读出时只读低8位 D5D4=10:只写高8位(低8位为0),读出时只读高8位 D5D4=11:先读/写低8位,后读/写高8位计数值

D3D2D1=000:选择方式0,D3D2D1=001:选择方式1 D3D2D1=X10:选择方式2,D3D2D1=X11:选择方式3 D3D2D1=100:选择方式4,D3D2D1=101:选择方式5 D0=0:计数初值为二进制,D0=1:计数初值为BCD码数

3.实验内容

完成一个音乐发生器,通过喇叭或蜂鸣器放出音乐,并在数码管上显示乐谱。利用小键盘实现弹琴功能,并显示弹奏的乐谱。

三、硬件接线图与软件程序流程图

接线图如下:

CS /8253 接 Y0 /IO 地址 GATE0 /8253 接 +5V CLK0 /8253 接 1M时钟

OUT0 /8253 接喇叭或蜂鸣器 程序流程图如下:

四、源程序

DATA SEGMENT FENPIN DW 0001H,3906,3472,3125,2932,2604,2344,2083,1953;分频比 DIGITAL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH;数码管 MUSIC DB 5,3,5,3,5,3,1,1,2,4,3,2,5,5,5,5,5,3,5,3,5,3,1,1,2,4,3,2,1,1,1,1,2,2,4,4,3,1,5,5;存放播放的乐曲音符

NUM DB 00H,070H,0B0H,0D0H,0E0H ;检测键盘输入 DATA ENDS

STACK SEGMENT STACK 'STACK' DB 100 DUP(?)STACK ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK

;延时子程序

DELAY PROC NEAR PUSH CX MOV CX,100H WAIT0: LOOP WAIT0 POP CX RET DELAY ENDP

;延时子程序2 DELAY1 PROC NEAR PUSH CX MOV CX,0FFFFH WAIT1: LOOP WAIT1 POP CX RET DELAY1 ENDP

;获取键盘输入值的子程序 KEY PROC NEAR PUSH AX ;保护现场 PUSH CX PUSH DX MOV CX,01H CHECK: MOV DX,28AH ;C口地址给DX MOV BX,OFFSET NUM ADD BX,CX MOV AL,[BX] OUT DX,AL ;防抖

IN AL,DX ;判断是否有键盘按下 MOV AH,AL CALL DELAY IN AL,DX CMP AL,AH JNZ CHECK ;不相等说明为抖动,重新检测 ;判断按下的列

AND AL,0FH CMP AL,0FH JZ NEXT CMP AL,0EH JZ NEXT1 CMP AL,0DH JZ NEXT2 CMP AL,0BH JZ NEXT3 MOV BX,01H JMP GOT NEXT: INC CX ;修改变量扫描下一行 CMP CX,05H JNZ JUMP1 MOV CX,01H JUMP1: JMP CHECK NEXT1: MOV BX,04H JMP GOT NEXT2: MOV BX,03H JMP GOT NEXT3: MOV BX,02H

;计算按下键盘的数值

GOT: SUB CX,01H MOV AL,CL MOV DL,04H MUL DL ADD BL,AL SUB BL,01H ;此时BX中所存即为对应的偏移量 POP DX ;恢复现场 POP CX POP AX RET KEY ENDP

;主程序

START: MOV AX,DATA MOV DS,AX ;8253初始化

MOV DX,283H MOV AL,36H控制字为00110110,选计数器0,先读低字节再读高字节,选用工作方式3 OUT DX,AL ;8255初始化

MOV DX,28BH MOV AL,81H ;C口输入(10000001)

OUT DX,AL MOV DX,289H ;B口位选数码管

MOV AL,01H OUT DX,AL ;扫描键盘

LOOP1: CALL KEY CMP BX,0 ;按0播放音乐 JZ PLAY0 CMP BX,9 ;按9退出 JZ EXIT ;按1~8发出对应音 MOV CX,BX MOV BX,OFFSET DIGITAL ;数码管显示音符 ADD BX,CX MOV AL,[BX] MOV DX,288H ;A口输出 OUT DX,AL ;播放该音符

MOV BX,OFFSET FENPIN MOV AX,CX ADD AX,AX ADD BX,AX ;计数,先低八位后高八位 MOV AX,[BX] MOV DX,280H OUT DX,AL MOV AL,AH OUT DX,AL CALL DELAY1 CALL DELAY1

MOV DX,28AH ;C口输入 IN AL,DX ;检测键盘是否弹起 MOV AH,AL LOOP2: CALL DELAY IN AL,DX CMP AL,AH JZ LOOP2 ;初始化8253,停止播放音乐 MOV AX,0H MOV DX,283H MOV AL,36H OUT DX,AL JMP LOOP1

;播放音乐

PLAY0: MOV CX,01H PLAY: PUSH CX

;读取音符,存于CX中

MOV BX,OFFSET MUSIC ADD BX,CX MOV AL,[BX] MOV CL,AL MOV CH,0H ;数码管显示

MOV BX,OFFSET DIGITAL ADD BX,CX MOV AL,[BX] MOV DX,288H OUT DX,AL

;播放该乐符

MOV BX,OFFSET FENPIN MOV AX,CX ADD AX,AX ADD BX,AX ;计数,先低八位后高八位 MOV AX,[BX] MOV DX,280H OUT DX,AL MOV AL,AH OUT DX,AL POP CX ;延时,持续播放

MOV AX,90H LOOP3: CALL DELAY1 DEC AX JNZ LOOP3 ;乐曲未结束时,CX加1 INC CX CMP CX,28H;共40个音符 JNZ JUM JMP LOOP1 JUM: JMP PLAY

EXIT: MOV AL,0 MOV DX,288H OUT DX,AL MOV AX,4C00H INT 21H

CODE ENDS END START

五、实验结果

按下键盘0,播放歌曲“粉刷匠”,数码管显示相应的音符;按下小键盘的1——8,喇叭播放所对应的音符,数码管显示按下的音符;按下键盘的9时,数码管熄灭,返回DOS系统。

六、实验总结与思考题

实验主要用了8253计数器,其工作在方式3下,作为方波发生器,产生不同音符的不同频率的方波。根据音符频率和1M的时钟确定输入频率,检测键盘的输入,判断输入的字符,8253产生相应的频率,喇叭播放音符,数码管输出按下的音符。实验的难点在于怎样判断键盘的输入。

思考题:写出8253计数初值,输入频率和输出频率的关系:

答:输出频率 = 输入频率/8253计数初值

七、实验收获与心得体会

这次实验较之前的实验难度较大,用到了8255、8253、数码管,是个相对来说系统点的实验,这也使得代码在实现起来比较多而复杂。一开始实验时不理解8255计数器的工作原理,对音符如何通过喇叭显示出来也不明白,在弄清楚了他们的原理和相互之间的联系之后,才慢慢理解。实验的内容要求编一小段音乐,虽然实验很难,但是也增加了我们对实验的兴趣。实验十六串行通讯8251

一、实验目的

1、了解串行通讯的基本原理。

2、掌握串行接口芯片8251的工作原理和编程方法。

二、实验原理及内容

1、按下图连接好电路,(8251插通用插座)其中8254计数器用于产生8251的发送和接收时钟,TXD和RXD连在一起。

2、编程: 从键盘输入一个字符,将其ASCII码加 1 后发送出去,再接收回来在屏幕上显示,(或将内存制定区域内存放的一批数据通过8251A的TXD发送出去,然后从RXD接收回来,并在屏幕上或数码管上显示出来。)实现自发自收。

3、接线: CLK0 /8254 接 1M时钟 GATE0 /8254 接 +5V 0UT0 /8254 接 TX/RXCLK /8251 CS /8254 接 Y0 /IO地址 CS /8251 接 Y7 /IO地址 RXD /8251 接 TXD /8251

三、硬件接线图与软件程序流程图

硬件接线图如下: 程序流程图如下:

四、源程序

DATA SEGMENT;定义数据段

STRING DB 'SEND ','$';定义字符串 STRING1 DB 'RECEIVE ','$' STRING2 DB 0DH,0AH,'$'

DATA ENDS

STACK SEGMENT STACK 'SATCK';定义堆栈段

DB 100 DUP(?)STACK ENDS

CODE SEGMENT;定义代码段

ASSUME CS:CODE,DS:DATA,SS:STACK

;延时子程序

DELAY PROC NEAR PUSH CX MOV CX,100H WAIT0: LOOP WAIT0 POP CX RET DELAY ENDP

START: MOV AX,DATA MOV DS,AX;8254初始化

MOV DX,283H MOV AL,16H;(00010110)计数器0,只读低字节,方式3,二进制 OUT DX,AL CALL DELAY MOV DX,280H;计数器0,初值为52 MOV AL,34H;初值52 OUT DX,AL CALL DELAY;8251初始化

MOV DX,2B9H;控制端口地址

MOV AL,40H;(01000000)内部复位命令 OUT DX,AL NOP CALL DELAY MOV AL,5E;(01011110)方式控制字:波特率因子为16,一位停止位,一位奇校

验的异步方式

OUT DX,AL MOV AL,37H;(00110111)命令控制字 OUT DX,AL CALL DELAY

;发送数据

GOON: MOV DX,2B9H;读状态字 IN AL,DX TEST AL,01H ;检测是否可以发送字符 JZ GOON

;显示提示语句 MOV AH,09H MOV DX,OFFSET STRING INT 21H

MOV AH,01H INT 21H;检测是否为ESC键 CMP AL,1BH JZ EXIT INC AL;加1

MOV DX,2B8H;访问数据寄存器 OUT DX,AL;接收数据

RECEIVE: MOV DX,2B9H ;读状态字 IN AL,DX TEST AL,02H ;检测是否收到新数据 JZ RECEIVE

;显示提示语句 MOV AH,09H MOV DX,OFFSET STRING2 INT 21H MOV AH,09H MOV DX,OFFSET STRING1 INT 21H

MOV DX,2B8H IN AL,DX MOV DL,AL MOV AH,02H;显示接收的数据 INT 21H MOV AH,09H MOV DX,OFFSET STRING2 INT 21H JMP GOON ;不断的发送读写

EXIT: MOV AX,4C00H;返回DOS INT 21H

CODE ENDS END START

五、实验结果

实验结果如上图所示,输出字符为输入字符的下一个,可以连续的发送接收,按下Esc健时,返回DOS。

六、实验总结与思考题

实验用到了串行通信接口芯片8251A,采用异步方式,确定了方式控制字。8254计数器的计数初值=时钟频率/(波特率×波特率因子),这里的时钟频率接 1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。

实验的难点在于发送和接收,当TxRDY为高电平时发送缓存区空,此时可以写入数据,8251A与01进行与运算,若结果为1表示可以发送数据;当RxRDY为高电平时接收缓存区满,此时可以读数据,8251A与10进行与运算,若结果为1表示可以接收数据。

思考题:在实验中,你如何确定RxC,TxC的值,写出计算公式 答:RxC=TxC=8253输出时钟频率=8251波特率*波特率因子

七、实验收获与心得体会

这次实验主要用了串行接口8251A,相比并行接口较为简单,还用到了计数器8253,又加强了对其的了解,这次实验课是在理论课刚上完之后,对8251A的理解也比较到位,所以整个实验都进行的比较顺利,对理论课不太懂得知识,经过实验后也都弄得比较清楚。这是硬件实验的最后一次,用到了两个芯片,还是比较系统的。这学期的硬件实验让我提高了自己的实际操作能力,帮助更好的理解了理论课所学的知识,也对汇编语言有了更直观的了解,收获了很多。

第三篇:北京邮电大学通信原理复习计划

北邮通信原理复习计划

一 考研数据分析

北京邮电大学信息与通信工程学院每年得招生人数每年都在700人左右(其中保送生150人左右),2010年的招生人数可上北邮主页上查询。2005年初试分数线300分,2006年初试分数线320分,2007年初试分数线305分,2008年初试分数线320分,2009年初试分数线300分,注意,这个只是复试分数线,也就是参加复试同学中的最低分数,实际录取分数因每个组的情况不同而不同,最高的有370+,低的也有才330+的。

二 复习计划

因为你们暑假要上为期大概一个月的课程,所以暑假期间就不加重你们的负担,但上课结束后就得全身心的开始复习专业课。

具体复习过程分为三个阶段: 第一阶段:8月20日到10月19日

本阶段的主要任务是过一遍课本,先不要做课后习题,但可以稍微看一下,大致了解一下方向和难度,为第二遍看书做相关的准备,各章节的时间和精力分派参照各章节的星级水平,但告诫各位第一遍最好是同等对待,因为通原的考试范围就是书上所涉及的所有内容,各章节的星级水平划定只是根据以往真题得来的,所以该看的都得看。

第二阶段:10月20日至12月19日之前是强化阶段

此阶段是真个复习期间中最重要的时间段,此过程完成的好坏将直接影响最后卷面成绩,所以各位要用心对待,至于复习时间可以根据个人情况进行适当的延长;具体复习内容是先看书,再做习题集,一遍不够可以多来几次。

第三阶段:12月20日开始是冲刺阶段

此阶段主要是做最后的总结,连串知识点和做历年真题。三 《通信原理》知识点分析

第一章 序论

通信系统基本模型★

第二章 第三章 预备知识

1.自相关函数与功率谱密度★★★★★

2.互相关函数与互谱密度★

3.Hilbert变换的定义与性质★★ 4.解析信号的定义与性质★★★

5.带通信号的表示法、复包络、带通系统的等效基带分析★★★ 6.随机过程的平均自相关函数、平均功率谱密度、循环平稳过程★ 7.窄带平稳高斯噪声:定义、表示式、正交分量与同相分量的统计特性、幅度和相位的统计特性。★★★

第三章 模拟调制

1.DSB-SC的原理、信号表达式、波形特点、调制解调方法、频谱分析(确定信号、随机信号)、带宽计算、抗噪声性能分析★★★

2.AM的原理、信号表达式、波形特点、调制解调方法、频谱分析(确 定信号、随机信号)、带宽计算、抗噪声性能分析★★★

3.SSB的原理、信号表达式、波形特点、调制解调方法、频谱分析(确定信号、随机信号)、带宽计算、抗噪声性能分析★★★

4.VSB的原理、信号表达式、波形特点、调制解调方法、频谱分析(确定信号、随机信号)、带宽计算、抗噪声性能分析★★★

5.PM、FM的原理、信号表达式、调制指数、相位偏移常数、频率偏移常熟、PM和FM的关系。单音频角度调制信号的频谱分析及带宽计算。信号表达式、波形特点、调制解调方法、频谱分析(确定信号、随机信号)、带宽计算、抗噪声性能分析★★★

6.窄带调角信号表达式及其在间接调频中的作用★★★★ 7.调频方法(直接调频、间接调频)。定性了解鉴频方法(普通鉴频器、锁相鉴频器)。

8.FM在大信噪比下的信噪比分析。输出噪声的抛物线特征。★★ 9.FMD的原理和典型应用实例。★★ 第4章 数字

1.信息速率/码元速率、比特间隔/码元间隔、误比特率/误符号率、频带利用率。★★★★★

2.数字PAM信号的表达式、常用的数字PAM信号(单双极性的RZ/NRZ、差分码、多电平码)★★★

3.PAM信号的功率谱密度分析,功率谱密度的基本特点。★★

4.线路码型的目的。AMI、HDB3码、Manchester码的编解码规则、信号特点(时域、频域)。★★★ 5.数字基带信号的接收原理、利用低通或匹配滤波器接收时的误码率分析、最佳门限问题。★★★★★

6.码间干扰的概念、奈奎斯特准则、奈奎斯特极限、升余弦滚降★★★★★

7.最佳基带系统★★★★★

8.眼图的测量方法、眼图所体现的信息★★

9.定性了解均衡的目的、时域线性均衡的基本原理、ZF和MMSE准则的含义、DFE的概念、自适应均衡的概念。★★

10.部分响应系统的目的,相关编码和预编码的原理和作用。第I类和第IV类部分响应系统中具体的编码规则、频域及时域特性。★★

11.符号同步的概念,符号同步的基本方法:线谱法,超前-滞后法★★ 第5章 数字频带传输

1.OOK、2FSK的原理、信号表达式、调制解调框图(限带/非限带,相干/非相干,最佳/非最佳)、功率谱分析、带宽计算、相干解调的误码率分析。定性了解非相干解调的误码率分析。★★★★★

2.BPSK的原理、信号表达式、调制解调框图(限带/非限带,最佳/非最佳)、功率谱分析、带宽计算、误码率分析;相干载波提取:平方环、Costas环。相位模糊问题。★★★

3.DPSK的原理和解调方法(相干/非相干),误码率(差分相干只做定性要求)★★★★★★

4.QPSK的原理、信号表达式、调制解调框图、功率谱、误码率分析;格雷映射。误比特率与误符号率。★★★★ 5.定性了解DQPSK的原理。★★ 6.OQPSK的目的,方法。★★

7.信号空间的概念,归一化正交基函数,M元信号的矢量表示★★★★ 8.最佳接收理论,MAP准则/ML准则;★★★

9.AWGN信道中M进制确定信号的最佳接收,匹配滤波器和相关器的等价性。★★★★★

10.MASK、MPSK、MQAM的星座图、信号表达式、调制解调框图、功率谱密度、相干解调时误符号率分析方法。★★★★

11.了解MFSK的矢量表示、波形相关系数、最佳接收框图、带宽计算。定性了解误码率随M增加而减小的特性★★★

12.MSK的原理、相位路径、正交表达式、功率谱密度及误码率★ 13.定性了解GMSK的简单概念★ 第6章 模拟信号的数字化

1.低通及基带信号的抽样定理;★★★★ 2.TDM原理★★★★

3.标量量化:均匀量化及最佳量化的原理及性能分析★★★

4.对数压缩:A律u律压缩的目的、A律十三折线编码规则★★★ 5.定性了解DPCM及增量调制的★★ 第7章 信道及信道容量

1.信道的实例和模型★★

2.多经衰落(平衰落和频率选择性衰落,时延扩展,相关带宽,多普勒扩展,相干时间)★★★★

3.抗衰落的一般措施★★★ 4.分集接受的基本原理★★★

5.信道容量的分析(二元无记忆对称信道,AWGN信道)★★★ 6.信道的复用★★★★ 第8章 信道编码

1.信道编码的基本概念★★ 2.线性分组码★★★★★

基本概念★★★★

生成矩阵和监督矩阵★★★★★

对偶码★★

系统码的编码和译码★★★★★

汉明码★★

3.循环码★★★★★

基本概念★★★★

多项式描述基本概念★★★★★

生成多项式和生成矩阵基本概念★★★★★

监督多项式和监督矩阵★★★★★

编码电路★★★★★

译码电路★★

编码的加长和缩短★

循环冗余检验★★

4.卷积码的编码和译码★★★★★ 5.BCH码,纠正突发错误码,交织,级联码,Turbo码,高效率信道编码TCM和LDPC★★★

第9章 扩频通信

1.瑞德麦彻码及其性质★★ 2.沃尔什码及其性质★★★ 3.正交码的应用★★★★

4.m序列的产生及性质,自相关特性★★★★★

5.直接序列扩频的原理,功率谱密度,四种抗干扰性能★★★★★ 第10章 正交频分复用多载波调制技术

1.OFDM多载波调制技术的基本原理★★★★★ 2.OFDM调制的熟悉实现★★★★★ 3.循环前缀★★★★

4.OFDM系统的收发信机★★★ 5.OFDM系统的峰均比★★★

6.载波频率偏移对子载波间干扰的影响★★★★ 7.OFDM系统的应用★★ 第11章 通信系统的优化

1.通信系统优化的物理与数学模型★★★ 2.通信系统单指标下的优化★★★★

3.基于AWGN信道在可靠指标下的优化★★★

4.随参信道通信系统在可靠指标下优化的思路★★ 第12章 通信网的基本知识★

第四篇:北京科技大学微机原理实验报告

微机原理及应用实验报告

学院: 班级: 学号: 姓名:

微机实验报告书(Ⅰ)学号:姓名:班级: 同组名单:实验日期:

实验题目:8253可编程定时器计数器

实验目标:掌握8253的基本工作原理和编程方法 实验步骤:

连接电路图

如图虚线连接电路,将计数器0设置为方式0,计数器初值为N(N<=0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。程序框图:

程序清单:

;*************************;;* 8253方式0计数器实验 *;;*************************;IOPORT

EQU

0C800H-0280H

IO8253A EQU

IOPORT+283H

IO8253B EQU

IOPORT+280H

CODE SEGMENT

ASSUME

CS:CODE

START: MOV

AL,00010000B

;设置8253工作方式

MOV

DX,IO8253A

OUT

DX,AL

MOV

DX,IO8253B

;送计数初值为0FH

MOV

AL,0FH

OUT

DX,AL

LLL: IN

AL,DX

;读计数初值

CALL

DISP

;调显示子程序

PUSH

DX

MOV

AH,06H

MOV

DL,0FFH

INT

21H

POP

DX

JZ

LLL

;跳转到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码加37H

NUM: ADD

DL,30H

MOV

AH,02H

;显示

INT

21H

MOV

DL,0DH

;加回车符

INT

21H

MOV

DL,0AH

;加换行符

INT

21H

POP

DX

RET

;子程序返回

DISP ENDP

CODE ENDS

END

START 运行结果:

每输入一个单脉冲,屏幕上的数值减1,从15减到0后(拨动16次后),检测到OUT0输出由低电平变为高电平。小结(体会与收获):

通过预习和实验,学会了 8253 芯片和微机接口原理和方法,掌握 8253 定时器/计数器的基本工作原理、工作方式和编程原理,熟悉了汇编代码的编写。实验中,连接电路,利用代码控制实验电路,深对了课本理论的理解。

由于是第一次实验,进程比较缓慢,所以仅进行了8253可编程定时器/计数器的一个实验,下次实验会熟练一些。

微机实验报告书(Ⅱ)

学号:姓名:班级: 同组名单:实验日期:

实验题目:1.8253可编程定时器计数器

2.8255可编程并行接口(方式0)3.七段数码管

实验目标:1.掌握8253的基本工作原理和编程方法

2.掌握8255方式0的工作原理及使用方法 3.掌握数码管显示数字的原理

实验步骤: 实验一:

连接电路图

按上图连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1HZ)。实验二:

连接电路图

1)实验电路如图,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。

2)编程从8255C口输入数据,再从A口输出。实验三:

连接电路图

静态显示:按图连接好电路,将8255的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接+5V(选中), S0、dp接地(关闭)。编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。程序框图: 实验一:

实验二:

实验三:

程序清单: 实验一:

;*******************;* 8253分频 *;******************* IOPORT EQU

0C800H-0280H

IO8253A EQU

IOPORT+283H

IO8253B EQU

IOPORT+280H

IO8253C EQU

IOPORT+281H

CODE SEGMENT

ASSUME

CS:CODE

START: MOV

DX,IO8253A;向8253写控制字

MOV

AL,36H

;工作方式

OUT

DX,AL

MOV

AX,1000

;写入循环计数初值1000

MOV

DX,IO8253B

OUT

DX,AL

;先写入低字节

MOV

AL,AH

OUT

DX,AL

;后写入高字节

MOV

DX,IO8253A

MOV

AL,76H

;设工作方式

OUT

DX,AL

MOV

AX,1000

;写入循环计数初值1000

MOV

DX,IO8253C

OUT

DX,AL

;先写低字节

MOV

AL,AH

OUT

DX,AL

;后写高字节

MOV

AH,4CH

;程序退出

INT

21H

CODE ENDS

END

START

实验二:

;*************************;;* 8255A的基本输入输出 *;;*************************;IOPORT EQU 0C800H‐280H IO8255A EQU IOPORT+288H IO8255B EQU IOPORT+ 28BH IO8255C EQU IOPORT+28AH CODE SEGMENT ASSUME CS:CODE START: MOV DX,IO8255B;对 8255 进行设定,A 输出,C 输入

MOV AL,10001001B

OUT DX,AL INPUT: MOV DX,IO8255C;从 C 输入

IN AL,DX

MOV DX,IO8255A;从 A 输出

OUT DX,AL

MOV DL,0FFH;判断是否有按键

MOV AH,06H

INT 21H

JZ INPUT;若无,则继续 C 输入,A 输出

MOV AH,4CH;否则,返回 DOS

INT 21H CODE ENDS END START 实验三:

;************************************;;*键盘输入数据(0-9)控制LED数码管显示*;;************************************;

DATA

SEGMENT

IOPORT

EQU

0C800H-280H IO8255A

EQU

IOPORT+288H IO8255B

EQU

IOPORT+28BH IO8255C

EQU

IOPORT+28AH

LED

DB

3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

MESG1

DB

0DH,0AH,'Input a num(0--9),other key is exit:',0DH,0AH,'$' DATA

ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:

MOV

AX,DATA

MOV

DS,AX

MOV

DX,IO8255B

;使 8255 的A口为输出方式

MOV

AX,10000000B

OUT

DX,AL

SSS:

MOV

DX,OFFSET MESG1

;显示提示信息

MOV

AH,09H

INT

21H

MOV

AH,01

;从键盘接收字符

INT

21H

CMP

AL,30H

;是否小于 0

JL

EXIT

;若是则退出

CMP

AL,39H

;是否大于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

;返回

INT

21H CODE

ENDS

END

START;

运行结果: 实验一:

8253通道0和通道1均工作在方式3,计数初值均为1000。通道0的时钟输入为1MHz标准脉冲,产生1000Hz的方波;通道1以通道0输出的1000Hz方波脉冲为输入,产生1Hz的方波。用逻辑笔发现,OUT1 输出电平呈规律性高低变化(显示灯闪烁),时间间隔为 1s,说明输出频率为 1Hz,实现计时器功能。实验二:

当逻辑开关K0~K7中的一个或几个打开时,对应的LED灯就会亮起来,即利用8255A实现了基本的输入输出控制。实验三:

静态显示:当从键盘输入0~9任一数字时,七段数码管上便 会显示相应的数字,按下其他按键则退出程序。小结(体会和收获):

通过本次实验,进一步了解了8253可编程定时器/计数器;巩固了可编程并行接口8255的基本知识点,了解了该芯片的应用。通过编程实现,熟悉了8255方式控制字,了解了方式0和基本工作原理。通过这三次实验的学习,对于可编程接口芯片有了更深的认识,掌握了基本的微机接口方法。

在实验过程中要细心,当编译、链接或者运行的时候遇到错误的时候,要仔细检查程序的输入是否正确,很容易输错字母数字。

微机实验报告书(Ⅲ)

学号:姓名:班级: 同组名单:实验日期: 实验题目:步进电机控制实验

实验目标:1.了解步进电机控制的基本原理

2.掌握控制步进电机转动的编程方法

实验步骤:

连接电路图

1)按图14连接线路,利用8255输出脉冲序列,开关K0~K6控制步进电机转速,K7控制步进电机转向。8255 CS接288H~28FH。PA0~PA3接BA~BD;PC0~PC7接K0~K7。

2)编程:当K0~K6中某一开关为“1”(向上拨)时步进电机启动。K7向上拨电机正转,向下拨电机反转。程序框图:

程序清单:

;*******************************;;*

步进电机

*;;*******************************;

DATA

SEGMENT

IOPORT

EQU

0E400H-280H

IO8255A

EQU

IOPORT+288H

;8255A 输出端口

IO8255B

EQU

IOPORT+ 28BH

;8255B 控制端口

IO8255C

EQU

IOPORT+ 28AH

;8255C 输入端口

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

ENDS

CODE SEGMENT

ASSUME

CS:CODE,DS:DATA

START:

MOV

AX,CS

MOV

DS,AX

MOV

AX,DATA

MOV

DS,AX

MOV

DX,OFFSET MES

MOV

AH,09

INT

21H

MOV

DX,IO8255B

MOV

AL, 10001001B

OUT

DX,AL

;8255 C输入, A 输出

MOV

BUF,33H

OUT1:

MOV

AL,BUF

MOV

DX,IO8255A

OUT

DX,AL

PUSH

DX

MOV

AH,06H

MOV

DL,0FFH

INT

21H

POP

DX

JE

IN1

MOV

AH,4CH

INT

21H

IN1:

MOV

DX,IO8255C

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

TEST

JNZ

STOP:

MOV

MOV

JMP

K0:

MOV

SAM:

TEST

JZ

JMP

K1:

MOV

JMP

SAM

K2:

MOV

JMP

K3:

MOV

JMP

K4:

MOV

JMP

K5:

MOV

JMP

K6:

MOV

JMP

SAM

ZX0:

CALL

MOV

ROR

MOV

JMP

NX0:

CALL

MOV

ROL

MOV

JMP

DELAY

PROC

DELAY1:

MOV

DELAY2:

LOOP

K5

AL,40H K6

DX,IO8255C AL,0FFH

OUT1

BL,40H

AL,80H ZX0 NX0

BL,50H

BL,70H

SAM

BL,80H SAM

BL,0A0H SAM

BL,0C0H SAM

BL,0FFH

DELAY

AL,BUF

AL,1

BUF,AL OUT1

DELAY

AL,BUF

AL,1

BUF,AL OUT1

NEAR

CX,0FFFFH

DELAY2

DEC

BL

JNZ

DELAY1

RET

DELAY

ENDP

CODE

ENDS

END

START 运行结果:

当K0~K6中任意一开关向上拨时步进电机启动,且K1速度最快,K6速度最慢;当K7向上拨电机正转,向下拨电机反转。当键盘中有任意键输入的时候则程序终止。小结(收获与体会):

实验和理论是相互检验,相互补充和相互促进的,在实际动手动脑运用理论知识的时候,能更深入地领会概念,熟练运用,在此基础上方能进行创新和自由发挥。通过本次实验,我了解了步进电机控制的基本原理,掌握了控制步进电机转动的编程方法。更加深入地了解了微机原理这门课程。

第五篇:微机原理实验三子程序设计实验

实验三 子程序设计实验

一、实验目的

1.学习子程序的定义和调用方法。2.掌握子程序的程序设计、编制及调用。

二、实验设备

TDN86/88教学实验系统一台

三、实验内容及步骤

1.求无符号字节序列中的最大值和最小值

设有一字节序列,其存储首址为3000H,字节数为08H。利用子程序的方法编程求出该序列中的最大值和最小值。实验程序及流程如下:

主程序STACK1SEGMENT STACK

开始DW 64 DUP(?)STACK1 ENDS CODE SEGMENT ASSUME CS:CODE START: MOV SI,3000H MOV CX,0008H CALL branch A1:JMP A1 branch: JCXZ A4 PUSH SI PUSH CX PUSH BX

结束序列的字节个数→CX数据区首址→SI调用求最大最小值子程序 MOV BH,[SI] MOV BL,BH A1: LODSB CMP AL,BH JBE A2 MOV BH,AL JMP A3 A2: CMP AL,BL JAE A3

Y子程序CX=0?NSI、CX、BX入栈[SI]→BHBH→BLSI+1→SI[SI]→ALNAL﹤BHAL→BHMOV BL,AL A3: LOOP A1 MOV AX,BX POP BX POP CX

YAL﹥BLYCX-1→CXNNAL→BLCX=0?POP SI A4: RET CODE ENDS END START

实验步骤

(1)输入源程序,进行编译、链接和加载。

YSI、CX、BX出栈RET

(2)在调试区键入E0000:3000↙,输入8个字节的数据:D9、07、8B、C5、EB、04、9D、F9。

(3)运行程序,查看结果,在调试区键入R AX↙,显示结果应为AX=F9 04,AH中为最大值,AL中为最小值。

2.数组求和

设有一字节序列(存储地址和字节数可自定义),编写程序,求出该序列的和,求和工作由子程序来实现。

程序:

STACK1 SEGMENT STACK DW 64 DUP(?)STACK1 ENDS CODE

SEGMENT ASSUME CS:CODE START: MOV SI,3000H MOV CX,0008H XOR AX,AX CALL branch A5: JMP A5 branch: JCXZ A4 PUSH SI

PUSH CX A1: ADD AL,[SI] INC SI A3: LOOP A1

POP CX POP SI A4: RET CODE

ENDS END START

8个01,总和为08

下载北京邮电大学 微机原理软件实验3word格式文档
下载北京邮电大学 微机原理软件实验3.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    北京理工大学微机原理实验报告_8259A

    实验一8259中断控制器实验 一、 实验内容 用单脉冲发生器的输出脉冲为中断源,每按一次产生一次中断申请,点亮或熄灭发光二极管。 二,实验目的 (1)掌握8259的工作原理。 (2)掌握编写......

    微机原理实验总结(共5篇)

    微机原理实验总结 不知不觉,微机原理与接口技术实验课程已经结束了。回想起来受益匪浅,主要是加深了对计算机的一些硬件情况和运行原理的理解和汇编语言的编写汇编语言,对于学......

    北京邮电大学

    北京邮电大学 北京邮电大学 主管部门:教育部 工信部 学校类型:理工类 学校性质:211大学 学校地址:北京市西土城路10号 官方网址:www.xiexiebang.com/ 招生简章:zsb.bupt.edu......

    2012年北京邮电大学软件工程硕士招生简章(精)

    北京邮电大学软件工程硕士招生简章 【学院简介】 北京邮电大学软件学院是经教育部和国家计委联合批准成立的首批35所国家级示范性软件学院之一,具有自主招收软件工程领域软......

    微机原理与接口技术实验总结

    微机原理与接口技术实验总结 11107108徐寒黎 一、 实验内容以及设计思路 1、①试编写一程序,比较两个字符串STRING1、 STRING2 所含字符是否相同,若相同输出“MATCH”,若不......

    微机原理-心得体会

    南阳师范学院物电学院微机原理课程收获及心得 初学《微机原理》时,感觉摸不着头绪。面对着众多的术语、概念及原理性的问题不知道该如何下手。在了解课程的特点后,我发现,应该......

    微机原理课程设计

    汇编程序设计题 题目一 密码设置模拟 该程序可以进行密码的设置(第一次)和修改(已设置密码)。要求输入的密码不显示。 题目二 计算器 编辑程序可以实现键盘输入数据与运算符......

    微机原理课程设计

    《微机原理》课程设计报告 时间 学 院 专业班级 姓 名 学 号 合 作 者 指导教师 成 绩 2013 年 11 月摘要 本文针对可燃气体检测模块MQ—K1,综合运用《微机原理》所学知识......