0% found this document useful (0 votes)
11 views9 pages

Experiment

Electrical Engineering

Uploaded by

scribddiv
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)
11 views9 pages

Experiment

Electrical Engineering

Uploaded by

scribddiv
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/ 9

EXPERIMENT NO : 9A extension

UART COMMUNICATION ON ATMEGA32


EXAMPLE:1
Program the ATMEGA32 to receive bytes of data serially and put them
on LCD 16x2 at PORTB. Set the baud rate at 9600, oscillator frequency 8Mhz, 8-bit
data, and 1 stop bit.

.INCLUDE "M32DEF.INC"
.ORG 0x0000

//Stack Initialisation
LDI R16,HIGH(RAMEND)
OUT SPH,R16
LDI R16,LOW(RAMEND)
OUT SPL,R16

// Data Direction Register Settings for LCD


LDI R16,0xFF
OUT DDRB,R16
SBI DDRD,PIND4 //Falling Edged Enable
SBI DDRD,PIND5 //Register Select

// LCD Initialization
CBI PORTD,PIND5 // Command Register Enable
LDI R16,0x38 //2 lines and 5x7 matrix
OUT PORTB,R16
CALL ENABLE
LDI R16,0x02 // Return Home
OUT PORTB,R16
CALL ENABLE
LDI R16,0x01 // Clear display screen
OUT PORTB,R16
CALL ENABLE
LDI R16,0x0E //Display on, cursor blinking
OUT PORTB,R16
CALL ENABLE
LDI R16,0x06 // Shift Cursor to right after print on LCD
OUT PORTB,R16
CALL ENABLE

//Set Cursor Coordinate


LDI R16,0x80 //Set Cursor at begining of 1st Line
OUT PORTB,R16
CALL ENABLE

// Tx Rx pins Data Direction Register


CBI DDRD,PIND0 // Set Rx as Input Pin
SBI PORTD,PIND0 //Enable Internal Pull-Up Register
SBI DDRD,PIND1 // Set Tx as Output Pin
SBI PORTD,PIND1

//UART Initialization
LDI R16,0x18// Enabling Tx Rx
OUT UCSRB,R16
LDI R17,0x86// 8 bit data mode
OUT UCSRC,R17

//9600bps Baud-Rate Settings for 8MHz Oscillator


LDI R16,0x00
OUT UBRRH,R16
LDI R16,51
OUT UBRRL,R16
SBI PORTD,PIND5 //Data Register Select Mode for LCD

Infinite_Loop: SBIS UCSRA,RXC


RJMP Infinite_Loop
IN R20,UDR
OUT PORTB,R20
CALL ENABLE
JMP Infinite_Loop
ENABLE : SBI PORTD,PIND4
LDI R18,0xFF
LOOP2: LDI R17,0xFF
LOOP1: NOP
DEC R17
BRNE LOOP1
DEC R18
BRNE LOOP2
CBI PORTD,PIND4
RET

EXAMPLE:2
Sawtooth wave plotting through UART on serial plotter.
Set the baud rate at 9600, oscillator frequency 8Mhz, 8-bit data, and 1 stop bit.

.INCLUDE "M32DEF.INC"
.ORG 0x0000
JMP MAIN

.ORG 0x001C
JMP Tx_Data

MAIN: LDI R16,HIGH(RAMEND)


OUT SPH,R16
LDI R16,LOW(RAMEND)
OUT SPL,R16

//Data Direction Register for transmitter


SBI DDRD,PIND1

//UART Initialization
LDI R16,0x28
OUT UCSRB,R16
LDI R16,0x86
OUT UCSRC,R16
LDI R16,51
OUT UBRRL,R16
SEI
LDI R17,0x00

Infinite_Loop: NOP
JMP Infinite_Loop

Tx_Data: OUT UDR,R17


INC R17
RETI
EXAMPLE:3
Program the ATMEGA32 to receive bytes of data serially and put them
on PORTC. Set the baud rate at 9600, oscillator frequency 8Mhz, 8-bit data, and
1 stop
bit.

.INCLUDE "M32DEF.INC"
.ORG 0x0000

//Stack Initialisation
LDI R16,HIGH(RAMEND)
OUT SPH,R16
LDI R16,LOW(RAMEND)
OUT SPL,R16

//Data Direction Register Initialization


CBI DDRD,PIND0 // PORTD0 as Input Pin
SBI PORTD,PIND0 //Enabling internal Pull-up register
LDI R16,0xFF
OUT DDRC,R16 // PORTC as data receive status pins

// UART Initialization
LDI R16,0x10
OUT UCSRB,R16
LDI R16,0x86
OUT UCSRC,R16
LDI R16,51
OUT UBRRL,R16

