您当前的位置:五五电子网电子知识单片机-工控设备AVR单片机ATmega8自适应波特率的实现(软件包) 正文
ATmega8自适应波特率的实现(软件包)

ATmega8自适应波特率的实现(软件包)

点击数:7327 次   录入时间:03-04 11:33:32   整理:http://www.55dianzi.com   AVR单片机
TIMSK = ( 1 << TOIE0 );                       /* Overflow enabled for TIMER_0*/
}  
/*******************************************************************
@Fn: ConfigTimerSystem()
@Br: Configuration of output port
@Pa: None
@Rt: None
*******************************************************************/
void ConfigParallelPort( void ){
PORTB = 0xFE;                             /*Set of all*/
DDRB = 0xFF;                              /*Set to output mode of all*/
}  
/*******************************************************************
@Fn: TransmitData()
@Br: Send a fram onto serial-bus
@Pa: ucpDataAddress: Point of data buffer
     ucLength: Length of data 
@Rt: None
*******************************************************************/
void TransmitData( uchar *ucpDataAddress, uchar ucLength ){
while( ucLength )
  {
  while(!( UCSRA & ( 1 << UDRE )));
  UDR = *ucpDataAddress++;
  ucLength--;
  }
}  
/*******************************************************************
@Fn: ExchangeBaudRate()
@Br: Exchange values for modify baud rate
@Pa: ucpChar: Character value
@Rt: None
*******************************************************************/  
void ExchangeBaudRate( uchar *ucpChar ){  
UCSRB &= ~( 1 << RXCIE ) | ( 1 << TXEN ) | ( 1 << RXEN );       
UBRRL = *ucpChar++;
UBRRH = *ucpChar++; 
UCSRB = ( 1 << RXCIE ) | ( 1 << TXEN ) | ( 1 << RXEN );
}
/*******************************************************************
@Fn: Judge()
@Br: Judge baud rate according to the received data
@Pa: ucpCharacter: Pointer of received data buffer 
@Rt: 1:Right  0:Error
*******************************************************************/  
uchar Judge( uchar *ucpCharacter ){
if(( *ucpCharacter++ != CHAR0 ) || ( *ucpCharacter++ != CHAR1 )) return FAILURE;
else
  return SUCCESS;
}

/* File name: INTERRUPTS.H */
#i nclude <iom8.h>
#i nclude "includes.h"
#i nclude "CONSTANTS.H"
#i nclude "FUNCTIONS.H"
#i nclude "GLOBALS.H"

/*******************************************************************
@Fn: T0OVERFLOW_Handler
@Br: Service of Timer_0 interrupt
@Pa: None
@Rt: None
*******************************************************************/
#pragma vector = TIMER0_OVF_vect
__interrupt void T0OVERFLOW_Handler( void ){
TCNT0 = 0;  
}
/*******************************************************************
@Fn: USART_RX
@Br: Service of USART interrupt
@Pa: None
@Rt: None
*******************************************************************/
#pragma vector = USART_RXC_vect
__interrupt void USART_RX( void ){
ucCommunicatorBuffer[ ucReceiveCounter++ ] = UDR;
if( !( ucStatusProgram & bSET_BAUD ))
  {
  if ( ucReceiveCounter > 1 )
    {
    ucReceiveCounter = 0;
    uiTenor |= bRECEIVED; 
    }
  } 
else
  {
  if( ucReceiveCounter > 2 )
    {
    if( ucReceiveCounter >= ucCommunicatorBuffer[1] )
      {
      ucReceiveCounter = 0;
      uiTenor |= bRECEIVED;
      }
    }
  }
}

#ifndef CONSTANTS_H
#define CONSTANTS_H

/****** System Macro **********************************************************/
#define _EI()           SREG|=0X80
#define _DI()           SREG&=~0X80
#define SLEEP()         MCUCR|=(1<<SE);asm("sleep")

/****** Status Macro **********************************************************/
#define bSET_BAUD       0x01

/****** Tenor Macro ***********************************************************/
#define bRECEIVED       0x01

/****** Application Macro *****************************************************/
#define INDICATE        PB0
#define CHAR0           0xAA
#define CHAR1           0x55

#endif

#ifndef FUNCTIONS_H
#define FUNCTIONS_H

/****** Main.c ****************************************************************/
void InitialSystem( void );
void Delay_mS( uint uiMS );
void ConfigSerialPort( void );
void ConfigTimerSystem( void );
void ConfigParallelPort( void );
void TransmitData( uchar *ucpDataAddress, uchar ucLength );
void ExchangeBaudRate( uchar *ucpChar );
uchar Judge( uchar *ucpCharacter );

#endif

#ifndef VERIABLES_H
#define VERIABLES_H

uchar ucReceiveCounter;
uchar ucCommunicatorBuffer[64];
uint uiTenor;
uchar ucStatusProgram;
uchar ucSearch;

#endif

#ifndef GLOBALS_H
#define GLOBALS_H

extern uchar ucReceiveCounter;
extern uchar ucCommunicatorBuffer[64];
extern uint uiTenor;
extern uchar ucStatusProgram;
extern uchar ucSearch;

#endif

#ifndef INCLUDES_H

上一页  [1] [2] [3]  下一页


本文关键字:波特率  软件包  AVR单片机单片机-工控设备 - AVR单片机

上一篇:12864(ICCAVR程序)