Experiment No.: 5
Experiment No.: 5
EXPERIMENT No.: 5
Objectives:
Overview of software and hardware tools used for programming & operation of ATmega16
Basic circuitry required for operation of ATmega16
To understand that how to make a port input or output
First C Program to blink LEDs
Theory:
Ports of the AVR ATmega16 cannot be accessed bitwise. So if we want to perform any function on a single bit,
following macros can be used for bit manipulation:
Macros definition:
To copy the status of single bit of a register to single bit of another register:
Code:
BitWrite (BitGet (PORTA, BIT (4)), PORTB, Bit (0)); //PORTB, Bit0 = PORTA, Bit4
Simulation:
U1
9 22
RESET PC0/SCL
23
PC1/SDA
13 24
XTAL1 PC2/TCK
12 25
XTAL2 PC3/TMS
26
PC4/TDO
40 27
PA0/ADC0 PC5/TDI
39 28
PA1/ADC1 PC6/TOSC1
38 29
PA2/ADC2 PC7/TOSC2
37
PA3/ADC3
36 14
PA4/ADC4 PD0/RXD
35 15
PA5/ADC5 PD1/TXD
34 16
PA6/ADC6 PD2/INT0
33 17
PA7/ADC7 PD3/INT1
18
PD4/OC1B
1 19
PB0/T0/XCK PD5/OC1A
D2 2
PB1/T1 PD6/ICP1
20
3
LED-RED 21
PB2/AIN0/INT2 PD7/OC2
4
PB3/AIN1/OC0
5
PB4/SS
6
PB5/MOSI
7 32
PB6/MISO AREF
8 30
PB7/SCK AVCC
ATMEGA32
Exerceise : Load Above Program In Easy AVR 7 And Verify The Output with connected LED.
.INCLUDE "M32DEF.INC"
U1
LDI R20,HIGH(RAMEND) 9 22
OUT SPH,R20 RESET PC0/SCL
23
PC1/SDA
LDI R20,LOW(RAMEND) 13 24
XTAL1 PC2/TCK
12 25
OUT SPL,R20 XTAL2 PC3/TMS
26
PC4/TDO
40 27
PA0/ADC0 PC5/TDI
SBI DDRA,5 39 28
PA1/ADC1 PC6/TOSC1
38 29
LOOP: SBI PORTA,5 PA2/ADC2 PC7/TOSC2
37
CALL DELAY PA3/ADC3
36 14
PA4/ADC4 PD0/RXD
CBI PORTA,5 35
PA5/ADC5 PD1/TXD
15
CALL DELAY 34 16
PA6/ADC6 PD2/INT0
33 17
JMP LOOP PA7/ADC7 PD3/INT1
18
PD4/OC1B
DELAY: LDI R22,0XFF 1
PB0/T0/XCK PD5/OC1A
19
AGAIN: DEC R22 2 20
PB1/T1 PD6/ICP1
3 21
BRNE AGAIN PB2/AIN0/INT2 PD7/OC2
4
PB3/AIN1/OC0
RET 5
PB4/SS
6
PB5/MOSI
7 32
PB6/MISO AREF
8 30
PB7/SCK AVCC
ATMEGA32
LDI R20,HIGH(RAMEND)
OUT SPH,R20
LDI R20,LOW(RAMEND)
OUT SPL,R20
U1
CBI DDRC,5 9 22
SBI DDRA,5 RESET PC0/SCL
23
PC1/SDA
13 24
XTAL1 PC2/TCK
LOOP: SBIS PINC,5 12 25
XTAL2 PC3/TMS
RJMP LOOP 26
PC4/TDO
SBI PORTA,5 40 27
PA0/ADC0 PC5/TDI
CALL DELAY 39 28
PA1/ADC1 PC6/TOSC1
CBI PORTA,5 38 29
PA2/ADC2 PC7/TOSC2
37
CALL DELAY PA3/ADC3
JMP LOOP
36
PA4/ADC4 PD0/RXD
14 R1
35 15 10k
DELAY: LDI R20,0XFF PA5/ADC5 PD1/TXD
34 16
AGAIN: DEC R20 PA6/ADC6 PD2/INT0
33 17
PA7/ADC7 PD3/INT1
BRNE AGAIN 18
PD4/OC1B
RET 1 19
PB0/T0/XCK PD5/OC1A
2 20
PB1/T1 PD6/ICP1
3 21
PB2/AIN0/INT2 PD7/OC2
4
PB3/AIN1/OC0
5
PB4/SS
6
PB5/MOSI
7 32
PB6/MISO AREF
8 30
PB7/SCK AVCC
ATMEGA32
Simulation
Exercise : Load Above TWO Program In Easy AVR 7 And Verify The Output with connected LED.
HOMEWORK:
1. Write a program If Bit 0 of PORTB is high, LEDs connected at PORTA will glow
from LSB to MSB.
SOLUTION :
.INCLUDE “M32DEF.INC”
LDI R20,HIGH(REMEND)
OUT SPH,R20
LDI R20,LOW(REMEND)
OUT SPL,R20
SBI DDRA,5
LOOP: SBI PORTA,5
CALL DELAY
CBI PORTA,5
CALL DELAY
LMP LOOP
DELAY: LDI R22,0xFF
AGAIN : DEC R22
BRINE AGAIN
RET
2. Write a program If Bit 0 of PORTB is low, LEDs connected at PORTA will glow
from MSB to LSB. In both cases, one LED should be ON at a time.
SOLUTION:
LDI R20,HIGH(REMEND)
OUT SPH,R20
LDI R20,LOW(REMEND)
OUT SPL,R20
CBI DDRC,5
SBI DDRA,5
LOOP: SBIS PINC,5
RJMP LOOP
SBI PORTA,5
CALL DELAY
CBI PORTA,5
CALL DELAY
JMP LOOP
DELAY : LDI R20,0xFF
AGAIN: DEC R20
BRINE AGAIN
RET
Conclusion:
Simulation of LED blinking at port as well as pin program in Atmega32 microcontroller
have been successfully performed and verified. Simulation of Push button switch with
LED program in Atmega32 microcontroller have been successfully performed and
verified.