Experiment
Experiment
.INCLUDE "M32DEF.INC"
.ORG 0x0000
//Stack Initialisation
LDI R16,HIGH(RAMEND)
OUT SPH,R16
LDI R16,LOW(RAMEND)
OUT SPL,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
//UART Initialization
LDI R16,0x18// Enabling Tx Rx
OUT UCSRB,R16
LDI R17,0x86// 8 bit data mode
OUT UCSRC,R17
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
//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
.INCLUDE "M32DEF.INC"
.ORG 0x0000
//Stack Initialisation
LDI R16,HIGH(RAMEND)
OUT SPH,R16
LDI R16,LOW(RAMEND)
OUT SPL,R16
// UART Initialization
LDI R16,0x10
OUT UCSRB,R16
LDI R16,0x86
OUT UCSRC,R16
LDI R16,51
OUT UBRRL,R16
.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
// 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
//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
JMP PRINT
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
EXAMPLE:3
CLASS ASSIGNMENT
REAL-TERM MONITOR
EXAMPLE:1
SERIAL PLOTTER
EXAMPLE:2
HARDWARE