实验四 中断与定时/计数器实验
实验名称:中断与定时/计数器实验 学时安排:4学时 实验类别:验证性 实验要求:必做 一、实验目的和任务
1、掌握80C51单片机外部中断的初始化及中断服务子程序设计方法。 2、掌握80C51单片机定时器/计数器的程序控制方法。 二、实验原理简介
中断是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件。待处理完成后,再返回到原先被中止的工作处,继续进行随后的工作。引起突发事件的来源称为中断源,中断源要求服务的请求称为中断请求,对中断请求提供的服务称为中断服务,中断管理系统处理事件的过程称为中断响应过程。80C51单片机至少包括5个中断源:
INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。(本实验用) INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。 T0:定时器/计数器0中断,由T0计满回零引起。(本实验用) T1:定时器/计数器l中断,由T1计满回零引起。
TI/RI:串口中断,串口完成一帧字符发送/接收后引起。
本实验对应的硬件电路与实验三相同(见图3.3.1)。P0口用于控制发光管L101~L108,口线输出0(低电平)时,对应的发光管点亮,口线输出1(高电平)时,对应的发光管熄灭。P3口的4根口线连接独立按键KX0~KX3,其中KX0对应外部中断0,进行KX0按键动作的时候可以触发外部中断。
注意:在做本实验时,须将拨码开关JUMP2置为接通状态(向左)。 三、实验设备
1、PC机一台(已安装Keil μVision、STC_ISP等软件); 2、ZSC-1单片机实验箱一台。 四、实验内容和步骤
1、编写一段程序,用P0口作为控制端口,使实验箱上的LED轮流点亮(走马灯)。用外部中断0/KX0控制走马灯的暂停/继续。
ORG 0000H
LJMP MAIN ORG 0003H
LJMP __________ ORG 0100H MAIN: MOV SP,#60H SETB IT0
MOV A,#0FEH MOV R5,#00H
NEXT: CJNE R5,#00H,NEXT
;准备点亮第一只发光管 ;00表示继续,FF表示暂停
19
MOV P0,A ACALL DELAY
RL A SJMP NEXT
; 延时子程序
DELAY: MOV R2,#3 DELAY2: MOV R3,#200 DELAY3: MOV R4,#200 DJNZ R4,$ DJNZ R3,DELAY3 DJNZ R2,DELAY2 RET
;外部中断0服务子程序 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 END
;准备点亮下一只发光管
观察实验结果,解释如何实现走马灯的暂停和继续。 比较电平触发和边沿触发时走马灯控制的难易程度。
2、编写一段程序,用P0口作为控制端口,使实验箱的LED轮流点亮(走马灯)。用定时/计数器0控制走马灯切换速度。
MAIN:
ORG LJMP ORG LJMP ORG MOV MOV MOV MOV MOV MOV SETB SETB SETB SJMP
0000H MAIN ZIT0 0100H SP,#60H TMOD,#01H TH0,#3CH TL0,#0B0H R6,
R7, ;准备点亮第一只发光管 ET0 EA TR0 $
20
;定时中断0服务子程序 ZIT0: DJNZ R6,ZRET MOV A,R7 MOV ,A RL A MOV R7,A MOV R6, ZRET: MOV TH0,#3CH MOV TL0,#0B0H
END
修改R6=0或1时,观察走马灯的速度快慢。
ZRET:处没有重置初值时的走马灯的速度与 ZRET处有重置初值时的走马灯的速度的比较。
R6=50时,改变T0的初值,设为最大、最小时,比较走马灯的速度。 去掉R6的软件辅助延时,是否可以?速度怎样? 五、注意事项
1、中断服务子程序的返回指令不可用普通子程序的返回指令代替。 2、根据实际需要决定是否对中断服务子程序进行现场保护处理。 3、程序下载前可先利用Keil进行软件模拟调试。 六、作业及预习要求
1、理解实验程序的结构和功能,为关键语句加上注释,并回答相关问题。 2、对程序1进行修改,由KX0控制1个LED的状态翻转。 3、将程序2中的定时初值改为可读性更好的形式。
21
实验五 串口实验
实验名称:串口实验 学时安排:4学时 实验类别:验证性 实验要求:必做 一、实验目的和任务
1、理解80C51单片机串口工作原理。 2、掌握80C51单片机串口控制方法。 3、掌握简单串行通信协议的设计方法。 二、实验原理简介
串行通信是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,并可以利用电话线,从而大大降低了成本,特别适用于远距离通信。串行接口通讯实验是单片机和主机之间进行的通讯实验。
图3.5.1为ZSC-1实验箱串口通信电路的硬件结构,该电路提供RS232、USB两种接口,用于单片机与PC机之间的串行连接。CH340G为USB-UART协议转换芯片,在驱动程序支持下,CH340G可将PC机USB口映射为虚拟串口,其信号电平和数据格式与单片机串口兼容。MAX232A为串口电平转换芯片,可实现PC机RS232口与单片机串口之间的电平匹配。
Vcc1N581710uFUSBVCCD-D+GND12340.1uF654USBDMUSBDPV3XI7161N58170.1uFVcc2K2KCH340GTXDRXDGNDXO8VCC2311N5817MCU1STC12C5A60S212MHz22pF22pF1011MAX232AVCCV+C1+C1-T1OUTR1INV-GNDC2+C2-R1OUTT1IN6P3.0/RXDP3.1/TXDRS232162738495Vcc160.1uF210.1uF154512110.1uF314130.1uF1N5817 图3.5.1 串行通信电路
三、实验设备
1、PC机一台(已安装Keil μVision、STC_ISP等软件); 2、ZSC-1单片机实验箱一台。 四、实验内容和步骤
22
1、编写一段程序,利用单片机的串行口向PC机发送字符串。
① 编写程序,设置目标选项成功通过KEIL系统的编辑、编译和部分程序的动态调试。
ORG
LJMP ORG DB ORG MAIN: CLR MOV MOV MOV MOV MOV MOV SETB MOV MOV LOOP: MOV MOVC MOV JNB CLR INC DJNZ SJMP END
0000H MAIN 0050H
'WELCOME TO ZSC!' 0100H EA
SP,#60H TMOD, TH1, TL1, SCON, PCON,#00H
TR1 R7, DPTR,#0050H A,#00H A,@A+DPTR
,A TI,$ TI DPTR R7,LOOP $
;设置T1为方式2 ;设置波特率为9600 ;选择串口方式1
;启动定时器1
;开始发送
② 下载程序到单片机的FLASH中。
③ 运行PC机上的串口调试助手软件,设置串口参数和接收显示格式。 ④ 运行单片机程序,观察PC机串口调试助手收到的字符串是否正确。
2、编写一段程序,接收主机串行口发送来的字符,在单片机接收到‘X’的时候返回一个‘T’表示正确,否则返回一个‘F’表示错误。
MAIN: LOOP:
ORG LJMP ORG MOV MOV MOV MOV MOV MOV SETB JNB CLR MOV
0000H MAIN 0100H SP,#60H TMOD,#20H TH1,#0FDH TL1,#0FDH SCON,#50H PCON,#00H TR1 RI,$ RI A,SBUF
;设置T1 为方式2 ;设置波特率为9600 ;设置串口为方式1 ;启动定时器1
23