标题:
一个简单实用的单片机定时器程序
[打印本页]
作者:
崔晓军
时间:
2022-8-26 20:18
标题:
一个简单实用的单片机定时器程序
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit key1=P2^6;
sbit key3=P1^4;
sbit key4=P1^5;
sbit key5=P1^6;
sbit key6=P1^7;
sbit fmq=P3^7;
sbit jdq=P3^6;
void chushihua();
void chushihua1();
void xianshi();
void xianshi1();
void xianshi2();
void delay(unsigned int xms);
uint a=0,b=1;
unsigned long int shu=0,shu1=0;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
#define duan P0
sbit wei1=P2^0;
sbit wei2=P2^1;
sbit wei3=P2^2;
sbit wei4=P2^3;
sbit wei5=P2^4;
sbit wei6=P2^5;
sbit wei11=P1^0;
sbit wei12=P1^1;
sbit wei13=P1^2;
sbit wei14=P1^3;
void main()
{ EA=1;
EX0=1;
EX1=1;
IT0=0;
chushihua1();
chushihua();
while(1)
{xianshi();
if(shu==shu1)
{while(1)
{TR0=0;
fmq=0;
jdq=0;
xianshi();
}
}
}
}
void chushihua()
{ shu=0;
TMOD=0x01;
TH0=(65536-46100)/256;
TL0=(65536-46100)%256;
EA=1;
ET0=1;
TR0=1;
}
void chushihua1()
{while(b)
{xianshi1();
if(key1==0)
{ delay(10);
if(key1==0)
{b=0;
}
}
while(!key1);
delay(1);
while(!key1);
if(key5==0)
{delay(10);
if(key5==0)
{shu1=shu1+3600;
}
}
while(!key5);
delay(1);
while(!key5);
if(key3==0)
{delay(10);
if(key3==0)
{shu1=shu1-3600;
}
}
while(!key3);
delay(1);
while(!key3);
if(key6==0)
{delay(10);
if(key6==0)
{shu1=shu1+60;
}
}
while(!key6);
delay(1);
while(!key6);
if(key4==0)
{delay(10);
if(key4==0)
{shu1=shu1-60;
}
}
while(!key4);
delay(1);
while(!key4);
}
}
void dingshiqi0() interrupt 1//定时器0中断子程序 不需声明
{ TH0=(65536-46100)/256;
TL0=(65536-46100)%256;
a++;
if(a==20)
{a=0;
shu++;
}
}
void xianshi()
{ unsigned int sw,w,q,b,s,g;
xianshi2();
sw=shu%360000/36000;
duan=table[sw];
wei6=1;
wei5=0;
wei4=0;
wei3=0;
wei2=0;
wei1=0;
wei14=0;
wei13=0;
wei12=0;
wei11=0;
delay(1);
w=shu%36000/3600;
duan=table[w];
wei6=0;
wei5=1;
wei4=0;
wei3=0;
wei2=0;
wei1=0;
wei14=0;
wei13=0;
wei12=0;
wei11=0;
delay(1);
q=shu%3600/600;
duan=table[q];
wei6=0;
wei5=0;
wei4=1;
wei3=0;
wei2=0;
wei1=0;
wei14=0;
wei13=0;
wei12=0;
wei11=0;
delay(1);
b=shu%600/60;
duan=table[b];
wei6=0;
wei5=0;
wei4=0;
wei3=1;
wei2=0;
wei1=0;
wei14=0;
wei13=0;
wei12=0;
wei11=0;
delay(1);
s=shu%60/10;
duan=table[s];
wei6=0;
wei5=0;
wei4=0;
wei3=0;
wei2=1;
wei1=0;
wei14=0;
wei13=0;
wei12=0;
wei11=0;
delay(1);
g=shu%10;
duan=table[g];
wei6=0;
wei5=0;
wei4=0;
wei3=0;
wei2=0;
wei1=1;
wei14=0;
wei13=0;
wei12=0;
wei11=0;
delay(1);
}
void xianshi1()
{ unsigned int q,b,s,g;
duan=table[0];
wei1=1;
wei2=1;
wei3=1;
wei4=1;
wei5=1;
wei6=1;
wei14=0;
wei13=0;
wei12=0;
wei11=0;
delay(2);
q=shu1%360000/36000;;
duan=table[q];
wei14=1;
wei13=0;
wei12=0;
wei11=0;
wei1=0;
wei2=0;
wei3=0;
wei4=0;
wei5=0;
wei6=0;
delay(1);
duan=table[0];
wei1=1;
wei2=1;
wei3=1;
wei4=1;
wei5=1;
wei6=1;
wei14=0;
wei13=0;
wei12=0;
wei11=0;
delay(2);
b=shu1%36000/3600;
duan=table[b];
wei14=0;
wei13=1;
wei12=0;
wei11=0;
wei1=0;
wei2=0;
wei3=0;
wei4=0;
wei5=0;
wei6=0;
delay(1);
duan=table[0];
wei1=1;
wei2=1;
wei3=1;
wei4=1;
wei5=1;
wei6=1;
wei14=0;
wei13=0;
wei12=0;
wei11=0;
delay(2);
s=shu1%3600/600;
duan=table[s];
wei14=0;
wei13=0;
wei12=1;
wei11=0;
wei1=0;
wei2=0;
wei3=0;
wei4=0;
wei5=0;
wei6=0;
delay(1);
duan=table[0];
wei1=1;
wei2=1;
wei3=1;
wei4=1;
wei5=1;
wei6=1;
wei14=0;
wei13=0;
wei12=0;
wei11=0;
delay(2);
g=shu1%600/60;
duan=table[g];
wei14=0;
wei13=0;
wei12=0;
wei11=1;
wei1=0;
wei2=0;
wei3=0;
wei4=0;
wei5=0;
wei6=0;
delay(1);
}
void xianshi2()
{ unsigned int q,b,s,g;
q=shu1%360000/36000;;
duan=table[q];
wei14=1;
wei13=0;
wei12=0;
wei11=0;
wei1=0;
wei2=0;
wei3=0;
wei4=0;
wei5=0;
wei6=0;
delay(1);
b=shu1%36000/3600;
duan=table[b];
wei14=0;
wei13=1;
wei12=0;
wei11=0;
wei1=0;
wei2=0;
wei3=0;
wei4=0;
wei5=0;
wei6=0;
delay(1);
s=shu1%3600/600;
duan=table[s];
wei14=0;
wei13=0;
wei12=1;
wei11=0;
wei1=0;
wei2=0;
wei3=0;
wei4=0;
wei5=0;
wei6=0;
delay(1);
g=shu1%600/60;
duan=table[g];
wei14=0;
wei13=0;
wei12=0;
wei11=1;
wei1=0;
wei2=0;
wei3=0;
wei4=0;
wei5=0;
wei6=0;
delay(1);
}
void delay(unsigned int xms)
{unsigned int i,j;
for(i=xms;i>0;i--)
for(j=114;j>0;j--);
}
void waibuzhongduan0() interrupt 0//外部中断0子程序 不需声明
{while(1)
{TR0=0;
fmq=0;
jdq=0;
xianshi();
}
}
void waibuzhongduan1() interrupt 2//外部中断1子程序 不需声明
{while(1)
{TR0=0;
fmq=0;
jdq=0;
xianshi();
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1