大连理工大学
本科实验报告
课程名称: 计算机原理课程设计
学院(系): 电气工程学院
专 业:电气工程及其自动化
班 级:
学 号:
学生姓名:
2010 年 12 月 30 日
大连理工大学实验报告
实验时间: 年 月 日 星期 四 时间 : 13 : 00 ~ 15 :05
实验室(房间号):实验台号码: 班级: 姓名:
指导教师签字: 成绩:
实验 一 运算类程序设计编程训练
一、实验目的和要求
1、掌握运算类指令编程及调试方法。
2、掌握运算类指令对各标志位的影响及控制条件转移的使用。
二、实验内容
用减奇数法开平方。
三、实验算法
N个连续自然数中的奇数和等于,要做S的开平方运算,那么就可以从S数中逐次减去自然数中的奇数1,3,5,7……,直到结果为0,然后统计自然奇数的个数,它就是S数的平方根。
四、实验流程图
五、程序清单
DATA SEGMENT
SUM DB 49
NUM DB 0
DATA ENDS
STA SEGMENT
STACK DB 256 DUP(?)
STA ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STA,DS:DATA
MAIN PROC FAR
PUSH DS
SUB AX,AX
PUSH AX ;标准程序退出
MOV AX,DATA
MOV DS,AX
MOV AL,SUM ;存放总数
MOV BL,1 ;存放总奇数的和
MOV CL,0 ;存放相减的结果
LOOP1:
INC CL
SUB AL, BL
JZ OUT1 ;相等则跳出循环
INC BL ;否则继续循环
INC BL
JMP LOOP1 ;循环
OUT1:
MOV NUM,CL ;结果存放
MOV AL,CL ;结果输出入口
CALL PUTC ;调用输出函数
RET
MAIN ENDP
PUTC PROC
CBW ;字节转换为字
MOV DL,10
DIV DL
MOV DH,AH ;D保存个位上的数
ADD AL,30H ;转换为ASCLL码
MOV AH,02H
MOV DL,AL
INT 21H ;显示十位数
MOV AL,DH
ADD AL,30H
MOV AH,02H
MOV DL,AL
INT 21H ;显示个位数
MOV AH,02H
MOV DL,' ' ;显示空格
INT 21H
RET
PUTC ENDP
CODE ENDS
END MAIN
六、实验结果与分析
运行程序,达到了设计要求,下图为程序运行结果:
程序运行结果
七、实验体会和建议
通过本次实验,掌握了汇编程序的上机调试过程,并学会了一些运算类指令的实用方法,对循环类程序的设计有了了解。
八、主要仪器设备
计算机DOS操作系统。
大连理工大学实验报告
实验时间: 年 月 日 星期 四 时间 : 13 : 00 ~ 15 :05
实验室(房间号):综420实验台号码: 19 班级: 电气0801 姓名: 刘伟民
指导教师签字: 成绩:
实验 二 排序程序设计编程训练
一、实验目的和要求
1、利用分支,循环,子程序调用等基本程序结构实现排序程序。
2、掌握综合程序的设计,编制及调试方法。
二、实验内容
在数据区中存放一组数,数据个数就是数据缓存区的长度,用气泡法,对该数据区中的数据按递增关系排序。
三、实验算法
1、从最后一二数开始,依次把相邻的恋歌数进行比较,即第N个数与第N-1个数比较,第N-1个数与第N-2个数比较……若第N-1个数大于第N个数,则两者交换,否则不交换,直到N个数的相邻两个数都比较完为止。此时,N个数中的最小数将被排在N个数的最前列。
2、对剩下的N-1个数重读第一步,找到N-1个数中的最小数。
3、重复第二步,直到N个数全部排好序为止。
四、程序清单
DATA SEGMENT
BUFFER DB 31h,35h,37h,39h,33h,32h,34h,30h,38h,36h
COUNT EQU ($-BUFFER)
DATA ENDS
SS_SEG SEGMENT STACK
DB 256 DUP(?)
SS_SEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:SS_SEG
MAIN PROC FAR
MOV AX,DATA
MOV DS,AX
MOV SI,COUNT
SORT1:
MOV DI,1
MOV CX,DI
LEA BX,BUFFER
CIRCLE:
MOV AL,[BX]
INC BX
CMP AL,[BX]
JLE NEXT
XCHG AL,[BX]
MOV [BX-1],AL
MOV DI,CX
NEXT: INC CX
CMP CX,SI
JL CIRCLE
DEC SI
CMP DI,1
JNE SORT1
MOV CX,COUNT
LEA BX, BUFFER
DIS: MOV AH, 02H
MOV DL,[BX]
INT 21H
INC BX
LOOP DIS
MOV AH,4CH
INT 21H
MAIN ENDP
CODE ENDS
END MAIN
五、实验结果与分析
运行程序,达到了设计要求,下图为程序运行结果:
程序运行结果
六、实验体会和建议
通过本次实验,掌握了分支,循环,子程序调用等基本程序的基本应用,并学会气泡法这一排序算法。
八、主要仪器设备
计算机DOS操作系统。
大连理工大学实验报告
实验时间: 年 月 日 星期 四 时间 : 13 : 00 ~ 15 :05
实验室(房间号):综420实验台号码: 19 班级: 电气0801 姓名: 刘伟民
指导教师签字: 成绩:
实验 三 DOS功能调用编程训练
一、实验目的和要求
1、熟悉汇编语言程序的使用。
2、掌握十进制的运算、设计显示程序运行结果的格式。
3、熟练掌握DOS功能调用。
二、实验内容
编写程序,求30个同学成绩的平均分数,将结果显示在屏幕上。
显示格式要求如下:
第一行显示:THE 20 SCORES ARE:以分号分隔的30个同学的分数。
第二行显示:AVERAGE SCORE IS=求得的平均分数。
三、实验算法
1、将求出的二进制表示的平均分数,转换成十进制表示。
2、显示字符串信息用DOS功能调用INT 21H,功能号为09H。
3、显示平均数结果时,用DOS功能调用INT 21H,功能号为02H。
四、实验流程图
五、程序清单
data segment
buffer db 98,83,88,94,90,84,77,84,93,88,89,95,84,93,98,86,86,87,98,96
sum dw 0000h
string0 db 'THE 20 SCORES ARE:$'
string1 db 'AVERAGE SCORE IS=$'
count equ 20
data ends
sta segment stack
db 100 dup(?)
sta ends
code segment
assume cs:code,ss:sta,ds:data
main proc far
mov ax,data
mov ds,ax
mov bx,offset buffer
mov cx,count
call puts0
circle:
mov al,[bx]
call put_dec ;显示[bx]
mov al,[bx]
mov ah,00h ;先将AH清零
adc sum,ax ;带进位加法,结果放在sum中
inc bx
loop circle
call puts1
mov ax,sum
mov bl,count
div bl
call put_dec
mov ax,4c00h
int 21h
main endp
put_dec proc
cbw
mov dl,10
div dl ;al中存商,ah中存余数
mov dh,ah ;余数转移到dh,
add al,30h ;ASCⅡ 转换
mov ah,02h
mov dl,al
int 21h
mov al,dh
add al,30h
mov ah,02h
mov dl,al
int 21h
mov ah,02h
mov dl,';'
int 21h
ret
put_dec endp
puts0 proc
mov ah,02h
mov dl,10 ;换行
int 21h
mov ah,02h
mov dl,13 ;回车
int 21h
mov ah,09h
lea dx,string0
int 21h
ret
puts0 endp
puts1 proc
mov ah,02h
mov dl,10 ;换行
int 21h
mov ah,02h
mov dl,13 ;回车
int 21h
mov ah,09h
lea dx,string1
int 21h
ret
puts1 endp
code ends
end main
六、实验结果与分析
运行程序,达到了设计要求,下图为程序运行结果:
七、实验体会和建议
通过本次实验,熟悉汇编语言程序的使用,常用的DOS功能调用方法。
八、主要仪器设备
计算机DOS操作系统。
大连理工大学实验报告
实验时间: 年 月 日 星期 四 时间 : 13 : 00 ~ 15 :05
实验室(房间号):综420实验台号码: 19 班级: 电气0801 姓名: 刘伟民
指导教师签字: 成绩:
实验四 8255并行接口实验
一、实验目的和要求
1、学习利用并行接口芯片8255构成并行接口电路的基本方法。
2、熟悉掌握并行接口芯片8255的基本性能及在实际应用中的硬件连接、初 始化编程方法。
二、实验内容
编写程序,使8255的PB口位输出口,PA口将K0~K7作为一个字节读入,再从PB口输出这一反码字节。
三、实验电路图
8255并行接口实验电路图
四、程序清单
汇编程序代码如下:
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX,21BH
MOV AL,90H
OUT DX,AL
BG:
MOV DX,218H
IN AL,DX
MOV DX,219H
OUT DX,AL
JMP BG
CODE ENDS
END START
五、实验结果与分析
改变PA口输入的数据,PB口输出的数据随之变化。
六、实验体会和建议
第一接口实验,掌握了并行接口芯片8255的基本性能及在实际应用中的硬件连接、初 始化编程方法。
七、主要仪器设备
SAC-86S试验箱,计算机。
大连理工大学实验报告
实验时间: 年 月 日 星期 四 时间 : 13 : 00 ~ 15 :05
实验室(房间号):综420实验台号码: 19 班级: 电气0801 姓名: 刘伟民
指导教师签字: 成绩:
实验五 8259中断实验
一、实验目的和要求
1.PC机的中断结构及8259中断控制器的初始化。
2.熟悉8259中断控制器的工作原理和硬件连线方法。
3.了解8259的应用和硬件编程方法。
4.了解8259中断屏蔽,以及优先级判别等特性。
二、实验内容
1.编写中断实验程序,主程序使8255的PB口为输出口,输入0FFH,L0~L7指示灯全亮,中断服务程序从PB口输出0FH,L0~L3亮,L4~L7灭,并延时一段时间后返回主程序。
2.编写中断实验程序,主程序使8255的PB口为输出口,输入0FFH,L0~L7指示灯全亮,IR0中断服务程序从PB口输出0FH,L0~L3亮,L4~L7灭,并延时一段时间后返回主程序。IR1中断服务程序从PB口输出0F0H,L0~L3灭,L4~L7亮,并延时一段时间后返回主程序。
三、实验电路图
图5-1 8259(单片)中断实验电路图
图5-2 8259中断优先级实验电路图
四、程序清单
8259(单片)中断实验汇编程序代码如下:
INT0 EQU 220H
INT1 EQU 221H
INT10 EQU 228H
INT11 EQU 229H
STACK SEGMENT
STA DB 50 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK
START:
CLI
MOV AX,TOP
MOV SP,AX
PUSH DS
MOV AX,0000H;SET IRQ0
MOV DS,AX
MOV AX,OFFSET IRQ0
ADD AX,0000H
MOV SI,20H
MOV [SI],AX
MOV AX,CS
MOV SI,22H
MOV [SI],AX
POP DS
MOV AL,13H ;ICW1
MOV DX,INT0
OUT DX,AL
MOV AL,8 ;ICW2
MOV DX,INT1
OUT DX,AL
MOV CX,0FFFH
LOOP $
MOV AL,9 ;ICW4
MOV DX,INT1
OUT DX,AL
MOV CX,0FFFH
LOOP $
MOV DX,INT1
MOV AL,0FEH ;OCW1
OUT DX,AL
MOV CX,0FFFH
STI
MOV DX,21BH
MOV AL,90H
OUT DX,AL
DSP: MOV AL,0FFH
MOV DX,219H
OUT DX,AL
JMP DSP
IRQ0: STI
MOV CX,0FFFFH
LOOP $
MOV AL,0FH
MOV DX,219H
OUT DX,AL
MOV DX,INT0
MOV AL,20H
OUT DX,AL
MOV CX,0FFFFH
LOOP $
MOV CX,0FFFFH
LOOP $
IRET
CODE ENDS
END START
8259中断优先级实验汇编程序代码如下:
INT0 EQU 220H
INT1 EQU 221H
INT10 EQU 228H
INT11 EQU 229H
STACK SEGMENT
STA DB 50 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK
START:
CLI
MOV AX,TOP
MOV SP,AX
PUSH DS
MOV AX,0000H ;SET IRQ0
MOV DS,AX
MOV AX,OFFSET IRQ0
ADD AX,0000H
MOV SI,20H
MOV [SI],AX
MOV AX,CS
MOV SI,22H
MOV [SI],AX
MOV AX,0000H ;SET IRQ1
MOV DS,AX
MOV AX,OFFSET IRQ1
ADD AX,0000H
MOV SI,24H
MOV [SI],AX
MOV AX,CS
MOV SI,26H
MOV [SI],AX
POP DS
MOV AL,13H ;ICW1
MOV DX,INT0
OUT DX,AL
MOV AL,8 ;ICW2
MOV DX,INT1
OUT DX,AL
MOV CX,0FFFH
LOOP $
MOV AL,9 ;ICW4
MOV DX,INT1
OUT DX,AL
MOV CX,0FFFH
LOOP $
MOV DX,INT1
MOV AL,0FCH ;OCW1
OUT DX,AL
MOV CX,0FFFH
STI
MOV DX,21BH
MOV AL,90H
OUT DX,AL
DSP: MOV AL,0FFH
MOV DX,219H
OUT DX,AL
JMP DSP
IRQ0: STI
MOV CX,0FFFFH
LOOP $
MOV AL,0FH
MOV DX,219H
OUT DX,AL
MOV DX,INT0
MOV AL,20H
OUT DX,AL
MOV CX,0FFFFH
LOOP $
MOV CX,0FFFFH
LOOP $
IRET
IRQ1: STI
MOV CX,0FFFFH
LOOP $
MOV AL,0F0H
MOV DX,219H
OUT DX,AL
MOV DX,INT0
MOV AL,20H
OUT DX,AL
MOV CX,0FFFFH
LOOP $
MOV CX,0FFFFH
LOOP $
IRET
CODE ENDS
END START
五、实验结果与分析
单片8259实验中,L0~L7指示灯全亮,按下单脉冲按钮,L0~L3亮,L4~L7灭,延时一段时间后仍全亮。
8259中断优先级实验中,L0~L7指示灯全亮;按下左单脉冲按钮(接IR0),L0~L3亮,L4~L7灭,延时一段时间后仍全亮;按下右单脉冲按钮(接IR0),L0~L3灭,L4~L7亮,延时一段时间后仍全亮;同时按下两个单脉冲按钮, L4~L7先灭亮,L0~L3后灭亮,延时一段时间后仍全亮。
六、实验体会和建议
通过本次实验,掌握了8259的初始化方法,了解了8259的应用和硬件编程方法,
8259中断屏蔽,以及优先级判别等特性。
七、主要仪器设备
SAC-86S试验箱,计算机。
大连理工大学实验报告
实验时间: 年 月 日 星期 四 时间 : 13 : 00 ~ 15 :05
实验室(房间号):综420实验台号码: 19 班级: 电气0801 姓名: 刘伟民
指导教师签字: 成绩:
实验六 定时计数器实验
一、实验目的和要求
1.了解定时器8253的初始化及用法。
2.会用逻辑笔或示波器观察8253的工作状态。
二、实验内容
编写程序,使8253的定时/计数器2工作在方式3下。会看到逻辑笔红绿灯来回反复变化。
三、实验电路图
8253实验电路图
四、程序清单
汇编程序代码如下:
TIM_CTL EQU 203H
TIMER0 EQU 200H
TIMER1 EQU 201H
TIMER2 EQU 202H
MODE23 EQU 0B6H
MODE13 EQU 76H
CODE SEGMENT
ASSUME CS:CODE
START:
TT:
CLI
MOV DX,TIM_CTL
MOV AL,MODE23
OUT DX,AL
MOV DX,TIMER2
MOV AL,0FFH
OUT DX,AL
MOV AL,0FFH
OUT DX,AL
WT:
JMP WT
CODE ENDS
END START
五、实验结果与分析
K0向8253输入高电平时,可以看到逻辑笔红绿交替变化。K0为低电平时观察不到此现象。
六、实验体会和建议
通过本次实验,掌握了8253的使用方法。
若要产生周期较长的方波,如10s,可以采用多个定时器级联的方法,即通过一个定时器对原始时钟信号进行分频,其输出作为另一定时器的时钟信号。
七、主要仪器设备
SAC-86S试验箱,计算机。
大连理工大学实验报告
实验时间: 年 月 日 星期 四 时间 : 13 : 00 ~ 15 :05
实验室(房间号):综420实验台号码: 19 班级: 电气0801 姓名: 刘伟民
指导教师签字: 成绩:
实验七 A/D转换接口实验
一、实验目的和要求
1.了解模/数转换的工作原理。
2.掌握0809的使用方法。
二、实验内容
编写程序,用0809的IN0通道采集数据并在数码管上显示。
调节电位器W1,以改变模拟电压值,显示器上会不断显示新的A/D转换结果。
三、实验电路图
0809实验电路图
四、程序清单
汇编程序代码如下:
B8279 EQU 212H
D8279 EQU 210H
LED0 EQU 00
LED1 EQU 38H
DATA SEGMENT
LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,
DB 6FH,77H,7CH,39H 5EH,79H,71H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV DX,B8279
MOV AL,0D0H
OUT DX,AL
MOV CX,0FFFFH
LOOP $
MOV DX,B8279
MOV AL,LED0
OUT DX,AL
MOV AL,LED1
OUT DX,AL
MOV DX,B8279
MOV AL,95H
OUT DX,AL
MOV DX,D8279
MOV AL,40H
OUT DX,AL
MOV DX,D8279
MOV AL,5EH
OUT DX,AL
MOV DX,D8279
MOV AL,77H
OUT DX,AL
TT:
MOV DX,230H
OUT DX,AL
MOV CX,0FFFFH
LOOP $
MOV DX,B8279
MOV AL,83H
OUT DX,AL
MOV DX,230H
IN AL,DX
AND AL,0FH
LEA BX,LED
XLAT
MOV DX,D8279
OUT DX,AL
MOV DX,B8279
MOV AL,84H
OUT DX,AL
MOV DX,230H
IN AL,DX
MOV CL,4H
ROR AL,CL
AND AL,0FH
LEA BX,LED
XLAT
MOV DX,D8279
OUT DX,AL
JMP TT
CODE ENDS
END START
五、实验结果与分析
数码管高五位显示“Ad-××”,旋转电位器旋钮,改变模拟量大小,转换值××在00~FF之间变化。
六、实验体会和建议
通过本实验,掌握了0809的使用方法。由于A/D转换需要一定时间,所以编写程序时应注意在启动A/D转后后,必须延时一段时间才能采集A/D转换的值。
七、主要仪器设备
SAC-86S试验箱,计算机。
大连理工大学实验报告
实验时间: 年 月 日 星期 四 时间 : 13 : 00 ~ 15 :05
实验室(房间号):综420实验台号码: 19 班级: 电气0801 姓名: 刘伟民
指导教师签字: 成绩:
实验八 步进电机实验
一、实验目的和要求
1.了解步进电机的工作原理,以及脉冲分配概念。
2.掌握计算机控制步进电机的方法。
二、实验内容
编写程序,通过8255控制步进电机的方法。
按步进电机脉冲分配规律,设定相应输入步进电机转速。扳动K0-K3,可控制步进电机的转速,K0-K3转速依次提高。
三、实验电路图
步进电机实验电路图
四、程序清单
汇编程序代码如下:
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX,21BH
MOV AL,90H
OUT DX,AL
BG:
MOV DX,218H
IN AL,DX
CMP AL,01H
JNZ C2
MOV BX,0FFFFH
JMP WORK
C2:
CMP AL,02H
JNZ C4
MOV BX,07FFFH
JMP WORK
C4:
CMP AL,04H
JNZ C8
MOV BX,0FFFH
JMP WORK
C8:
CMP AL,08H
JNZ CC
MOV BX,07FFH
JMP WORK
CC:
MOV AL,00H
MOV DX,219H
OUT DX,AL
JMP BG
WORK:
MOV AL,01H
MOV DX,219H
OUT DX,AL
MOV CX,BX
LOOP $
MOV AL,03H
MOV DX,219H
OUT DX,AL
MOV CX,BX
LOOP $
MOV AL,02H
MOV DX,219H
OUT DX,AL
MOV CX,BX
LOOP $
MOV AL,06H
MOV DX,219H
OUT DX,AL
MOV CX,BX
LOOP $
MOV AL,04H
MOV DX,219H
OUT DX,AL
MOV CX,BX
LOOP $
MOV AL,0CH
MOV DX,219H
OUT DX,AL
MOV CX,BX
LOOP $
MOV AL,08H
MOV DX,219H
OUT DX,AL
MOV CX,BX
LOOP $
MOV AL,09H
MOV DX,219H
OUT DX,AL
MOV CX,BX
LOOP $
JMP BG
CODE ENDS
END START
五、实验结果与分析
扳动K0-K3,可控制步进电机的转速,K0-K3转速依次提高。
六、实验体会和建议
通过本次实验,了解了步进电机的工作原理,以及脉冲分配概念;掌握了计算机控制步进电机的方法。
七、主要仪器设备
SAC-86S试验箱,计算机。
大连理工大学本科设计报告
题目:基于PWM的直流电机调速系统设计
课程名称: 计算机原理课程设计
学院(系): 电气工程学院
专 业: 电气工程及其自动化
班 级: 电气0801
学 号: 200881054
学生姓名: 刘伟民
成 绩:
2011 年 1 月 6 日
题目:基于PWM的直流电机调速系统设计
1 设计要求
利用8253产生PWM波形,控制直流电机的转速。具体要求:
1、以8253为核心,编制PWM波形算法,通过8255输出PWM波形控制电机;
2、直流电机的转速可以控制:利用实验台上的电位器人工调节----转速连续变化;利用实验台上的单脉冲源控制电机加速或减速。
2 设计分析及系统方案设计
根据实验要求,需要用8255A产生PWM波,占空比通过定时器8253或外部中断来直接控制,而8253的参数由ADC0809提供,即ADC0809的模拟量由电位器提供,输出数字量以实现对8253的控制;外部中断由单脉冲源提供,通过8259管理外部中断。
3 硬件电路图
综合以上分析,可以得到系统的硬件电路图:
直流电机调速系统硬件电路图
4 程序流程图
主程序流程图
5 程序清单
实验程序如下:
io8253_0 equ 200h ;timer0
io8253_1 equ 201h ;timer1
io8253_2 equ 202h ;timer2
io8253_k equ 203h ;8253 control
p55a equ 218h ;8255 a port output
p55b equ 219h ;8255 b port output
p55c equ 21ah ;8255 c port input
p55ctl equ 21bh ;8255 coutrl port
int0 equ 220h ;interruput
int1 equ 221h
int10 equ 228h
int11 equ 229h
STACK SEGMENT
STA DB 50 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK
start:
CLI
MOV AX,TOP
MOV SP,AX
PUSH DS
MOV AX,0000H ;SET IRQ0
MOV DS,AX
MOV AX,OFFSET IRQ0
ADD AX,0000H
MOV SI,20H
MOV [SI],AX
MOV AX,CS
MOV SI,22H
MOV [SI],AX
MOV AX,0000H ;SET IRQ1
MOV DS,AX
MOV AX,OFFSET IRQ1
ADD AX,0000H
MOV SI,24H
MOV [SI],AX
MOV AX,CS
MOV SI,26H
MOV [SI],AX
POP DS
MOV AL,13H ;ICW1
MOV DX,INT0
OUT DX,AL
MOV AL,8 ;ICW2
MOV DX,INT1
OUT DX,AL
mov cx,0fffh
loop $
MOV AL,0bh ;ICW4
MOV DX,INT1
OUT DX,AL
mov cx,0fffh
loop $
MOV DX,INT1
MOV AL,0FCH ;OCW1
OUT DX,AL
mov cx,0fffh
loop $
MOV DX,INT0
MOV AL,20H ;
OUT DX,AL
mov cx,0fffh
loop $
STI
nop
mov dx,p55ctl ;指向8255的控制口
mov al,10010011b ;设定C口为方式0,PC0、1输入,PC7输出
out dx,al ;写入控制字
mov dx,io8253_k ;向8253写控制字
mov al,36h ;0011 0110 使0通道为工作方式3
out dx,al
mov ax,100 ;写入循环计数初值100
mov dx,io8253_0
out dx,al ;先写入低字节
mov al,ah
out dx,al ;后写入高字节
mov dx,io8253_k
mov al,76h ;0111 0110 设8253通道1工作方式3
out dx,al
mov ax,260 ;写入循环计数初值260(周期参数)
mov dx,io8253_1 ;以避免输入的脉宽值大于周期参数
out dx,al ;先写低字节
mov al,ah
out dx,al ;后写高字节
mov dx,p55ctl
mov al,93h ;1001 0011 A口输入,PC7输出
out dx,al
mov bl,100 ;PWM的处置为最小
lop:mov dx,230H
out dx,al ;启动AD
mov dx,p55c ;检测OUT1是否为低
in al,dx ;指向8255的c口
and al,01h
jnz lop ;OUT1不为1时等待
mov dx,p55ctl
mov al,0fh ;将PC7置位
out dx,al
mov dx,io8253_k
mov al,0b0h ;1011 0000 设8253通道2工作方式0
out dx,al
mov ax,0
mov al,bl ; 写入计数初值
mov dx,io8253_2
out dx,al ;先写低字节
mov al,ah
out dx,al ;后写高字节
lop1:mov dx,p55c ;指向8255的c口
in al,dx
and al,02h
jz lop1
mov dx,p55ctl
mov al,0eh ;将PC7清零
out dx,al
lop2:mov dx,p55c ;等待OUT低电平结束
in al,dx ;指向8255的c口
and al,01h
jz lop2 ;OUT1=0时等待
MOV DX,230H
in al,dx ;输入A/D转换值作为脉宽值(0-255)
and al,0ffh
jnz lop3
inc al ;避免脉宽值=0
lop3: mov bl,al
jmp lop ;OUT1=1时返回
IRQ0: ;提速中断服务程序
STI
mov cx,100 ;以下操作循环100次
again: mov bl,250 ;将作为定时器初值,实现大的占空比
i0lop: mov dx,p55c ;检测OUT1是否为低
in al,dx ;指向8255的c口
and al,01h
jnz i0lop ;OUT1不为1时等待
mov dx,p55ctl
mov al,0fh ;将PC7置位
out dx,al
mov dx,io8253_k
mov al,0b0h ;1011 0000 设8253通道2工作方式0
out dx,al
mov ax,0
mov al,bl
mov dx,io8253_2
out dx,al
mov al,ah
out dx,al
i0lop1:mov dx,p55c
in al,dx
and al,02h
jz i0lop1
mov dx,p55ctl
mov al,0eh
out dx,al
i0lop2:mov dx,p55c
in al,dx
and al,01h
jz i0lop2
loop again
IRET
IRQ1: ;减速中断服务程序
STI
mov cx,100 ;以下操作循环100次
again: mov bl,250 ;将作为定时器初值,实现小的占空比
i1lop: mov dx,p55c ;检测OUT1是否为低
in al,dx ;指向8255的c口
and al,01h
jnz i1lop ;OUT1不为1时等待
mov dx,p55ctl
mov al,0fh ;将PC7置位
out dx,al
mov dx,io8253_k
mov al,0b0h ;1011 0000 设8253通道2工作方式0
out dx,al
mov ax,0
mov al,bl
mov dx,io8253_2
out dx,al
mov al,ah
out dx,al
i1lop1:mov dx,p55c
in al,dx
and al,02h
jz i1lop1
mov dx,p55ctl
mov al,0eh
out dx,al
i1lop2:mov dx,p55c
in al,dx
and al,01h
jz i1lop2
loop again
IRET
code ends
end start
6 系统调试运行结果说明、分析所出现得问题,设计体会与建议
系统运行的硬件环境为SAC-86S试验箱,计算机。设计语言为汇编语言。
系统能通过电位器旋钮实现对直流电机的无级调速,可利用单脉冲控制电机突然加速或突然减速。
在调试中8255不能正常工作,无法控制电机的转速,在老师帮助下,经单步调试后,解除了故障。后来无法进入中断服务程序,原因在于中断向量表设置有问题;中断服务程序无法正常返回,原因在于初始化时将中断结束方式设成了非自动结束方式,而在中断服务程序末尾未加EOI的语句。这些问题都在自己的调试和思考后得到了解决。
7 结论及设计体会
这是一个综合设计性实验,难度相对较大。在自己完成该实验的过程中,对常用接口芯片的使用方法有了深刻的理解,做完实验后,对和接口相关的理论知识的理解变得非常容易。
另外,在实验过程中掌握了汇编程序的一些基本调试方法。和高级语言不同,接口部分的汇编程序能否正确运行,不仅与程序本身有关,还与硬件有很大关系,所以调试时必须“软硬兼施”,而怎么快速正确地定位问题所在,是我在本次实验中学到的。
最后,感谢实验过程老师的指导!
参考文献
[1]张仁杰,秦晓梅编著。微机原理与接口技术综合实验教程。大连:大连理工大学出版社,2004
微机原理与接口技术实验指导书班级学号099074姓名安徽工业大学计算机学院实验一存贮器读写实验一实验内容对指定地址区间的RAM40…
实验题目8253定时计数器实验一实验目的与要求1学会8253芯片和微机接口原理和方法2掌握8253定时器计数器的工作方式和编程原理…
微机原理实验报告实验一两个多位十进制数相加的实验一实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立汇编链接调试和运行汇编…
微机原理及接口技术实验报告20xx20xx学年第一学期班级姓名学号指导教师实验一Emu8086软件的使用一实验目的1熟悉汇编语言开…
大连理工大学本科实验报告课程名称计算机原理课程设计学院系电气工程学院专业电气工程及其自动化班级学号学生姓名20xx年12月30日大…
1程序DATASEGMENTXDW7A8FHDATAENDSCODESEGMENTMAINPROCFARASSUMECSCODED…
SDU微机原理与接口技术实验报告梁聚仁20xx00120xx0微机原理与接口技术实验报告实验一上机练习实验目的1掌握用编辑软件编辑…
计算机在金属材料中的应用实验山东科技大学材料学院目录一调试程序DEBUG二熟悉80486指令系统三熟悉汇编语言汇编程序上机过程四汇…
姓名:XXX学号:XXXXXX指导教师:XXX实验一Debug命令及汇编指令和寻址的应用一、实验内容1、设堆栈段指针SP=1000…
洛阳理工学院实验报告12345洛阳理工学院实验报告678洛阳理工学院实验报告9101112洛阳理工学院实验报告1314洛阳理工学院…
微机原理与应用课程实验报告实验分工报告人同组人实验时间20xx1210课程设计一题目要求1在数据段首址为0100H开始的内存区1按…