AGAIN: SBIS UCSRA,RXC


RJMP AGAIN
IN R17,UDR
OUT PORTC,R17
RJMP AGAIN
Class Assignment 3:
Write Assembly Code for UART transmission PC through ATMEGA32 to LCD 16x2 to display
text and if enter hitsthe line will be changed to next line. Set 8bit mode, Fosc=8MHz,
Baud Rate=9600, U2X=0 and 1 stopbits.

.INCLUDE "M32DEF.INC"
.ORG 0x0000
JMP MAIN

.ORG 0x001A
JMP Rx

MAIN:
LDI R16,HIGH(RAMEND)
OUT SPH,R16
LDI R16,LOW(RAMEND)
OUT SPL,R16

// Data Direction Register Settings for LCD


LDI R16,0xFF
OUT DDRB,R16
SBI DDRD,PIND4 //Falling Edged Enable
SBI DDRD,PIND5 //Register Select

// LCD Initialization
CBI PORTD,PIND5 // Command Register Enable
LDI R16,0x38 //2 lines and 5x7 matrix
OUT PORTB,R16
CALL ENABLE
LDI R16,0x02 // Return Home
OUT PORTB,R16
CALL ENABLE
LDI R16,0x01 // Clear display screen
OUT PORTB,R16
CALL ENABLE
LDI R16,0x0e //Display on, cursor blinking
OUT PORTB,R16
CALL ENABLE
LDI R16,0x06 // Shift Cursor to right after print on LCD
OUT PORTB,R16
CALL ENABLE

//Set Cursor Coordinate


LDI R16,0x80 //Set Cursor at begining of 1st Line
OUT PORTB,R16
CALL ENABLE

// Tx Rx pins Data Direction Register


CBI DDRD,PIND0 // Set Rx as Input Pin
SBI PORTD,PIND0 //Enable Internal Pull-Up Register
SBI DDRD,PIND1 // Set Tx as Output Pin
SBI PORTD,PIND1

//UART Initialization
LDI R16,0x98// Enabling Tx Rx
OUT UCSRB,R16
LDI R17,0x86// 8 bit data mode
OUT UCSRC,R17 //9600bps Baud-Rate Settings for 8MHz Oscillator
LDI R16,0x00
OUT UBRRH,R16
LDI R16,51
OUT UBRRL,R16
SBI PORTD,PIND5 //Data Register Select Mode for LCD
SEI
LDI R21, 0x00 // LINE 1 CURSOR
LDI R22, 0x00 // LINE 2 CURSOR
LDI R19, 0xFF // TOGGLE THE LINES
// FF - LINE1
// 00 - LINE2

Infinite_Loop:
NOP
RJMP Infinite_Loop

Rx:
IN R20,UDR // DATA

CPI R20, 0X0D


BREQ ENTER

JMP PRINT
RETI

PRINT : CPI R19, 0xFF


BREQ PRINT_LINE1
CPI R19, 0x00
BREQ PRINT_LINE2
RETI

PRINT_LINE1:
CALL SHIFT_CURSOR_LINE1
SBI PORTD,PIND5 // DATA REGISTER ENABLE
OUT PORTB, R20
CALL ENABLE
INC R21 // CURSOR INCREMENT
RETI

PRINT_LINE2:
CALL SHIFT_CURSOR_LINE2
SBI PORTD,PIND5 // DATA REGISTER ENABLE
OUT PORTB, R20
CALL ENABLE
INC R22 // CURSOR INCREMENT
RETI

SHIFT_CURSOR_LINE1 : CBI PORTD, PIND5 // COMMAND ENABLE


LDI R18, 0x80
ADD R18, R21
OUT PORTB, R18
CALL ENABLE
RET

SHIFT_CURSOR_LINE2 : CBI PORTD, PIND5 // COMMAND ENABLE


LDI R18, 0xC0
ADD R18, R22
OUT PORTB, R18
CALL ENABLE
RET

ENTER: COM R19 // CHANGES THE LINE


SBRS R19, 0 // SHIFT TO LINE 2
CALL SHIFT_CURSOR_LINE2
SBRC R19, 1 // CHANGED TO LINE1
CALL SHIFT_CURSOR_LINE1
RETI

ENABLE : SBI PORTD,PIND4


LDI R18,0xFF
LOOP2: LDI R17,0x04
LOOP1: NOP
DEC R17
BRNE LOOP1
DEC R18
BRNE LOOP2
CBI PORTD,PIND4
RET
SIMULATIONS ON SIMULIDE
EXAMPLE:1

EXAMPLE:3

CLASS ASSIGNMENT
REAL-TERM MONITOR
EXAMPLE:1

SERIAL PLOTTER
EXAMPLE:2
HARDWARE

You might also like