Software Engineering You are a WebApp designer for FutureLea

Software Engineering

You are a WebApp designer for FutureLearning Corporation, a distance learning company. You intend to implement an Internet-based “learning engine” that will enable you to deliver course content to a student. The learning engines provides the basic infrastructure for delivering learning content on any subject (content designers will prepare appropriate content). Develop a prototype interface design for the learning engine.

Solution

.INCLUDE <m328pdef.inc>
.CSEG
.ORG 0x0000
RST_VECT:
rjmp Reset // jump over the IVT, tables and include file(s)
.ORG 0x0100 // bypass IVT

; SPI interface registers
.DEF spiLEDS=r8
.DEF spi7SEG=r7

; Switches
.DEF switch=r6

; Temporary storage of AVR Status REGister Flag bits
.DEF reg_F=r15

; 7-segment display
.EQU seg_a=0
.EQU seg_b=1
.EQU seg_c=2
.EQU seg_d=3
.EQU seq_e=4
.EQU seg_f=5
.EQU seg_g=6
.EQU seg_dp=7

InitShield:
; Disable interrupts and configure stack pointer for 328P
   cli

; Initialize Switches with Pull-up resistors and Test LEDs
   in       r16,DDRC       // input Port C Data Direction Register (0x07) for switches 5 to 0
   cbr       r16,0b00111111   // define bits 5 to 0 as input (clear bit register)
   out       DDRC,r16       // output

   in       r16,PORTC       // input Port C Register (0x08) for switches 5 to 0
   sbr       r16,0b00111111   // add pull-up resistors (PUR)
   out       PORTC,r16       // output

   in       r16,DDRD       // input Port D Data Direction Register (0x0A) for switches 7 to 6
   cbr       r16,0b11000000   // define bits 7 to 6 as input (clear)
   out       DDRD,r16       // output

   in       r16,PORTD       // input Port D Register (0x0B) for switches 7 to 6
   sbr       r16,0b11000000   // add pull-up resistors (PUR)
   out       PORTD,r16       // output

; Initialize SPI Port
   in       r16,DDRB       // Input from Port B Data Direction Register (DDRB) at i/o address 0x04
   sbr    r16,0b00101111   // Set PB5, PB3, PB2 (SCK, MOSI, SS) and PB1, PB0 (TEST LEDs) as outputs
   out    DDRB,r16       // Output to Port B Data Direction Register (DDRB) at i/o address 0x04

   ldi       r16,0b01010001   // Set SPCR Enable (SPE) bit 6, Master (MSTR) bit 4, clock rate fck/16 (SPR1 = 0,SPR0 = 1)
   out    SPCR,r16       // Output to SPI Control Register (SPCR) at i/o address 0x2c

   cbi       PORTB,2           // Clear I/O Port B bit 2 (SS) at i/o address 0x05
   cbi       PORTB,1           // Clear I/O Port B bit 1 (TEST LED1)
   cbi       PORTB,0           // Clear I/O Port B bit 0 (TEST LED0)
   ret

ReadSwitches:
; SPI Software Wires
push r17
push r16

in r17, PINC // input port C pins (0x06) into register r17
in r16, PIND // input port D pins (0x09) into register r16

cbr r17, 0b11000000 // clear non-switch bits 7 and 6
cbr r16, 0b00111111 // clear non-switch bits 5 to 0

or r16, r17 // concatenate switches SW7 - SW6 : SW5 - SW0
mov r6, r16 // move to standardized switch register

pop r16
pop r17
ret

WriteDisplay:
; Save SREG
push reg_F
in reg_F, SREG
; Start transmission of data
   out    SPDR,spiLEDS
   rcall   spiTxWait
   out       SPDR,spi7SEG
   rcall   spiTxWait
   sbi       PORTB,PB2       // strobe latches
   cbi       PORTB,PB2
; Restore SREG
   out SREG, reg_F
   pop reg_F
   ret

SpiTxWait:
   push   r16
; Wait for transmission complete
spiPolling:
   in       r16,SPSR
   bst       r16,SPIF
   brtc    spiPolling
   pop       r16
   ret

; --------------------------
reset:
ldi r16, high (RAMEND) // IO[0x3e] = 0x08
out SPH, r16
ldi r16, low(RAMEND) // IO[0x3d] = 0xff
out SPL, r16
call InitShield
loop:
call ReadSwitches // read switches into r6
mov r7, r6 // wire switches to the 7 segment display
mov r8, r7 // wire switches to the 8 discrete LEDs
call WriteDisplay // write r7 to the 7 segment display and r8 to 8 discrete LEDs
rjmp loop

Software Engineering You are a WebApp designer for FutureLearning Corporation, a distance learning company. You intend to implement an Internet-based “learning
Software Engineering You are a WebApp designer for FutureLearning Corporation, a distance learning company. You intend to implement an Internet-based “learning
Software Engineering You are a WebApp designer for FutureLearning Corporation, a distance learning company. You intend to implement an Internet-based “learning

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site