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

📄 main.c

📁 hi guys hgshsoichoihvoiwehvboiewvoiwehv
💻 C
📖 第 1 页 / 共 2 页
字号:
						flag=flag+1;
						}
					}
				else l=0;
			}
	}
	//wait for a new line			
	while (	getchar_UART(100000)!=10)
	{
		l=l;
	}
	com_out=0;	//reset timeout flag 
	return match;
}

//////////////////////////////////////////////////////////////////////////////////////////
void Delay (unsigned long a) { while (--a!=0); }
//////////////////////////////////////////////////////////////////////////////////////////


void Togle_REL1 (void)
{
	DDRC |= 0x80;
	PORTC ^= 0x80;
}
void Set_REL1 (void)
{
	DDRC |= 0x80;
	PORTC|= 0x80;
}
void Togle_REL2 (void)
{
	DDRC |= 0x40;
	PORTC ^= 0x40;

}
void Set_REL2 (void)
{
	DDRC |= 0x40;
	PORTC |= 0x40;
}

void Togle_LED (void)
{
	DDRD |= 0x80;
	PORTD ^= 0x80;
}

void delay_ms(uint16_t ms)
{
	while(ms--) _delay_ms(1.0);
}

////////////////////////////////////////////////////////////
void SendStatus(void)
{	
	int i;

	i=0;
	
	if(PINB & 0b00000001)
		{
		sprintf(message,"IN1=1,");
		i=i+6;
		}
		else {sprintf(message,"IN1=0,");
				i=i+6;
				}
		
	if(PIND & 0b00000100)
			{
			sprintf(message +i,"IN2=1,");
			i=i+6;
			}
		else {		
			sprintf(message +i,"IN2=0,");
			i=i+6;
				}
	if(PORTC & 0b10000000)
			{
			sprintf(message +i,"RELAY1=1,");
			i=i+9;
			}
		else {		
			sprintf(message +i,"RELAY1=0,");
			i=i+9;
				}

	if(PORTC & 0b01000000)
			{
			sprintf(message +i,"RELAY2=1,");
			i=i+9;
			}
		else {		
			sprintf(message +i,"RELAY2=0,");
			i=i+9;
				}

	if(PINA & 0b00000100)
			{
			sprintf(message +i,"PINA2=1,");
			i=i+8;
			}
		else {		
			sprintf(message +i,"PINA2=0,");
			i=i+8;
				}

	if(PINA & 0b00000010)
			{
			sprintf(message +i,"PINA1=1,");
			i=i+8;
			}
		else {		
			sprintf(message +i,"PINA1=0,");
			i=i+8;
				}

	if(PINA & 0b00000001)
			{
			sprintf(message +i,"PINA0=1,");
			i=i+8;
			}
		else {		
			sprintf(message+i,"PINA0=0,");
			i=i+8;
				}

	if(PINB & 0b10000000)
			{
			sprintf(message +i,"PINB7=1,");
			i=i+8;
			}
		else {		
			sprintf(message +i,"PINB7=0,");
			i=i+8;
				}

	if(PINB & 0b01000000)
			{
			sprintf(message +i,"PINB6=1,");
			i=i+8;
			}
		else {		
			sprintf(message +i,"PINB6=0,");
			i=i+8;
				}

	if(PINB & 0b00100000)
			{
			sprintf(message +i,"PINB5=1,");
			i=i+8;
			}
		else {		
			sprintf(message +i,"PINB5=0,");
			i=i+8;
				}

	if(PINB & 0b00100000)
			{
			sprintf(message +i,"PINB5=1,");
			i=i+8;
			}
		else {		
			sprintf(message +i,"PINB5=0,");
			i=i+8;
				}

	if(PINB & 0b00010000)
			{
			sprintf(message +i,"PINB4=1,");
			i=i+8;
			}
		else {		
			sprintf(message +i,"PINB4=0,");
			i=i+8;
				}

	if(PINB & 0b00001000)
			{
			sprintf(message +i,"PINB3=1,");
			i=i+8;
			}
		else {		
			sprintf(message +i,"PINB3=0,");
			i=i+8;
				}

	if(PINB & 0b00000100)
			{
			sprintf(message +i,"PINB2=1,");
			i=i+8;
			}
		else {		
			sprintf(message +i,"PINB2=0,");
			i=i+8;
				}

	if(PINB & 0b00000010)
			{
			sprintf(message +i,"PINB1=1,");
			i=i+8;
			}
		else {		
			sprintf(message +i,"PINB1=0,");
			i=i+8;
				}

	if(PINB & 0b00000001)
			{
			sprintf(message +i,"PINB0=1,");
			i=i+8;
			}
		else {		
			sprintf(message +i,"PINB0=0,");
			i=i+8;
				}
	if(PIND & 0b00001000)
			{
			sprintf(message +i,"BTN=1.");
			i=i+6;
			}
		else {		
			sprintf(message +i,"BTN=0.");
			i=i+6;
				}

}
int send_sms(char * message)
{
		int k=sizeof(sms_send);
		memcpy(sms_send_number,sms_send,k);	//send SMS header
		memcpy(sms_send_number+k,sms_number,sizeof(sms_number));	//GSM number
		//TODO !!!!!!!read sms_number to find its length
		k+=12;
		sms_send_number[k++]='"';	//collons 
		sms_send_number[k]='\0';	//terminate string
		Send_UART(sms_send_number);
		a=65535;
		
		while(--a!=0);
		if (rx_counter != 0)
			{
			while(!(proba == '>'))	//HERE sending SMS works
				proba=getchar_UART(100000);
			Send_UART2(message);
			}//end sending
		com_out=0;

		if(!waitplus())
			return 0;
		com_out=0;
	
		do 
			{
			proba=getchar_UART(100000);
			index1=index1;
			}
		while(proba != 10);	//skip first line, read message text on second line
		com_out=0;

		if(!waitOK())
			return 0;
		com_out=0;
	
		a=65535;

		return 1;
}

/////////////////////////////////////////////////////////////////////////////
/*
Following SMS request/response couples are realized:
received SMS content		sent SMS content
	GETSTATUS				EXT inputs,IN1,IN2,B1
	SETRELAY1				set Relay1
	SETRELAY2				set Relay2
*/
//=====================================================================================================
int main(void)
{
	//	asm volatile("sei");
	// Declare your local variables here
	k=0;
	er=0;
	int del1,del2;
	
	int ch;
	ch=0;
	del2=0;
	char ctemp[25];
	for (del1=0;del1<160;del1++)
		message[del1]="";

	//init UART and I/O ports	
	Init();
	//delay_ms(400);
	a=65556;
	while(--a!=0);
///////////////////////act as PowerKey-it should be hold down about 1-2 seconds
			DDRA  = 0b00000100;//PA2 out in zero
			Delay(1500000);
			PORTA &=0b11111011;
			DDRA  &=0b11111011;//PA2 back input 
////////////////////wait for Call Ready/////////////////////////////////////			
			while(rx_counter==0);
			call_ready();	//	return 0;


			gsmconfig();
//////////////////////////////////////////////////////////////////////////////////////////////////////
while (1)
{
//	 TCCR1A =0x00;				
	if (rx_counter != 0)
 		{

		 	k=0;
			del2=0;
			if(waitplus())
				
			{
				TCCR1A =0x00;	//disable buzzer ring sound
				do
  			 		{
			 		proba=getchar_UART(100000);
					if ((proba != 13) && (proba != 10))
						 {temp_array[k++]=proba;//sms message command sent  
						 if(isdigit(proba))
						 	smsind[del2++]=proba;}
					 }
				while(proba != 10); 		//LF 
				com_out=0;

				ch=atoi(smsind);
				sprintf(sms_read_comm,"AT+CMGR=%d",ch);

				if(Compare2()){
					Send_UART(sms_read_comm);//send command to read SMS content
					a=65535;
					while(--a!=0);
					waitplus();
					
					k=0;
					colcount=0;
					
					do 
						{
					proba=getchar_UART(100000);
					if(proba=='"')
						colcount++;
					if(colcount==3) if(isdigit(proba))
						sms_number[k++]=proba;
						index1=index1;
						}
					while(proba != 10);	//skip first line, read message text on second line
					sms_number[k]='\0';
					com_out=0;

					k=0;
				//	temp_array[k++]=proba;
					do
  			 			{
			 		proba=getchar_UART(100000);
					if ((proba != 13) && (proba != 10))
						 temp_array[k++]=proba;//read command sent with sms message
					 	}
					while(proba != 10); 		//waiting for end of line
					com_out=0;
				
					waitOK();
					com_out=0;

					if (Comparereq(setrelay1)==1)
							{
							Set_REL1();		//setting Relay1
							SendStatus();	//getting port status
                            if (PORTC & 0b10000000)
                            	{
                                	send_sms(message);
									}
								else {
									send_sms("Command execution failure");
									}
							}
						
						else if (Comparereq(setrelay2)==1)
							{
							Set_REL2();		//setting Relay1
							SendStatus();	//getting port status
                            
							if (PORTC & 0b01000000)
                            	{
                                	send_sms(message);
									}
								else {
								send_sms("Command execution failure");
									}
							}



						else if(Comparereq(status)==1)
								{ //sending port status in SMS
								Togle_LED();
								SendStatus();
							send_sms(message);
								}//end send status
							
				}//end Compare2
			}//end waitplus //UNCOMMENT THIS
		else
			{	k=0;
				temp_array[k++]=proba;		
				do
  			 	{
			 	proba=getchar_UART(100000);
				if (proba != 10) temp_array[k++]=proba;				 
			 	}
				while(proba != 10); 		//LF 
				com_out=0;

				k=0;
				 TCCR1A =0x00;
				if(Compare())
					{
					//Togle_REL1();
					TCCR1A ^=0x10;	//	disable buzzer ring sound
					}
			}			 
		
	  }//end USART FIFO read  

	 
}//end main cycle
////////////////////////////////////////////////////////////////////////////////////////////

}

⌨️ 快捷键说明

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