?? main.c
字號:
/*********************Copyright (c)************************************************************************
**--------------文件信息------------------------------------------------------
**文 件 名: 黑白線
**創 建 人: 黃海明
**最后修改日期: 2008年10月10日
**--------------歷史版本信息--------------------------------------------------
** 創建人: 黃海明
** 版 本: 1.0
** 日 期: 2008年10月10日
** 描 述: 原始版本
***********************************************************************************************************/
#include<reg52.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
sbit signal0 = P0^2;
sbit signal1 = P0^5;
sbit a0 = P0^0;
sbit a1 = P0^1;
sbit b0 = P0^3;
sbit b1 = P0^4;
sbit buzzer=P2^2;
uchar state0 = 0;
uchar n0 =0 ;
uchar TH0Data1 = 0, TH0Data2 = 0;
uchar TL0Data1 = 0, TL0Data2 = 0; //, enable0 = 0
uint pulseWidth0 = 0;
uchar state1 = 0;
uchar n1 =0 ;
uchar TH1Data1 = 0, TH1Data2 = 0;
uchar TL1Data1 = 0, TL1Data2 = 0; // , enable1 = 0
uint pulseWidth1 = 0;
//uchar key=0;
bit flag0=0;
bit flag1=0;
//---------------------延時------------------------
void delay1ms(uint time) //11.0592M晶振 1ms
{
uint i;
uchar j;
for (i=0;i<time;i++)
{
j=147;
while(j--);
}
}
////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
void Calculate0()
{
TH0Data1 = (65536 - pulseWidth0) / 256;
TL0Data1 = (65536 - pulseWidth0) % 256;
TH0Data2 = (47119 + pulseWidth0) / 256;
TL0Data2 = (47119 + pulseWidth0) % 256;
TH0 = TH0Data1;
TL0 = TL0Data1;
}
/////////////////////////////////////////////////////////////
void Calculate1()
{
TH1Data1 = (65536 - pulseWidth1) / 256;
TL1Data1 = (65536 - pulseWidth1) % 256;
TH1Data2 = (47119 + pulseWidth1) / 256;
TL1Data2 = (47119 + pulseWidth1) % 256;
TH1 = TH1Data1;
TL1 = TL1Data1;
}
//////////////////////////////////////////////////
void T0init()
{
signal0 = 0;
TMOD |= 0x01; //16位模式
ET0 = 1;
pulseWidth0 = 10000; //脈寬初值xx us
Calculate0();
EA =1;
state0 = 1;
}
//////////////////////////////////////////////////
void T1init()
{
signal1 = 0;
TMOD |= 0x10; //16位模式
ET1 = 1;
pulseWidth1 = 10000; //脈寬初值xx us
Calculate1();
EA =1;
state1 = 1;
}
/////////////////////////////////////////////////////
void int0() interrupt 0 using 0
{
flag0=1;
}
/////////////////////////////////////////////////////
void int1() interrupt 2 using 2
{
flag1=1;
}
////////////////////////////////////////
void Timer0() interrupt 1 using 1
{
signal0 = ~signal0 ;
if( state0 == 0)
{
TH0 = TH0Data1;
TL0 = TL0Data1;
state0 =1;
n0++;
}
else if(state0 == 1)
{
TH0 = TH0Data2;
TL0 = TL0Data2;
state0 = 0;
}
}
////////////////////////////////////////
void Timer1() interrupt 3 using 3
{
signal1 = ~signal1 ;
if( state1 == 0)
{
TH1 = TH1Data1;
TL1 = TL1Data1;
state1 =1;
n1++;
}
else if(state1 == 1)
{
TH1 = TH1Data2;
TL1 = TL1Data2;
state1 = 0;
}
}
/////////////////////////////////////////////////
void zuo(uint time)
{
a0=a1;
// buzzer=0;
delay1ms(time);
a0=0;
a1=1;
flag0=0;
buzzer=1;
}
///////////////////////////////////////////////
void you(uint time)
{
b0=b1;
// buzzer=0;
delay1ms(time);
b0=1;
b1=0;
flag1=0;
buzzer=1;
}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
void main(void)
{
uchar i=0;
T0init();
TR0 = 1; //定時計數器控制位,1工作,0停止工作
signal0 = 1;
T1init();
TR1 = 1;
signal1 = 1;
EX0=1;
EX1=1;
IT0=0;
IT1=0;
a0=0;
a1=1;
b0=1;
b1=0;
buzzer=1;
pulseWidth0 =10000;
Calculate0();
pulseWidth1 =10000;
Calculate1();
while(1)
{
if(flag0==1)
{
EX0=0;
zuo(800);
EX0=1;
}
if(flag1==1)
{
EX1=0;
you(800);
EX1=1;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -