⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainc.c

📁 红外信号测试软件
💻 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 + -