科技之光-微机原理_第1页
科技之光-微机原理_第2页
科技之光-微机原理_第3页
科技之光-微机原理_第4页
科技之光-微机原理_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

陕西渭南招聘网 成绩 本科实验报告 课程名称 微机原理课程设计 院 系 专 业 班 级 学 号 姓 名 指导老师 实验日期 1 目录 content 页码 1 运算类程序设计编程训练 2 2 循环程序设计编程训练 4 3 排序程序设计编程训练 6 4 8255 并行接口实验 8 5 8259 单片中断实验 10 6 8259 中断优先级实验 13 7 8253 定时计数器实验 16 8 A D 转换接口实验 18 9 步进电机实验 20 10 十字路口交通灯实验 22 11 实验体会 27 2 实验一 运算类程序设计编程 1 实验目的 1 掌握运算类指令编程及调试方法 2 掌握运算类指令对各状态标志位的影响及控制条件转移的使用 2 实验内容 从键盘键入一个十进制数 00 99 将其转换为二进制数 并进行开平方 运算 若输入数的平方根是整数 则输出 否则 直接结束 3 实验程序 MODEL SMALL STACK 200H DATA DATA1 DB 1 3 5 7 CODE START MOV AX 16 MOV BX OFFSET DATA1 LOOP1 SUB AX DATA1 BX INC BX CMP AX 0 JNE LOOP1 CMP BL 9H JAE NEXT ADD BL 30H MOV DL BL JMP DISP NEXT MOV AL BL DIV 0FH ADD AL 30H ADD DL 30H PUSH DL MOV DL AL MOV AH 02H INT 21H POP DL DISP MOV AH 02H 3 INT 21H MOV AX 4C00H INT 21H END 4 实验框图 5 实验实现方法说明 实验开始时 输入两位十进制数 十位和各位均以 ASCII 码的形式读入 转换成十六进制后存储 对此数进行减奇数法求得算数平方根 即 12 1 22 1 3 32 1 3 5 42 1 3 5 7 52 1 3 5 7 9 要做平方根运算 就可以从输入数中逐次减去自然数中的奇数 1 3 5 7 直到结果为零 然后统计自然奇数的个数 它就是其平方根 AX BX BX 1 AX 0 输出 BX N Y 4 实验二 循环程序设计编程 1 实验目的 1 加深对循环程序结构的理解 2 掌握循环结构程序设计的方法 3 熟练掌握调试循环结构程序的方法 2 实验内容 在某数据存储区内存放一些有符号的数 他的第一单元存放该数据区数据的个数 从第二单元开始 存放数据 在数据存储区的最后一个单元存放负数个数 3 实验程序 DATA SEGMENT DW 6 1 0 4 45 67 88 DATA ENDS STACK SEGMENT STACK DW 200 DUP 0 STACK ENDS CODE SEGMENT ASSUME CS CODE SS STACK DS DATA START MOV AX DATA MOV DS AX MOV DX 0 MOV BX 2 MOV CX DS 0 LOOP1 MOV AX BX CMP AX 0 JGE KKK INC DX KKK ADD BX 2 LOOP LOOP1 MOV BX DX MOV AX BX CALL SHOW INT MOV AX 4C00H INT 21H DSP1 PROC PUSH CX PUSH BX MOV CX 0 MOV BX 10 5 MOV DX 0 NEXT DIV BX INC CX PUSH DX MOV DX 0 CMP AX 0 JA NEXT LOOP2 POP AX CALL DSP2 LOOP LOOP2 POP BX POP CX RET DSP1 ENDP DSP2 PROC ADD AX 30H MOV DL AL MOV AH 2 INT 21H RET DSP2 ENDP CODE ENDS END START 4 实验框图 5 实验实现方法说明 为统计数据区内负数 整数和零的个数 需要逐个判断数据区内的每一个 数 据 然后将所有数据中符号位为 1 的个数累加 即为负数的个数 符号位为 0 的个数累加 即为正数的个数 而和 0FFH 相与结果为 0 的数累加 即为零的 个数 在程序一开始时建立地址指针 每比较一次改变一次 比较结束后地址指 AX BX DX BX BX 2 退出 AX 0 CX 0 Y 6 针指向的为数据区的最末之后的位置 再依次存入统计所得的数字 实验三 排序程序设计编程 1 实验目的 1 利用分支 循环 子程序调用等基本程序结构实现排序程序 2 掌握综合程序的设计 编制及调试方法 2 实验内容 在数据区中存放一组数 数据个数就是数据缓冲区的长度 要求用气泡法 对该数据区的数据按递增 或递减 关系排序 3 实验程序 DATA SEGMENT BUFFER DW 10 30 52 DW 2 42 92 DW 22 36 31 DW 63 COUNT EQU BUFFER 2 循环总 次数 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 PUSH DS MOV AX 0 PUSH AX MOV AX DATA MOV DS AX MOV SI COUNT SI 存外层循环次 数 SORT1 MOV DI 1 DI 存内层循环次数 MOV CX DI LEA BX BUFFER CIRCLE MOV AX BX INC BX INC BX CMP AX BX JLE NEXT XCHG AX BX 交换 MOV BX 2 AX MOV DI CX NEXT INC CX 内层循环次数加 一 CMP CX SI JL CIRCLE DEC SI 外层循环次数减 一 CMP SI 1 JNE SORT1 RET MAIN ENDP CODE ENDS END MAIN 7 4 实验框图 DI 1 SI 1 DI SI AX BX N Y SI 1 XCHG AX BX 2 DI 1 AX BX 2 BX 2 N Y N Y 结束 BX BUFFER 5 实验实现方法说明 1 建立地址指针 从最后一个数 或第一个数 开始 依次把相邻的两个 数进行比较 即第 N 个数与第 N 1 个数比较 若第 N 1 个数小于第 N 个数 则两者交换 否则不交换 然后再将第 N 1 个与第 N 2 个数比 较 一直进行下去 直到 N 个数的相邻两个数都比较完位置 此时 N 个数中的最大数被排在第 N 个数的最前列 8 2 对剩下的 N 1 个数重复第一步 找到 N 1 个数中的最大数 3 重复第 2 步 直到 N 个数全部排序好为止 实验四 8255 并行接口实验 1 实验目的 1 学习利用并行接口芯片 8255 构成并行接口电路的基本方法 2 熟悉掌握并行接口芯片 8255 的基本性能及在实际应用中硬件连接 初始化 编程方法 2 实验内容 编写程序 使 8255 的 PB 口为输出口 PA 口为输入口 从 PA 口将 K0 K7 作为一个字节读入 再从 PB 口输出这一反码字节 3 实验程序 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 4 实验框图 A 口输入 AL AL 取 反 B 口输出 AL 9 5 实验电路 6 实验实现方法说明 对 8255 写入控制字 10010000 表示 PA 口工作在方式 1 为输入端口 PB 口工作在方式 0 为输出端口 这样既可实现从 PA 口读入 K0 K7 状态 再 从 PB 口输出 10 实验五 8259 单片中断实验 1 实验目的 1 了解 PC 机的中断结构及 8259 中断控制器的初始化 2 熟悉 8259 中断控制器的工作原理和硬件连线方法 3 了解 8259 的应用和硬件编程方法 4 了解 8259 中断屏蔽 以及优先级判别等特性 5 了解 8259 的级联工作方式 2 实验内容 编写中断实验程序 主程序使 8255 的 PB 口为输出口 输出 0FFH L0 L7 指示灯全亮 中断服务程序从 PB 口输出 0FH L0 L3 亮 L4 L7 灭 并延时一 段时间后返回主程序 3 实验程序 INT0 EQU 220h INT1 EQU 221h INT10 EQU 228h INT11 EQU 229h STACK SEGMENT STA DB 50 DUP TOPEQU 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 11 MOV AL 0FEH OCW1 OUT DX AL mov cx 0fffh loop MOV DX INT0 MOV AL 20H OUT DX AL mov cx 0fffh loop MOV AL 13H ICW1 MOV DX INT10 OUT DX AL MOV AL 8 ICW2 MOV DX INT11 OUT DX AL mov cx 0fffh loop MOV AL 9 ICW4 MOV DX INT11 OUT DX AL mov cx 0fffh loop MOV DX INT11 MOV AL 0FFH OCW1 OUT DX AL mov cx 0fffh loop MOV DX INT10 MOV AL 20H OUT DX AL mov cx 0fffh loop 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 4 实验框图 初始化 8259 初始化 8255 主程序循环体 终端服务程序 IRQ0 8255B 口输出 0FH EOI 结束 并退 出 12 5 实验电路 6 实验实现方法说明 8259 初始化时 ICW1 写入 00010011 即单片的边沿触发中断方式 ICW2 写入 00001000 即中断类型码为 08H ICW4 写入 00001001 即为 8086 系统的 非自动中断方式 完全签到 且为单片工作 OCW1 写入 11111100 即屏蔽 IRO 和 IR1 之后再开中断 即可按设定的程序开始工作 在中断程序的最后 再设置 OCW2 为 00100000 即为普通 EOI 中断 13 实验六 8259 中断优先级实验 1 实验目的 1 了解 PC 机的中断结构及 8259 中断控制器的初始化 2 熟悉 8259 中断控制器的工作原理和硬件连线方法 3 了解 8259 的应用和硬件编程方法 4 了解 8259 中断屏蔽 以及优先级判别等特性 5 了解 8259 的级联工作方式 2 实验内容 编写中断实验程序 主程序使 8255 的 PB 口为输出口 输出 0FFH L0 L7 指示灯全亮 IR0 中断服务程序从 PB 口输出 0FH L0 L3 灯亮 L4 L7 灯灭 并 延时一段时间后返回主程序 IR1 中断服务程序从 PB 口输出 0FH L0 L3 灭 L4 L7 亮 并延时一段时间后返回主程序 3 3 实验程序 实验程序 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 14 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 loop MOV DX INT0 MOV AL 20H OUT DX AL mov cx 0fffh loop MOV AL 13H ICW1 MOV DX INT10 OUT DX AL MOV AL 8 ICW2 MOV DX INT11 OUT DX AL mov cx 0fffh loop MOV AL 9 ICW4 MOV DX INT11 OUT DX AL mov cx 0fffh loop MOV DX INT11 MOV AL 0FFH OCW1 OUT DX AL mov cx 0fffh loop MOV DX INT10 MOV AL 20H OUT DX AL mov cx 0fffh loop 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 15 4 实验框图 5 实验电路 初始化 8259 初始化 8255 主程序循环体 终端服务程序 IRQ1 8255B 口输出 0F0H EOI 结束 并退 出 设置 IR0 IR1 中断向 量表 终端服务程序 IRQ0 8255B 口输出 0FH EOI 结束 并退 出 16 实验七 8253 定时计数器实验 1 实验目的 1 了解定时器 8253 的初始化及用法 2 会用逻辑笔或示波器观察 8253 的工作状态 2 实验内容 编写程序 使 8253 的定时计数器 2 工作在方式 3 下 3 参考程序 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 17 MOV DX TIMER2 MOV AL 0FFh OUT DX AL MOV AL 0FFh OUT DX AL WT JMP WT CODE ENDS END START 4 实验框图 5 实验电路 初始化 8253 计数器 2 先读低位 在读高位 方式 3 二进制计数 赋初值 开始计数 18 实验八 A D 转换接口实验 1 实验目的 1 了解模 数转换的工作原理 2 掌握 0809 的使用方法 2 实验内容 编写程序 用 0809 的 IN0 通道采集数据并在数码管上显示 旋转电位器旋 钮 改变模拟量大小 转换值 XX 在 00 FF 范围内变化 3 实验程序 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 6FH 77H 7CH 39H DB 5EH 79H 71H data ends CODE SEGMENT ASSUME 19 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 4 实验框图 5 实验电路 A D 转换启动 低四位显示 RAM 地址 读取数据给 AL 取低四位 并换码显示 AL 右移四位 取低四位 并换码显示 20 实验九 步进电机实验 1 实验目的 1 了解步进电机的工作原理 以及脉冲分配概念 2 掌握计算机控制步进电机的方法 2 实验内容 编写程序 通过 8255 控制步进电机旋转 1 检查实验平台电源供电是否正常 2 用通讯电缆将实验台与实验微机连接好 上位机与实验平台通讯正常 3 准备实验导线若干 3 参考程序 CODE SEGMENT ASSUME CS CODE START MOV DX 21BH MOV AL 90H OUT DX AL 21 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 4 实验电路 22 综合实验 十字路口交通灯实验 1 实验任务 正常情况下红 绿灯 5 10 秒定时变化 当有人要通过人行横道时 按动试 验台上的开关 可以实现在其前方的绿灯在原来基础上再延时 5 秒 还有一 个控制开关是路口信号灯全为红灯 用于紧急情况 2 实验电路图 23 3 实验框图 初始化 8259 初始化 8253 8253 产生 10s 方波送到 8259IRQ0 中断服务程序 IRQ2 8255B 口输出 0A5H 东西为绿灯 南北为红灯 EOI 结束 并退出 设置 IR0 IR3 中断向量 表 中断服务程序 IRQ1 8255B 口输出 5AH 东西为红灯 南北为绿灯 EOI 结束 并退出 24 N Y N N N Y Y Y 4 实验程序 TIM C EQU 203H TIMER0 EQU 200H TIMER1 EQU 201H P8255K EQU 21BH P8255B EQU 219H INT0 EQU 220H INT1 EQU 221H STACK SEGMENT STA DB 50 DUP TOPEQU LENGTH STA STACK ENDS 南北方向 请求通行 初始化 8255 10s 方波上升沿 8255B 口输出 5AH 中断服务程序 IRQ0 系统变灯 中断服务程序 IRQ3 8255B 口输出 0F0H 东西南北全 为红灯 EOI 结束 并退出 东西方向 请求通行 紧急 情况 25 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 MOV AX 0000H SET IRQ2 MOV DS AX MOV AX OFFSET IRQ2 ADD AX 0000H MOV SI 28H MOV SI AX MOV AX CS MOV SI 2AH MOV SI AX POP DS MOV AX 0000H SET IRQ3 MOV DS AX MOV AX OFFSET IRQ3 ADD AX 0000H MOV SI 2CH MOV SI AX MOV AX CS MOV SI 2EH 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 AL 9 ICW4 MOV DX INT1 OUT DX AL MOV DX INT1 MOV AL 0F0H OCW1 OUT DX AL MOV DX INT0 MOV AL 20H OUT DX AL MOV DX TIM C MOV AL 36H OUT DX AL PUSH AX MOV DX TIMER0 MOV AL 0 OUT DX AL OUT DX AL MOV DX TIM C MOV AL 76H OUT DX AL MOV DX TIMER1 MOV AL 7AH OUT DX AL 26 MOV AL 0 OUT DX AL STI POP AX MOV DX P8255K MOV AL 90H OUT DX AL MOV AL 5AH MOV DX P8255B OUT DX AL DST JMP DST IRQ0 STI NOT AL PUSH AX MOV DX P8255B OUT DX AL MOV CX 0FFFFH LOOP MOV DX INT0 MOV AL 20H OUT DX AL POP AX IRET IRQ1 STI MOV AL 5AH MOV DX P8255B OUT DX AL PUSH AX MOV CX 0FFFFH LOOP MOV DX INT0 MOV AL 20H OUT DX AL POP AX IRET IRQ2 STI MOV AL 0A5H MOV DX P8255B OUT DX AL PUSH AX MOV DX INT0 MOV AL 20H OUT DX AL POP AX IRET IRQ3 STI PUSH AX MOV AL 0F0H MOV DX P8255B OUT DX AL MOV CX 0FFFFH LOOP MOV CX 0FFFFH LOOP MOV CX 0FFFFH LOOP MOV CX 0FFFFH LOOP MOV DX INT0 MOV AL 20H OUT DX AL POP AX IRET CODE ENDS END START 5 设计思想说明 27 根据常识对交通等系统作如下设计 1 正常状况下 红绿灯交变 每种状态持续 5 10 秒 把它们放在主程序中而 不使用中断 红绿灯状态分别为 0A5H 和 5AH 将它们通过 8255 的 PB 口输 出到 74LS240 进行对红绿灯的控制 而 5 10 秒的延时则采用 8253 的计数器 0 和 2 级联产生 0 1HZz 的方波 其计数器 0 端口接 8255 的 PA0 再编写程 序判断 PA0 端口的电平高低来风别决定红绿灯的两个正常状态 2 人行道的延时操作 我采用 8259 中断实现 人行横道的延时终端服务程序 中 先判断行人前方灯的状态 如果为红灯则禁止此时使用中断延时 只有 轮到此方向通行而且还要有行人要通过时才允许此方向的绿灯延时 此时的 延时还是采用 8253 芯片实现 程序对 8253 重新初始化 增加其延时时间 以达到延时目的 延时过后 程序再对 8253 初始化为正常状态 从而达到此 方向一次掩饰的效果 另一方向同理 3 紧急情况下的全红状态 我采用 8259 中断 中断级最高 可以打断延时中 断 实现 通过一个开关送 8259 的 IR0 端口一个上升沿 此触发采用开关不 能使用单脉冲源 此时开关同时给 8255 的 PA7 端口一个高电平状态

温馨提示

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

评论

0/150

提交评论