定时器c语言程序
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit gw=P1^4;            //数码管各位位选
sbit sw=P1^5;            //十位位选
sbit SPEAK=P1^6;      //定义蜂鸣器
uchar num,num1,tt,shi,ge,t; //tt为设定值,t为当前计数值
uchar code table[]={
0x88,0x9F,0xA4,0x85,
0x93,0xC1,0xC0,0x8F,
0x80,0x81,0x82,0xC8,
0xE8,0xA1,0x86,0x8E};    //数码管显示段码
void delay(uint z);    //延时子函数声明
void play(uchar aa);    //数码管显示子函数声明
void SPK_Test( void );    //蜂鸣器控制子函数
void Init();    //初始化子函数声明
void KeyScanf(void);  //  键盘扫描
void main()
{
Init();    //初始化
for(num1=60;num1>0;num1--)
play(tt);
连接路由器无法上网t=tt;
while(1)
{
KeyScanf();
while(t==0)
{
TR0=0;    //定时时间到停止定时器工作   
SPK_Test();
t=60;
break;
play(t);    //显示当前剩余定时时间 云电视价格
}
}
/**********************************************************
*名称:void Init()
*功能:初始化定时器0等
***********************************************************/
void Init()
{
EA=1;    //开总中断
ET0=1;    //开定时器0中断
tt=60;    //设定默认定时时间  (一分钟 )
num=20;
TMOD=0x01;    //设置定时器0为工作方式1
TH0=(65536-50000)/256; //定时器0设定50ms定时初值
TL0=(65536-50000)%256;
SPEAK=0;
}
/*******************************************
函数名:按键扫描
描  述:
*******************************************/
void KeyScanf(void)
{
if((P1&0x0f)!=0x0f)    //检查按键
{
delay(20);
if((P1&0x0f)!=0x0f) //检查按键 
{
delay(20);
if(!(P1&0x01))
while(1)
{ TR0=0;
play(tt);
if(!(P1&0x02))
{
tt++;
play(tt);
}
else if(!(P1&0x04))
{
tt--;
play(tt);
if(!(P1&0x08))
{
TR0=1;
t=tt;
break;
}
}
if((TR0==1)&&(!(P1&0x08)))
{
if(!(P1&0x08))
{
TR0=0;  //停止
delay(20);
}
}
if((TR0==0)&&(!(P1&0x08)))
{
{
TR0=1;  //启动
成本管理的概念delay(20);
}
}
}
}
}
/**************************************************************
*名称: Delay_NS()
*功能: 长软件1ms延时
***************************************************************/
void  delay(uint ms)
{
uchar  i;
while(ms--)        //ms毫秒软件延时
{
for(i = 63;i > 1;i--);
}
}
/************************************************************
函数名称:定时器0中断服务子程序 
功能:    重装初并重启定时器值,
定时中断满20次(1s) , 计数减1
************************************************************/
void time0() interrupt 1      //定时器0中断子函数
{
十字军之王3
if(num>0)
{
num--;
}
else if(num==0)
{
t--;
num=20;
}
TH0=(65536-50000)/256;      //重装定时器初值
TL0=(65536-50000)%256;
ET0=1;
脱脂大黄鱼
TR0=1;          //重新启动T0
}
/**************************************************************
*名称: void play(uchar)
*功能: LED数码管显示0-F字符,
同时控制2个数码管显示对应的十六进制数 
***************************************************************/
void play(uchar aa)        //数码管显示子函数
{
shi=aa/10;
ge=aa%10;
P0=table[ge];
gw=0;
delay(20);            // 延时 显示
gw=1;
P0=table[shi];
sw=0;
delay(20);          // 延时 显示
sw=1;临时身份证要多久
}
/*******************************************
函数名:SPK_test()
描  述: 蜂鸣器控制
*******************************************/
void SPK_Test( void )
{
unsigned int  i = 0;
unsigned char j,k,m = 34;
for(j = 0;j < 8;j ++)
{
m -=1;
for(i = 0;i < 2000;i ++ )
{
SPEAK = ~SPEAK;
for(k = m;k > 1;k--);
}
delay(15); 
}SPEAK =0;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。