实验三 定时器中断实验一、实验目的1、掌握 51 单片机定时器基本知识;2、掌握定时器的基本编程办法;3、学会使用定时器中断
二、实验内容1、运用定时器中断产生频率为 10HZ、5HZ 的方波,并在示波器观察波形;2、运用定时器设计一种秒表,计数范畴为 0—59,并在数码管实时显示
三、实验原理例子:当晶振为 12M 时机器周期为 1 微秒,要实现 2 毫秒的定时,需要个机器周期,对于 51 单片机内部定时器来说,最大只能定时 65536 个机器周期,能定时 65
535 毫秒
如果规定定时更长,必须借助软件循环进行扩展
例如:当需要得到 500 毫秒的定时中断定时,设定时为 50 毫秒时,再扩展 10 倍可得到 500 毫秒的定时,选择模式 1,每个 50ms 中断一次,设初值为 X,根据下面公式,可求得 X 的值
有关定时计数器的特殊功效寄存器,请参考课本
四、实验环节1、使用 Proteus 设计仿真原理图;2、使用 Keil 设计程序;3、联合调试仿真
五、实验成果1、运用定时器设计一种秒表,计数范畴为 0—59,并在数码管实时显示的程序2、运用定时器中断产生频率为 10HZ、5HZ 的方波,并在示波器观察波形的程序#include#define uchar unsigned char sbit aa= P0^0; sbit cc=P0^1;uchar m100=0,m200=0,second,i=0; void main(){ TMOD=0x01; //定时器 0 工作方式为 1 TH0=(65536-50000)/256; //装初值 TL0=(65536-50000)%256; EA=1; //开总中断 ET0=1; //开定时器中断 TR0=1; //启动定时器 while(1) { P2=i/10; P3=i%10; } //等待中断}void timer