《微处理器实验》实验报告
一、实验目的与任务
1、掌握80C51单片机程序的调试与下载方法。
2、掌握80C51单片机并口的工作原理及输入输出控制方法。
3、理解和学会单片机外部中断的使用;
4、学习单片机定时器/计数器的应用。
二、实验原理介绍
80C51单片机包括P0~P3共4个并口,除可作为普通I/O口使用外,P0口还可用作8位数据总线口和低8位地址口,P2可用作高8位地址口,P3.6、P3.7可用作外部RAM或I/O接口的读、写控制引脚,P3.0~P3.5可用作串口、外部中断、计数器的功能引脚。
ZSC-1实验箱包括4个单片机,其中1#单片机(MCU1)和2#单片机(MCU2)的型号都是STC12C5A60S2,只是封装不同。
STC12C5A60S2采用80C51内核,片内资源和性能较标准80C51单片机增强了许多。
本课程的全部实验只用到MCU1。
图3-1为本实验对应的硬件电路。
P0口用于控制发光管L101~L108,口线输出0(低电平)时,对应的发光管点亮,口线输出1(高电平)时,对应的发光管熄灭。
P3口的4根口线连接独立按键KX0~KX3,由于P3口内部上拉电阻的作用,按键松开时,对应的口线表现为1状态(高电平),按键按下时,对应的口线表现为0状态(低电平)。
中断是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件。
待处理完成后,再返回到原先被中止的工作处,继续进行随后的工作。
引起突发事件的来源称为中断源,中断源要求服务的请求称为中断请求,对中断请求提供的服务称为中断服务,中断管理系统处理事件的过程称为中断响应过程。
51类单片机至少包括5个中断源:
INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。
(本实验用)
INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。
T0:定时器/计数器0中断,由T0计满回零引起。
(本实验用)
T1:定时器/计数器l中断,由T1计满回零引起。
TI/RI:串行I/O中断,串行端口完成一帧字符发送/接收后引起。
与实验三相同,图3-1为本实验对应的硬件电路。
P0口用于控制发光管L101~L108,口线输出0(低电平)时,对应的发光管点亮,口线输出1(高电平)时,对应的发光管熄灭。
P3口的4根口线连接独立按键KX0~KX3,其中KX0对应外部中断0,进行KX0按键动作的时候可以触发外部中断。
三、实验内容与结果
1、设计程序,控制发光管L101~L108以一定的时间间隔轮流点亮。
①在Keil中编写源程序。
参考程序如下(请将下划线部分补充完整):
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV A, #11111110B ;准备点亮第一只发光管
NEXT: MOV ,A
ACALL DELAY ;软件延时1s左右
A ;准备点亮下一只发光管
SJMP NEXT
DELAY: MOV R2,#200
DELAY2: MOV R3,#200
DELAY3: MOV R4,#100
DJNZ R4,$
DJNZ R3,DELAY3
DJNZ R2,DELAY2
RET
END
②在Keil中创建工程,加入源程序文件,设置选项,进行汇编/编译、连接、转换处理,生成HEX格
式的单片机程序文件。
③用串行电缆连接实验箱和PC机各自的串行通信口,并运行PC机上的STC_ISP程序,进行单片机程
序下载。
具体步骤如下:
a.在STC_ISP主界面选择MCU型号为STC12C5A60S2,打开②中生成的HEX格式程序文件,选择
正确的串口号,设置最高波特率为38400bps;
b.将实验箱总电源开关拨到左侧位置,接通主电源,将MCU1电源开关拨到下方位置,使1#单片
机断电;
c.点击STC_ISP主界面中的下载按钮,待系统提示“请给MCU上电”时再将MCU1电源开关拨到上
方位置,使1#单片机通电,开始下载程序,数秒后下载结束,写入单片机Flash存储器中的程序
自动开始运行。
④观察程序运行结果,若LED显示效果与要求的效果不同,或者想试验其它效果,则须修改源程序,重新进行汇编/编译、连接、转换处理,生成最新HEX文件,再按③中介绍的步骤下载和运行最新程序。
实验程序:
MAIN: MOV A,#11111110B;
NEXT: MOV P0,A
ACALL DELAY
RL A
SJMP NEXT
DELAY: MOV R2,#200
DELAY2: MOV R3,#200
DELAY3: MOV R4,#100
DJNZ R4,$
DJNZ R3,DELAY3
DJNZ R2,DELAY2
RET
END
1、编写一段程序,用P0口作为控制端口,使实验箱上的LED 轮流点亮。
用外部中断0/KX0控制走马灯的暂停/继续。
实验程序:
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP ZEX0
ORG 0100H
MAIN: MOV SP,#60H
SETB IT0
SETB EA
SETB EX0
MOV A,#0FEH
MOV R5,#00H
NEXT: CJNE R5,#00H,NEXT
MOV P0,A
ACALL DELAY
RL A
SJMP NEXT
DELAY:MOV R2,#100
DELAY2:MOV R3,#200
DELAY3:MOV R4,#200
DJNZ R4,$
DJNZ R3,DELAY3
DJNZ R2,DELAY2
RET
ZEX0: PUSH ACC
SETB RS0
MOV R2,#2
ACALL DELAY2
CLR RS0
JB P3.2,EXIT
MOV A,R5
XRL A,#0FFH
MOV R5,A
EXIT: POP ACC
CLR IE0
RETI
END
2、编写一段程序,用P0 口作为控制端口,使实验箱的LED 轮流点亮。
用定时/计数器0控制走马灯的闪烁速度。
实验程序:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP ZIT0
ORG 0100H
MAIN:MOV SP,#60H
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV R6,#20
MOV R7,#0FEH
SETB ET0
SETB EA
SETB TR0
SJMP $
ZIT0:DJNZ R6,ZRET
MOV A,R7
MOV P0,A
RL A
MOV R7,A
MOV R6,#20 ZRET:MOV TH0,#3CH
MOV TL0,#0B0H
RETI
END
四、实验体会。