一、实验目的
- 掌握定时/计数器的4种工作方式的工作特点及应用
- 掌握长时间段定时的实现方法
- 掌握查询控制的定时/计数器的编程
二、实验内容
- 知识要点
(1)8051内部有两个定时/计数器T0和T1,均可对系统内部的机器周期计数(定时模式)和芯片之外的脉冲信号计数(计数模式);都有4种工作方式,其不同之处在于计数值宽度不一样(13位/16位/8位)以及计数初值是否能自动重装。
(2)与定时/计数器相关的控制字及控制位主要有TMOD,TH0/TH1,TL0/TL1,TCON
(3)单片机晶振频率为6MHz。 - 实验内容
(1)利用8051的定时/计数器控制循环点亮P1口所接每一位LED。要求点亮周期自行设计。(使用方式0实现)
#include<reg51.h>
char t;
char i=0;
void main(){
char led[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
TMOD=0x01;
TH0=0x3C;
TL0=0xB0;
TR0=1;
while(1){
if(TF0){
i=i%8;
TF0=0;
t++;
if(t%20==0){
P1=led[i];
i++;
TH0=0x3C;
TL0=0xB0;
}
}
}
}
(2)利用8051的计数器对外部脉冲进行计数,将计数次数通过P1口输出。
#include<reg51.h>
int t=0;
void main(){
TMOD=0x05;
TH0=0xff;
TL0=0xff;
TR0=1;
EA=1;
ET0=1;
while(1);
}
timer() interrupt 1{
t++;
P1=~t;
TH0=0xff;
TL0=0xff;
TF0=0;
}
以上两个题共用一个电路图