Experiment
Experiment
.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
LDI R18,0x01
OUT UDR,R18
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
// 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
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
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
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:
HARDWARE