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

📄 uartinterface.c

📁 The AVRcam source files were built using the WinAVR distribution (version 3.3.1 of GCC). I haven t
💻 C
字号:
/***********************************************************
    Module Name: UartInterface.c
    Module Date: 04/10/2004
    Module Auth: John Orlando 
    Copyright (c) 2004 John Orlando  All Rights Reserved 

    Description: This module is responsible for providing an
    interface to the UART hardware available on the mega8.
    This interface is an interrupt-driven interface.
    ***********************************************************/

/*	Includes */
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include "CommonDefs.h"
#include "UartInterface.h"
#include "UIMgr.h"
#include "Executive.h"

/*  Local Variables */

/*  Local Structures and Typedefs */

/*  Extern Variables */

/*  Definitions */

/***********************************************************
    Function Name: UartInt_init
    Function Description: This function is responsible for
    initializing the UART interface on the mega8.  This
    interface is set to communicate at 115.2 Kbps, with an
    8N1 protocol.
    Inputs:  none
    Outputs: none
    ***********************************************************/
void UartInt_init(void)
{
    /* set up the baud rate registers so the UART will operate
        at 115.2 Kbps */
    UBRRH = 0x00;
    UBRRL = 0x08;

    /* enable the tx and rx capabilities of the UART...as well
        as the receive complete interrupt */
    UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);

    /* set up the control registers so the UART works at 8N1 */
    UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);

}

/***********************************************************
    Function Name: UartInt_txByte
    Function Description: This function is responsible for
    transmitting a single byte on the uart.
    Inputs:  txByte - the byte to send
    Outputs: none
    NOTES: When the TX UDRE (data register empty) is set, there
    is puposefully no interrupt...thus, to send a string of
    data out, the calling routine needs to hold up the entire
    application while this takes place (or just send one
    byte at a time at strtegically timed intervals, like
    the stats data is sent out :-)
    ***********************************************************/
void UartInt_txByte(unsigned char txByte)
{
    /* Wait for empty transmit buffer */
    while ( !( UCSRA & (1<<UDRE)) );
    /* Put data into buffer, sends the data */
    UDR = txByte;
}

⌨️ 快捷键说明

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