输入/输出(I/O)是计算机系统经常用到的功能,也是MCS51 单片机最基本的外设功能。80C51片上有32 个I/O 引脚,能够满足许多实际应用系统对输入、输出端口的要求。有些应用系统需要用到较多I/O 端口,单片机片上I/O 引脚不够用时,可以扩展I/O 端口,以满足实际应用系统的需要。
实验 1 开发环境使用及常用指令功能
一、实验目的
1、掌握集成开发环境的使用; 2、初步了解实验装置的使用方法; 3、熟悉常用指令的功能; 4、熟悉程序调试的方法;
5、学习自己编写、调试计算程序。
二、实验任务与要求
1、将MCS51 核心板插在实验箱上,连接实验箱电源,连接计算机与核心板之间的USB 线,将核心板上的跳线器S3 短接到USB 一侧,打开实验箱电源开关。
2、安装、运行Keil uVision4 软件(以上操作如果有的步骤已经完成,不需重复)。 3、Keil 软件设置为硬件仿真的方式,按照第2 章介绍的内容,顺次熟悉2.2~2.5 节Keil 软件的操作和功能。
4、自行编写一段计算程序,实现双字节二进制数除以单字节二进制数,将所编程序录入、编译加载并调试。
5、采用设置断点及单步运行等方法,观察有关寄存器、变量的值,理解程序及指令的功能。根据程序执行过程中,寄存器、变量值的变化,分析、排查程序问题,并在实验报告中记录分析过程。
6、用排线将单片机P2 口与通用板上LED 指示灯连接,单步执行下列指令:
SETB P2.0 CLR P2.0 CPL P2.1 CPL P2.1 MOV A,#55H MOV P2,A XRL A,#0FFH MOV P2,A RLC A MOV P2,A
观察指令执行后,指示灯的亮、熄现象,理解指令的功能。在实验报告中记录实验现象和分析。
任务4:
假设被除数存在30H,31H中,30H为高位,除数存在32H中,商存于33H和34H中,33H为高位。
ORG 1000H
MOV A, 32H JNZ BEGDIV JZ ERR
BEGDIV: MOV B, #8 MOV A, 30H MOV R4, 32H MOV R2, 30H MOV R3, 31H SUBB A, R4 JNC LOOP1
LOOP 2: MOV R2, A MOV A, R3 RLC A MOV R3, A MOV A, R2 RLC A MOV R2, A MOV F0, C CLR C
SUBB A, R4 JB F0, LOOP3
JC LOOP4 ;若够减 LOOP 3: MOV R2, A INC 34H
LOOP4: DJNZ B, LOOP2 CLR F0 DONE: RET
LOOP1:SUBB A, R4 JC LOOP2 INC 33H SJMP LOOP1 ERR: …………
基本原理:与基本除法方法类似,不同点在于使用二进制的除法,由于二进制进位为当前数的两倍,除法采用移位计算,先从高位开始减,当被除数高位大于除数时,从高位开始减法,当高位减到不够时,留下余数转到LOOP2进行移位运算。移位算法是将所有被除数向左移一位,溢出的位存于F0中,当F0大于1时,说明程序够减,34H中的商加1,当F0小于1时,若够减商加1,不够减继续移位,移完8次之后得出商。33H为高位。
任务5:
指示灯现象:
SETB P2.0 11010101;将P2的0位置1,其他灯由之前的单片机数据得出。 CLR P2.0 01010101;将P2的0位置清零,1号灯灭。 CPL P2.1 00010101;将P2的1位取反,2号灯灭。 CPL P2.1 01010101;将P2的1位取反,2号灯亮。 MOV A,55H 01010101;将55H赋给A。
MOV P2,A 01010101;将55H置于P2中,
XRL A,#0FFH;01010101;将A与55H异或,A为01010101 MOV P2,A 10101010;将A赋到P2中
RLC A 10101010;将A取反,A为10101010 MOV P2,A 01010101;将A赋到P2中
实验 2 “跑马灯”实验
一、实验目的
1、了解发光二极管的使用方法;
2、熟悉串行、并行输出扩展接口的方法; 3、学习常用指令用法和简单程序编写技巧。
二、实验说明
LED(Light Emitting Diode)是发光二极管的英文缩写。单个LED 在各种仪器、仪表中常用作各种指示灯,根据外形直径的大小,常用的有Φ3、Φ5(mm)等型号,每一种直径下,还有普通亮度、高亮度、超高亮度等种类。普通亮度发光二极管工作电流一般为十几个毫安,高亮和超亮发光二极管在同样工作电流下,亮度更高。由于单片机的I/O 口引脚输出高电平和低电平的驱动能力是不同的,输出低电平的驱动能力要大于高电平,因此最好使低电平输出有效。利用单片机的 P1 口低4 位,通过一片74HC595 控制8 位发光二管,方法是在实验箱通用板上将P1 口的低4 位与74HC595 的输入信号相连,将74HC595 的输出分别与发光二极管相连,由此构成的实验电路原理如图3.1.1 所示。
3.1.1 发光二极管串行控制电路
在图 3.1.1 中,74HC595 的SI(串行数据输入端)、SCLK(串行移位时钟输入端)、RCLK(输出寄存器锁存时钟端)、/OE(输出引脚使能端)分别与单片机的P1.0、P1.1、P1.2、P1.3 引脚相连。74HC595 输出低电平时点亮发光二极管。图3.1.1 中595 的输出使能引脚(/OE)已直接连接到“地”,使输出总是使能。
利用图 3.1.1 电路实现“跑马灯” 参考程序如下:
;串行控制“跑马灯”显示程序
LIGHT EQU 62H ;定义指示灯数据存放地址单元
ORG 0000H AJMP START ORG 0030H
START: MOV SP,#30H ;初始化堆栈指针 CLR P1.0 CLR P1.1 CLR P1.2
CLR P1.3 ;初始化有关I/O 口 ;P1.3 始终为0,输出使能恒有效
MOV LIGHT,#01H ;初始化指示灯数据 NOP
MAIN: LCALL FLY_LED ;调用指示灯循环点亮子程序 LCALL DELAY ;延时子程序同参考例程一 AJMP MAIN ;循环执行主程序
;****************************************************** ;通过 595 循环点亮指示灯子程序
;***************************************************** FLYLED: MOV A,LIGHT CLR C
RLC A ;累加器A 中最高位移到C CPL C ;因低电平点亮,故取反
MOV P1.0,C ;LIGHT 中数据最高位送到SER 输入端 SETB P1.1 NOP
CLR P1.1 ;产生一个输入锁存脉冲 SETB P1.2 NOP
CLR P1.2 ;产生一个寄存器锁存脉冲
CJNE A,#0,FLYCON ;A 中不为0 则继续 MOV A,#01H ;A 中为0,循环完一轮 ;重新赋初值
FLYCON: MOV LIGHT ,A RET
;延时子程序
DELAY: MOV R7,#20 ;将R7 赋值20
DELAY1: MOV R6,#0 ;将R6 赋值0,相当于赋值256
DELAY2: DJNZ R6,$ ;R6 中的值减1 不为0 则循环执行当前行 DJNZ R7,DELAY1 ;R7 中的值减1 不为0 则循环
RET
三、实验任务和要求
1、理解图3.1.1的电路原理和参考程序;
2、按图3.1.1连接电路,调试参考程序,单步执行部分指令,观察有关寄存器中值的变化,理解指令的功能和执行效果。
3、自行修改参考程序,改变发光二极管的显示花样?(两个灯同时移位)
答:改变程序中第12行MOV LIGHT,#01H,将其改变为MOV LIGHT,#03H。则有两个相邻的灯移位。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- awee.cn 版权所有 湘ICP备2023022495号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务