本设计中的蜂鸣器是在最后程序技术的时候起提醒人们的作用。。。。。。。
登录后可评论,请 登录或 注册
你把Proteus仿真文件发上么
帮顶一个
根据这个定时器的设置做五次就可以,给不了你太多
记得ic 币
你把Proteus仿真文件发上么
帮顶一个
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// º¯ÊýÃû£º SetTimer0
// ¹¦ÄÜ˵Ã÷£º ÅäÖö¨Ê±¼ÆÊýÆ÷0
// Èë¿Ú²ÎÊý£º ¹¤×÷·½Ê½
// ¶¨Ê±¼ÆÊýģʽ
// ¿ØÖÆ·½Ê½Ñ¡Ôñ
// µÚÒ»³õÖµ
// µÚ¶þ³õÖµ
// ·µ»Ø²ÎÊý£º ²Ù×÷½á¹û
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
char SetTimer0(char mode, char tc,char ctrl,int value0,int value1)
{
switch(mode) //¹¤¼þ·½Ê½ÉèÖÃ
{
case 0: //¹¤×÷·½Ê½0
TMOD = (TMOD & 0xF0) | 0x00;
TH0 = value0 >> 0x05;
TL0 = value0 << 0x03;
break;
case 1: //¹¤×÷·½Ê½1
TMOD = (TMOD & 0xF0) | 0x01;
TH0 = value0 >> 0x08;
TL0 = value0 ;
break;
case 2: //¹¤×÷·½Ê½2
TMOD = (TMOD & 0xF0) | 0x02;
TH0 = value0 ;
TL0 = value0 ;
break;
case 3: //¹¤×÷·½Ê½3
TMOD = (TMOD & 0xF0) | 0x03;
TH0 = value0;
TL0 = value1;
break;
default:
return 0;
}
switch(tc) //¶¨Ê±¼ÆÊýÆ÷ģʽ
{
case 0: //¶¨Ê±Æ÷
TMOD |= 0x00;
break;
case 1: //¼ÆÊýÆ÷
TMOD |= 0x04;
break;
default:
return 0;
}
switch(ctrl) //Æô¶¯Ä£Ê½
{
case 0: //TR0¿ØÖÆÆô¶¯
TMOD |= 0x00;
break;
case 1: //Òý½Å/INT0¿ØÖÆÆô¶¯
TMOD |= 0x08;
break;
default:
return 0;
}
return 1;
}
¡ñ ´ò¿ª0ºÅ¶¨Ê±Æ÷×Ó³ÌÐò
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// º¯ÊýÃû£º OpenTimer0
// ¹¦ÄÜ˵Ã÷£º ´ò¿ª¶¨Ê±¼ÆÊýÆ÷0
// Èë¿Ú²ÎÊý£º ¹¤×÷·½Ê½
// ·µ»Ø²ÎÊý£º ²Ù×÷½á¹û
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
char OpenTimer0(char mode)
{
switch(mode) //¹¤¼þ·½Ê½ÉèÖÃ
{
case 0: //¹¤×÷·½Ê½0
ET0 = 1;
EA = 1;
TR0 = 1;
break;
case 1: //¹¤×÷·½Ê½1
ET0 = 1;
EA = 1;
TR0 = 1;
break;
case 2: //¹¤×÷·½Ê½2
ET0 = 1;
EA = 1;
TR0 = 1;
break;
case 3: //¹¤×÷·½Ê½3
ET0 = 1;
ET1 = 1;
EA = 1;
TR0 = 1;
TR1 = 1;
break;
default:
return 0;
}
return 1;
}
¡ñ 1ºÅ¶¨Ê±Æ÷ÉèÖÃ×Ó³ÌÐò
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// º¯ÊýÃû£º SetTimer1
// ¹¦ÄÜ˵Ã÷£º ÅäÖö¨Ê±¼ÆÊýÆ÷1
// Èë¿Ú²ÎÊý£º ¹¤×÷·½Ê½
// ¶¨Ê±¼ÆÊýģʽ
// ¿ØÖÆ·½Ê½Ñ¡Ôñ
// µÚÒ»³õÖµ
// ·µ»Ø²ÎÊý£º ²Ù×÷½á¹û
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
char SetTimer1(char mode, char tc,char ctrl,int value0)
{
switch(mode) //¹¤¼þ·½Ê½ÉèÖÃ
{
case 0: //¹¤×÷·½Ê½0
TMOD = (TMOD & 0x0F) | 0x00;
TH0 = value0 >> 0x05;
TL0 = value0 << 0x03;
break;
case 1: //¹¤×÷·½Ê½1
TMOD = (TMOD & 0x0F) | 0x10;
TH0 = value0 >> 0x08;
TL0 = value0 ;
break;
case 2: //¹¤×÷·½Ê½2
TMOD = (TMOD & 0x0F) | 0x20;
TH0 = value0 ;
TL0 = value0 ;
break;
default:
return 0;
}
switch(tc) //¶¨Ê±¼ÆÊýÆ÷ģʽ
{
case 0: //¶¨Ê±Æ÷
TMOD |= 0x00;
break;
case 1: //¼ÆÊýÆ÷
TMOD |= 0x40;
break;
default:
return 0;
}
switch(ctrl) //Æô¶¯Ä£Ê½
{
case 0: //TR0¿ØÖÆÆô¶¯
TMOD |= 0x00;
break;
case 1: //Òý½Å/INT0¿ØÖÆÆô¶¯
TMOD |= 0x80;
break;
default:
return 0;
}
return 1;
}
¡ñ ´ò¿ª1ºÅ¶¨Ê±Æ÷×Ó³ÌÐò
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// º¯ÊýÃû£º OpenTimer1
// ¹¦ÄÜ˵Ã÷£º ´ò¿ª¶¨Ê±¼ÆÊýÆ÷1
// Èë¿Ú²ÎÊý£º ¹¤×÷·½Ê½
// ·µ»Ø²ÎÊý£º ²Ù×÷½á¹û
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
char OpenTimer1(char mode)
{
switch(mode) //¹¤¼þ·½Ê½ÉèÖÃ
{ case 0: //¹¤×÷·½Ê½0
ET1 = 1;
EA = 1;
TR0 = 1;
break;
case 1: //¹¤×÷·½Ê½1
ET1 = 1;
EA = 1;
TR0 = 1;
break;
case 2: //¹¤×÷·½Ê½2
ET1 = 1;
EA = 1;
TR0 = 1;
break;
default:
return 0;
}
return 1;
}
根据这个定时器的设置做五次就可以,给不了你太多
记得ic 币