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

📄 copy of main.c

📁 stc单片机读内部eeprom代码
💻 C
字号:
							#include "reg52.h"
#define uchar unsigned char
#define unit  unsigned int
uchar Data[13];
uchar Databak[13];
uchar sData[13];
uchar number,flag;
sfr WDT=0XE1;
sbit LED=P1^7;
sbit LED1=P1^6;
sbit LED2=P1^5;

bit cansend=0,issend=0,whilerec=0,whilesend=0;

 /*********MCU初始化**************/
void MCU_Init(void)
{
        TMOD = 0x21;
        TH1 = 250;
        TL1 = 250;
        SCON = 0x50;
        PCON = 0x80;
    	EA = 1;
      	ES = 1;
		TR1=1;
}
/***********串口发送一个字节****************/

 void send(uchar S_Data)
{
	SBUF = S_Data;
    while(TI == 0);
		TI =0;
}

/*************接收中断********************/
void Serial() interrupt 4 using 2
{  
	if(RI == 1)
    {
		LED2=0;
		Data[number++]= SBUF;
		Databak[number++]= SBUF;
		RI = 0;
		flag++;
    }
}

/************生成校验码子程序***********/
void XiaoYan(uchar *a)
{
  uchar i, all=0;
 
   for(i=0;i<12;i++)
   all=all+a[i];
   all=~all;
   all=all-1;
   a[i]=all;
}

/************接收数据校验子程序***********/
unsigned int RXiaoYan(uchar *a)
{
	uchar rets=0,i, all=0;
 
	for(i=0;i<12;i++)
	all=all+a[i];
	all=~all;
	all=all-1;
	if(a[i]==all)
		rets=1;
	return rets;

}


/****************串口发送子程序****************/
void sends(uchar *b )
{
	
	uchar count,i;
	cansend=0;
	count=13;
	LED1=0;
	for(i=0;i<count;i++)
		send(b[i]);
}
//-------------等待接收----------------------
void whileRec(void)
{
}
//-------------等待发送----------------------
void whileSend(void)
{

}
//-------------WndProc-----------------------
void WndProc(void)
{

}

/**************主程序***********************/
void main(void)
{
 	unsigned int ld=0;
	unsigned char Cmd=0;
    MCU_Init();
  	while(1)
	{
		LED1=1;
		LED2=1;
		WDT=0X34;
		ld++;
		if(ld>3000)
		{
			ld=0;
			LED=!LED;
		}
		if(flag==12)
		{
					  		
			flag=0;
			number=0;
			Cmd=0;
			Cmd=Data[0];
			if(Cmd>0xA0)//接到的是命令侦
			{
				if(RXiaoYan(Data))
				{
					switch (Cmd)
					{
						case 0xA1:
							break;
						case 0xA2:
							break;
						case 0xAC://应答ok
							
							cansend=1;
							break;
						case 0xAB://需要重发
							sends(Databak);
							break;
						default:
							break;
					}
				}
				else
				{
					XiaoYan(sData);
					sends(Data);	
				}
			}
			else
			{
				issend=1;
				XiaoYan(Data);
				sends(Data);
				issend=0;
				cansend=0;
			}
			//break;
		}
	}
   
}

  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -