安徽文达信息工程学院学生实验报告
学年第学期 课程名称《单片机原理与应用》实验日期: 班级 姓名 指导老师: 学号 成绩: 院部 实验项目名称: 实验五.定时器实验 实验类型: 编程仿真 一、【实验目的】
1.掌握单片机内部计数器的使用和编程方法; 2. 掌握中断处理程序的编程方法。
二、【实验原理及内容】
80C51 单片机内设置了两个可编程的 16 位定时器 T0 和 T1,通过编程,可以 设定为定时器和外部计数方式。T1 还可以作为其串行口的波特率发生器。
定时器 T0 由特殊功能寄存器 TL0 和 TH0 构成,定时器 T1 由 TH1 和 TL1 构成, 特殊功能寄存器 TMOD 控制定时器的工作方式,TCON 控制其运行。定时器的中断由中断允许寄存器 IE,中断优先权寄存器 IP 中的相应位进行控制。定时器 T0 的中断入口地址为 000BH,T1 的中断入口地址为 001BH。 定时器的编程包括: 1) 置工作方式。 2) 置计数初值。 3) 中断设置。
三、【实验器材】
1. PC机
2. Proteus仿真软件 3. Keilc51仿真软件
四、【实验步骤】
1.假设系统时钟为12MHz,设计电路并编写程序实现从P1.0引脚上输出一个周期为2ms的方波,如下图。
原理图见上图。
2、扩展实验
利用中断函数改写一下程序,实现40ms的周期方波。
五、【实验过程原始记录】(可附页)
基础实验代码: #include
{
TH0=0xfc; TL0=0x18; do{}while(!TF0); P1_0=!P1_0; TF0=0; } }
扩展实验代码: #include
TMOD=0x01; TR0=1; IE=0x82; TH0=0xb1; TL0=0xe0; while(1); }
void int0() interrupt 1{ TH0=0xb1; TL0=0xe0; P1_0=!P1_0; }
六、【实验结果分析】
实验符合预期结果。本次实验虽然较之前的代码稍微简单,但在实验过程中仍出现很多失误,如初值计算错误(错误使用了整个周期40000作为等式右边的结果,实际应为20000),还有就是中断号开始使用的是0(定时/计数器0对应的中断号为1),导致方波无法正确显示,以后在实验中需要更加细心。
教师评语:
相关推荐: