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

📄 serial.c

📁 利用ATMEGA128芯片的双串口
💻 C
字号:
/*  ATmega128 serial.c File 

   Author : Hawk shang
   Company: Proteam 
   Date of Creation : 23 Oct 2003
*/
#include "logic.h"
#include <avr/interrupt.h>
#include <avr/sleep.h>
#include <avr/signal.h>
#include <avr/eeprom.h>
#include <avr/io.h>
#include <avr/pgmspace.h>

/*External Variable Lisr*/


extern unsigned char rs232DataCnt;
extern unsigned char smsDataCnt;
extern unsigned char ErrorType;
extern unsigned int _1msCounter;
extern unsigned char UART0Index;
extern unsigned char rs232Data[255];
extern unsigned char uart1Data[255];
extern unsigned char uart1_rcvDATA[1024];

extern unsigned char Uart0SendFlag;
extern unsigned char Uart1SendFlag;
extern unsigned char GPRS_Status;
extern unsigned char GPRS_Working_Status;
extern unsigned int  TimeOut;
extern unsigned char ReConn_Cnt;
extern 	unsigned char GPRSOKFlag;
extern unsigned char ATSENDFlag;
extern unsigned char _10msFlag;
extern unsigned char _10msCnt;
extern unsigned char Read_Pointer;
extern unsigned char Write_Pointer;


/*Extern Variable List*/


extern unsigned char CheckDataType(unsigned char type, unsigned char code);
extern unsigned char Checksum(unsigned char *p,unsigned char cnt);
extern void puts0(unsigned char* str, unsigned char length);
void init_gprs(void);
void GPRSConnect(void);
void GPRSDisConnect(void);
void RS232Transmit(void);
void puts0(unsigned char *str,unsigned char length);
void Send_Return_NewLine(void);
void delayms(unsigned int count);
void GPRS_ShutDown(void);

/****************************************************
Name: InitSerial Uart0
Input:none
Output:none
Function: 1.set the parameter of UART0~1 
	  2.clear the data
	  3.enable interrupt 
	  3.open the UART 
	  4.baudrate 19200,8 databit,1 stopbit,No parity
*****************************************************/
void InitSerial(void)
{
	//unsigned char i;
	//open UART0 transmit and receive, and enable recevie complete interrupt\
	PORTE = 0xEF;
	DDRE  = 0x0A;

	 
	  UBRR0H=00;
	  UBRR0L=0x33;
	  UCSR0C=0X86;
	  UCSR0B=0XD8;
	  UCSR0A=0X02;
	Uart0SendFlag=0x00; 	
      
}


/*********************************************
Name: putchar puts 
Function:
	send data to serial port Uart0
***********************************************/
void putchar0(unsigned char c)
{	 
     while (!(UCSR0A&(1<<UDRE0)));
	 UDR0=c;   
}
void puts0(unsigned char *str,unsigned char length)
{
    if(Uart0SendFlag==0x00) return; 
	//CLI();   
	while(length!=0)
	{
		putchar0(*str);
		str++;
		length--;
	} 
	Uart0SendFlag=0x00;  
	//SEI();    
        
}



void GPRSConnect(void)
{

	 unsigned char *con_open;
	con_open=(unsigned char*)"at^siso=0";

	 //SEND CONNECT OPEN
	 Uart0SendFlag=0x01;
	 puts0(con_open,9);
	 Send_Return_NewLine();
}

void GPRSDisConnect(void)
{
 	 
	 unsigned char *con_close;
	 con_close=(unsigned char*)"at^sisc=0";
	 Uart0SendFlag=0x01;
	 puts0(con_close,9);
	 Send_Return_NewLine();
//	 delayms(100);
}

void GPRS_ShutDown(void)
{
 	 
	 unsigned char *con_shutdown;
	 con_shutdown=(unsigned char*)"at^smso";
	 Uart0SendFlag=0x01;
	 puts0(con_shutdown,7);
	 Send_Return_NewLine();
	// delayms(100);
}

void Send_Return_NewLine(void)
{
 	 putchar0(0x0D);
	 putchar0(0x0A);
}

void delayms(unsigned int count)
{
 	 unsigned int i,j;
	 for(i=0;i<count;i++)
	 {
	  for(j=0;j<255;j++){};
	 }
}
/*Program end*/




⌨️ 快捷键说明

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