📄 mainc.c
字号:
#include "..\gloableh.h"
#include "rxh.h"
#define Timer0Run(var) {TR0 =var?1:0;}
#define IntEn() {EA=1;}
#define IntDis() {EA=0;}
#define CPUFREQ 11059200
#define UARTBAUDRATE 9600
U8 uc0;
extern RXSTRUCT Rx;
typedef struct{
U8 msTimer;
U8 Timer0;
U16 Delay;
U8 State;
}MAINSTRUCT;
MAINSTRUCT g;
sbit AC =P3^2;
sbit IR =P3^1;
sbit OUT =P3^0;
//phototype.
void InitTimer1(void);
unsigned int GetTimer(void);
#if DEBUG==1
void PutChar(U8 i)
{
SBUF=i;
while(TI==0);
TI=0;
}
void Rs232Init()
{
TCON &= 0x3F; /* clear run & interrupt flags */
TMOD &= 0x0F; /* flush existing Timer 1 setup */
TMOD |= 0x20; /* flush existing Timer 1 setup */
SCON = 0x50; /* flush existing Timer 1 setup */
PCON |= 0x00;
TH1 = TL1 = (unsigned char)( 256-((CPUFREQ/12)/32)/UARTBAUDRATE); //设置波特率发生器定时器
TR1 = 1; /* start the timer */
TI = 1;
}
#endif
void Timer1(void) interrupt 3 using 3{//
}
void InitTimer1(void)
{
TMOD |=0x01;
TH0=0;
TL0=0;
ET0=0;
}
unsigned int GetTimer(void)
{
unsigned int uint;
uint=TH0;
uint <<=8;
uint+=TL0;
g.Delay +=uint;
TH0=0;
TL0=0;
return(uint);
}
void main(void)
{
P1=0xff;
P3=0xff;
InitTimer1();
#if DEBUG==1
Rs232Init();
#endif
TR0=1;
g.Timer=0;
while(AC); //wait AC_Zero.
while(1){
SystemHandle();
switch(g.State){
case 0:
if(!AC) break;
g.State=1;
g.Delay=0;
g.msTimer++;
if(g.msTimer<50) break;
g.msTimer=0;
g.Wind -=0x80;
if(!(g.Wind&0xf0)){
g.State=10;
}
if(!(g.Wind&0x01)){
if(++g.Timer0>10) g.Timer0=0;
}
break;
case 1:
GetTimer();
if(g.Delay<g.SetTimer) break;
if(g.Timer0<5) OUT=1;
State=2;
break;
case 2:
if(AC) break;
g.State=3;
g.Delay=0;
break;
case 3:
GetTimer();
if(g.Delay<g.SetTimer) break;
OUT=0;
g.State=0;
break;
case 10:
break;
default:break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -