一、实验目的
1.学习80C51内部定时/计数器使用方法
2.学习计数器各种工作方式的用法
二、实验说明
1、80C51内部有两个定时/计数器T0和T1,16位是指定时/计数器内的计数器是16位的,由2个8位计数器组成。本实验用的是T0,它的2个8位计数器TH0和TL0,TH0是高8位,TL0是低八位。所谓加法计数器,指其计数的方法是对计数脉冲每次加1。在其它单片机和可编程计数器芯片中,有的计数器是减法计数器,如8155的14位计数器,8253的16计数器,即先设置计数器的初值,然后对计数器脉冲每次减1,减到0,计数器溢出。而80C51内部的计数器是加法计数器,需先设置计数器的初值,本实验设置计数器初值为0,然后对计数脉冲每次加1,加到计数器满后溢出。
2、本实验中内部计数器起计数器的作用。外部事件计数脉冲由P3.4引入定时器T0。单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。这就决定了输入波形的频率不能超过机器周期频率。
三、实验内容及步骤
1、使用单片机最小应用系统模块,用扁平数据线连接P0口与八位逻辑电平显示模块,T0端口接单次脉冲电路的输出端。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加 计数器.ASM源程序,进行编译,直到编译无误。
4、进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。
5、打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序。连续按动单次脉冲的按键,8位发光二极管显示按键次数。
四、流程图及源程序
ORG 0000H
LJMP START
ORG 0030H
START:MOV TMOD,﹟00000101b ;置T0计数器方式1
MOV TH0, ﹟0 ;置T0初值
MOV TL0, ﹟0
MOV TR0 ;T0运行
LOOP: MOV P1,TL0 ;记录P1口脉冲个数
LJMP LOOP ;返回
END
五、思考题
1、80C51单片机的最高计数频率为多少?