?lang_form? ?lang_select? ?lang_submit? ?lang_endform?
{HEADER END}
{FILE START}

library

?curdirlinks? - Rev 6

?prevdifflink? - Blame - ?getfile?

//*****************************************************************************
// File Name    : basiciotest.c
// 
// Title                : example usage of basic input and output functions on the AVR
// Revision             : 1.0
// Notes                :
// Target MCU   : Atmel AVR series
// Editor Tabs  : 4
// 
// Revision History:
// When                 Who                     Description of change
// -----------  -----------     -----------------------
// 02-Feb-2003  pstang          Created the program
//*****************************************************************************

 
//----- Include Files ---------------------------------------------------------
#include <avr/io.h>             // include I/O definitions (port names, pin names, etc)
#include <avr/interrupt.h>      // include interrupt support

#include "global.h"             // include our global settings
//#include "uart.h"             // include uart function library
//#include "rprintf.h"  // include printf function library
//#include "timer.h"            // include timer function library (timing, PWM, etc)
//#include "vt100.h"            // include VT100 terminal support
//#include "encoder.h"  // include encoder driver


//----- Begin Code ------------------------------------------------------------
int main(void)
{
        // initialize our libraries
        // initialize the UART (serial port)
//      uartInit();
        // set the baud rate of the UART for our debug/reporting output
//      uartSetBaudRate(9600);
        // initialize the timer system
//      timerInit();
        // initialize rprintf system
//      rprintfInit(uartSendByte);
        // initialize vt100 library
//      vt100Init();

        // clear the terminal screen
//      vt100ClearScreen();

        u08 a;

        // All AVR processors have I/O ports which each contain up to 8
        // user-controllable pins.  From a hardware perspective, these I/O pins
        // are each an actual physical pin coming out of the processor chip.
        // The voltage on the pins can be sensed or controlled via software,
        // hence their designation as Input/Output pins.

        // While I/O pins are actual wires in the real world, they also exist
        // inside the processor as special memory locations called registers.
        // The software-controlled contents of these registers is what
        // determines the state and operation of I/O pins and I/O ports.

        // Since AVR processors deal naturally with 8 bits at a time, I/O pins
        // are grouped into sets of 8 to form I/O ports.  Three registers
        // are assigned to each I/O port to control the function and state of
        // that port's pins.  The registers are 8-bits wide, and each bit (#0-7)
        // determines the operation of the corresponding number pin (pin 0-7).
        // The three registers are:

        // DDRx  - this register determines the direction (input/output) of the pins on port[x]
        //                      A '0' bit in the DDR makes that port pin act as input
        //                      A '1' bit in the DDR makes that port pin act as output

        // PORTx - this register contains the output state of the pins on port[x]
        //                      A '0' bit makes the port pin output a LOW  (~0V)
        //                      A '1' bit makes the port pin output a HIGH (~5V)

        // PINx  - this register contains the input state of the pins on port[x]
        //                      A '0' bit indicates that the port pin is LOW  (at ~0V)
        //                      A '1' bit indicates that the port pin is HIGH (at ~5V)

        // The x should be replaced with A,B,C,D,E,F, or G depending on the
        // desired port.  Note that not all AVR processors have the same set
        // or number of ports.  Consult the datasheet for your specific processor
        // to find out which ports it has.

        // in the AVR-GCC C language, ports can be accessed using two kinds of
        // commands:
        // inb() and outb()             -       in-byte and out-byte
        // cbi() and sbi()              -       clear-bit and set-bit

        // inb() and outb() should be used when you intend to read or write
        // several bits of a register at once.  Here are some examples:

        outb(DDRA, 0x00);       // set all port A pins to input
        a = inb(PINA);          // read the input state of all pins on port A
        
        outb(DDRB, 0xFF);       // set all port B pins to output
        outb(PORTB, 0xF0);      // set PB4-7 to HIGH and PB0-3 to LOW
        
        // Often you may wish to change only a single bit in the registers
        // while leaving the rest unaltered.  For this, use cbi() and sbi().
        // For example:

        sbi(DDRC, 0);           // sets PC0 to be an output
        sbi(DDRC, 1);           // sets PC1 to be an output

        cbi(PORTC, 1);          // sets PC1 to output a LOW without altering any other pin
        
        // the lines below will cause PC0 to pulse twice,
        // but will leave all other port C pins unchanged
        cbi(PORTC, 0);          // sets PC0 to output a LOW
        sbi(PORTC, 0);          // sets PC0 to output a HIGH
        cbi(PORTC, 0);          // sets PC0 to output a LOW
        sbi(PORTC, 0);          // sets PC0 to output a HIGH
        cbi(PORTC, 0);          // sets PC0 to output a LOW
        
        
        return 0;
}

{FILE END}
{FOOTER START}

Powered by WebSVN v2.8.3