山东建筑大学 计算机学院 实验报告
课程: 汇编语言与接口技术 同组者: 实验日期:
实验四 定时器系统应用实验
一、实验目的
1. 掌握51单片机定时器/计数器的工作原理 2. 掌握51单片机定时器/计数器的控制字 3. 掌握51单片机定时器/计数器的中断 二、实验原理
本实验的所用的原理图如图2.1和图2.2所示。LED0控制原理已在实验3-1中分析。在图2.2中,蜂鸣器的控制信号BELL信号连接单片机的P4.5引脚,同时连接到PNP三极管的基极上,故当信号BELL为高电平时,三极管截止,BELL不发声;当信号BELL为低电平时,三极管导通,BELL发声。
图2.2LED灯接口电路
图2.2 蜂鸣器控制电路
三、实验内容
在实验中,要求设计一个应用系统,每间隔1秒钟,LED0闪烁一次,蜂鸣器产生声音一次,要求用定时器中断实现程序中的时间控制。
1)分析本实验控制原理,画出程序流程图。
2)根据实验要求,编写系统程序,并在实验板上进行调试;
第 1页 /共 3页
山东建筑大学 计算机学院 实验报告
课程: 汇编语言与接口技术 同组者: 实验日期:
1) 程序流程图
2) 程序代码
#include \"STC/STC15F2K60S2.H\" sbit LEDLE=P2^5; sbit DIGLE=P2^6; sbit SEGLE=P2^7;
sbit led = P0^0; sbit bell = P4^5;
unsigned char num;
void main () { DIGLE=0; SEGLE=0; TMOD = 0x01; TH0 = (65536 - 45872)/256; TL0 = (65536 - 45872)%256; EA = 1; ET0 = 1; TR0 = 1;
第 2页 /共 3页
山东建筑大学 计算机学院 实验报告
课程: 汇编语言与接口技术 同组者: 实验日期:
while(1){ if(num == 20){ num = 0; led = ~led; bell = ~bell; } } }
void T0_time () interrupt 1 { TH0 = (65536 - 45872)/256; TL0 = (65536 - 45872)%256; num++; }
3) 运行结果
四、思考题 长延时时间如何通过定时器解决?
答:长时间延时时,定义一个计数变量,定时器每溢出一次,计数变量加一,如此循环来达到长时间定时的效果。
第 3页 /共 3页