实验目的:掌握定时器的工作原理
实验内容:利用按键K3来启动数码管(0~9)进行倒计时9秒,数码管初始状态显示为灭(要求在主函数里完成显示);按下K3则使数码管从“9”一直显示到"0";要求写出定时器和外部中断的中断函数
实验代码:
#include<reg51.h>
int main(){
EA=1;//总允许打开
EX0=1;//外中断0允许
IT0=1;//外中断0下降沿判断
while(1){
P1=0xff;} //初始状态显示为灭
}
void int0(void) interrupt 0 using 0{
char a[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98};//数码管显示(0~9)
int i=9,n=0; //循环9次
TMOD=0x10;//定时器1开启工作方式1(16位)
TR1=1;//启动定时器
while(i!=-1){
P1=a[i ];
TH1=(65536-46080)/256; //s=65536-t*f/12,TH1=s/256,高8位赋值 ,t为定时时间单位为us,f为晶震频率11.0592M
TL1=(65536-46080)%256;
while(TF1==0);
TF1=0;
n++;
/*do{
TF1=0; //定时器1溢出置0
}while(!TF1); */
if(n==20){
n=0;
i--;
}
}
}
|