北京科技大学微机原理实验报告_北科大微机实验报告
北京科技大学微机原理实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“北科大微机实验报告”。
微机原理及应用实验报告
学院: 班级: 学号: 姓名:
微机实验报告书(Ⅰ)学号:姓名:班级: 同组名单:实验日期:
实验题目:8253可编程定时器计数器
实验目标:掌握8253的基本工作原理和编程方法 实验步骤:
连接电路图
如图虚线连接电路,将计数器0设置为方式0,计数器初值为N(N
程序清单:
;*************************;;* 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
;判断是否
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向上拨电机正转,向下拨电机反转。当键盘中有任意键输入的时候则程序终止。小结(收获与体会):
实验和理论是相互检验,相互补充和相互促进的,在实际动手动脑运用理论知识的时候,能更深入地领会概念,熟练运用,在此基础上方能进行创新和自由发挥。通过本次实验,我了解了步进电机控制的基本原理,掌握了控制步进电机转动的编程方法。更加深入地了解了微机原理这门课程。