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 : 8

Analog to Digital Conversion (Internal 10bit ADC)


Example 1: Write a program for the AVR for ADC and transfer the ADC Value
serially through UART at 9600 baud, continuously. Oscillator Frequency=8MHz,
U2X=0, StopBit=1, No Parity Bit. The data will be printed on realterm horizontally.

.INCLUDE "M32DEF.INC"
.ORG 0x0000 LDI R16,HIGH(RAMEND)
OUT SPH,R16
LDI R16,LOW(RAMEND)
OUT SPL,R16

// ADC Initialization
LDI R16,0x00
OUT ADMUX,R16
LDI R16,0xC3
OUT ADCSRA,R16

//UART Initialization
SBI DDRD,PIND1 // Set Tx as Output Pin
SBI PORTD,PIND1
//UART Initialization
LDI R16,0x08// 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,51
OUT UBRRL,R16
MAIN: SBI ADCSRA,ADSC
CONV: SBIC ADCSRA,ADSC
RJMP CONV //Jump over next instruction if portbit clear
IN R16,ADCL
IN R17,ADCH
OUT UDR,R17
AGAIN1: SBIS UCSRA, UDRE
RJMP AGAIN1
OUT UDR,R16
AGAIN2: SBIS UCSRA, UDRE
RJMP AGAIN2
JMP MAIN

Example 2: Write a program for the AVR for ADC and transfer the
ADC Value serially through UART at 9600 baud, continuously.
Oscillator Frequency=8MHz, U2X=0, StopBit=1, No Parity Bit.
The data will be printed on realterm vertically i.e. new line
program.

.INCLUDE "M32DEF.INC"
.ORG 0x0000

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

// ADC Initialization
LDI R16,0x00
OUT ADMUX,R16
LDI R16,0xC3
OUT ADCSRA,R16

//UART Initialization
SBI DDRD,PIND1 // Set Tx as Output Pin
SBI PORTD,PIND1

//UART Initialization
LDI R16,0x08// 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,51
OUT UBRRL,R16

MAIN: SBI ADCSRA,ADSC


CONV: SBIC ADCSRA,ADSC
RJMP CONV //Jump over next instruction if portbit
clear
IN R16,ADCL
IN R17,ADCH
OUT UDR,R16

AGAIN1: SBIS UCSRA, UDRE


RJMP AGAIN1
OUT UDR,R17

AGAIN2: SBIS UCSRA, UDRE


RJMP AGAIN2

LDI R18,0x01
OUT UDR,R18

AGAIN3: SBIS UCSRA, UDRE


RJMP AGAIN3
LDI R18,0x00
OUT UDR,R18

AGAIN4: SBIS UCSRA, UDRE


RJMP AGAIN4
JMP MAIN

CLASS ASSIGNMENT
Write an assembly code to take input from ADC and print on LCD

.INCLUDE "M32DEF.INC"
.ORG 0x0000
//Stack Initialisation
LDI R16,HIGH(RAMEND)
OUT SPH,R16
LDI R16,LOW(RAMEND)
OUT SPL,R16

// ADC Initialization
LDI R16,0x00
OUT ADMUX,R16
LDI R16,0xC3
OUT ADCSRA,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 beginning of 1st Line
OUT PORTB,R16
CALL ENABLE

MAIN: SBI ADCSRA,ADSC


CONV: SBIC ADCSRA,ADSC
RJMP CONV //Jump over next instruction if portbit
clear
IN R24,ADCL
IN R25,ADCH

LDI R19,0
LOOP1A: INC R19
SBIW R25:R24,50
BRPL LOOP1A
DEC R19
LSR R19
ADIW R25:R24,50
ADIW R25:R24,50

LDI R20,0
LOOP2A: INC R20
SBIW R25:R24,10
BRPL LOOP2A
DEC R20
ADIW R25:R24,10

SBI PORTD,PIND5 //Data Register Select Mode for LCD


LDI R21,48
ADD R19,R21
OUT PORTB,R19
CALL ENABLE

ADD R20,R21
OUT PORTB,R20
CALL ENABLE

ADD R24,R21
OUT PORTB,R24
CALL ENABLE
CALL DELAY

CBI PORTD,PIND5
LDI R16,0x01 // Clear display screen
OUT PORTB,R16
CALL ENABLE

JMP MAIN

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

DELAY:
LDI R16,0xFF //Loop 1
L1: LDI R17,0xFF // Loop 2
L2: LDI R18,0x07 // Loop 3
L3: NOP
DEC R18
BRNE L3 //Loop 3 End
DEC R17
BRNE L2 //Loop 2 End
DEC R16
BRNE L1 // Loop 1 End
RET
SIMULATION ON SIMULIDE
Example1:

Example2:
CLASS ASSIGNMENT:

REAL TERM MONITOR


Example1:
Example2:

HARDWARE

You might also like