0% found this document useful (0 votes)
189 views5 pages

Handling Avr Microcontroller Ports: Atmega16A Pin Out Diagram

The ATmega16A microcontroller has 40 pins total, with 32 pins serving as I/O ports. The document describes the pinout of the microcontroller and the functions of each pin, including power supply pins, analog reference pin, oscillator pins, and reset pin. It then discusses the 4 I/O ports (Port A, B, C, and D), describing each port as an 8-bit bi-directional port with optional internal pull-up resistors. Each port has an associated data register (PORTx) to write output, data direction register (DDRx) to set pin direction, and input pin address (PINx) to read input. Examples are given to set the registers using binary,

Uploaded by

M.Sadat
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
189 views5 pages

Handling Avr Microcontroller Ports: Atmega16A Pin Out Diagram

The ATmega16A microcontroller has 40 pins total, with 32 pins serving as I/O ports. The document describes the pinout of the microcontroller and the functions of each pin, including power supply pins, analog reference pin, oscillator pins, and reset pin. It then discusses the 4 I/O ports (Port A, B, C, and D), describing each port as an 8-bit bi-directional port with optional internal pull-up resistors. Each port has an associated data register (PORTx) to write output, data direction register (DDRx) to set pin direction, and input pin address (PINx) to read input. Examples are given to set the registers using binary,

Uploaded by

M.Sadat
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

Handling AVR Microcontroller ports

ATmega16A pin out diagram:




























The ATmega16-A has 40 pins ,only 32 pins serve as I/O ports and the other 8 pins is
:VCC,AVCC,2xGND,AREF,RESET,XTAL1 and XTAL2.

Pin Descriptions:

1-VCC: Digital supply voltage. 2-GND: Ground.


3-AVCC: is the supply voltage pin for Port A and the A/D Converter. It should be externally connected to
VCC, even if the ADC is not used. If the ADC is used, it should be connected to VCC through a
low-pass filter.

4-AREF: is the analog reference pin for the A/D Converter.

5-XTAL1: Input to the inverting Oscillator amplifier and input to the internal clock operating circuit.

6-XTAL2: Output from the inverting Oscillator amplifier.

7-RESET: A low level on this pin for longer than the minimum pulse length will generate a
reset, even if the clock is not running.
8-Port A (PA7:PA0):

Port A serves as the analog inputs to the A/D Converter.

Port A also serves as an 8-bit bi-directional I/O port, if the A/D Converter is not used. Port pins can
provide internal pull-up resistors (selected for each bit).


9-Port B (PB7:PB0):

Port B is an 8-bit bi-directional I/O port with internal pull-up resistors (selected for each bit).

Port B also serves the functions of various special features of the ATmega16A as listed on table below:



















10-Port C (PC7:PC0):

Port C is an 8-bit bi-directional I/O port with internal pull-up resistors (selected for each bit).

Port C also serves the functions of the JTAG interface and other special features of the
ATmega16A as listed on table below:













11-Port D (DDC7:DDC0):

Port D is an 8-bit bi-directional I/O port with internal pull-up resistors (selected for each bit).

Port D also serves the functions of various special features of the ATmega16A as listed on table below:














































PORT SYSTEM:

The Atmel ATmega16 is equipped with four 8-bit general-purpose, digital I/O ports designated
PORTA, PORTB, PORTC, and PORTD.

For basic digital I/O port feature each port has three registers associated with it:

1-Data Register (PORTx): used to write output data to the port.

2-Data Direction Register (DDCRx): used to set a specific port pin to either output (1) or
Input (0).

3-Input Pin Address (PINx): used to read input data from the port.





































Note: AVR Studio6.1 is the compiler used in these Tutorials.
These are some examples for how to handle I/O Ports:

We can use Binary or Hexadecimal number system to set the Bits in different registers.


1- DDRC Port C Data Direction Register Data direction Input or Output:

Binary >>> DDRC = 0 b1100 1110;
Hexadecimal >>> DDRC = 0xCE;

Also we can declare it using pins definition in avr/io.h header file as showed below:

DDCx :where x is the pin number. * For other ports like A,B or D we replace C with port letter.

DDRC = ((1<<DDC7)| (1<<DDC6)| (0<<DDC5)| (0<<DDC4)| (1<<DDC3)| (1<<DDC2)| (1<<DDC1)| (0<<DDC0));



2- PORTD Port D Data Register Data value High1 or Low0:

Binary >>> PORTD = 0 b1100 1110;
Hexadecimal >>> PORTD = 0xCE;

Also we can declare it using pins definition in avr/io.h header file as showed below:

PDx :where x is the pin number. * For other ports like A,B or C we replace D with port letter.

PORTD = ((1<<PD7)| (1<<PD6)| (0<<PD5)| (0<<PD4)| (1<<PD3)| (1<<PD2)| (1<<PD1)| (0<<PD0));



3- PIND Port D Input Pins Address:

Binary >>> PIND = 0 b1100 1110;
Hexadecimal >>> PIND = 0xCE;

Also we can declare it using pins definition in avr/io.h header file as showed below:

PDx :where x is the pin number. * For other ports like A,B or C we replace D with port letter.

PIND = ((1<<PD7)| (1<<PD6)| (0<<PD5)| (0<<PD4)| (1<<PD3)| (1<<PD2)| (1<<PD1)| (0<<PD0));

While using PIN register we have to set the Data direction to input to make sure that the pin will sense the
input coming from the pin.

EX:
DDRC = 0 b0000 0000; I have set the data direction to input in all PORTC pins
PINC = 0 b1101 1010; then the Bits on PINC show the data input

***We mainly use PINx register in if statement to check the INPUT

You might also like