Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

1. Code analysis (50pts)- Analyze the following code and explain what it does. n

ID: 2291213 • Letter: 1

Question

1. Code analysis (50pts)- Analyze the following code and explain what it does. nclude unsigned char MST Data,SLV Data; int main(void) // Set P 1.0 for LED // Set P1.1 for slave reset P1OUT | = 0x02; PIDIR |=0x03; P3SEL | = 0x31; UCAOCTL1 lUCSSEL 2; UCAOBR0 = 0x02; UCAOBR1 0; UCA0MCTL = 0; UCA0CTL1 &-"UCSVVRST; UCAOIE I=UCRXIE; P1OUT &= ~0x02; P1OUT |= 0x02; delay_cycles(100) MST Data=0x01 SLV Data- 0x00; while (!UCAOIFG&UCTXIFG;)); UCAOTXBUF = MST. Data, bis SR_register(LPMO bits GIE); # pragma vector:USCI-AO-VECTOR interrupt void USCI_A0 ISR(void) switch (even in range(UCAOIV, 4) case 0: break; case 1 while(!UCAOIFG&UCTXIFG;)); if (UCAORX BUF==SLV. Data) P1OUT &= ~0x01; MST Data++ SLV Data++ UCAOTXBUF=MST Data

Explanation / Answer

#include <msp430.h>

unsigned char MST_Data,SLV_Data;

int main(void)

{

P1OUT | = 0x02; // Set P1.0 for LED

                           // Set P1.1 for slave reset

P1DIR | = 0x03;

P3SEL | = 0x31;

UCAOCTL1 | = UCSWRST;

UCAOCTLO | = UCMST+UCSYNC+UCCKPL+UCMSB;

UCAOCTL1 | = UCSSEL_2;

UCAOBRO = 0x02;

UCAOBR1 = 0;

UCAOMCTL = 0;

UCA0CTL1 &= ~UCSWRST;

UCAOIE | = UCRXIE;

P1OUT &= ~0x02;

P1OUT I= 0x02;

_delay_cycles(100);

MST Data= Ox01;

SLV_Data= Ox00;

while(!UCAOIFG&UCTXIFG));

UCAOTXBUF = MST_Data;

_bis_SR_register(LPM0_bits + GIE);

)

#pragma vector=USCI_AO_VECTOR

_interrupt void USCI_AO_ISR(void)

{

switch (_even_in_range(UCAOIV, 4)

{

case 0:

break;

case 1:

while(!UCAOIFG&UCTXIFG));

if (UCAORXBUF=SLV_Data)

P1OUT &= ~0x01;

MST_Data++;

SLV_Data++;

UCAOTXBUF = MST_Data;

break;

case 4:

break;

default: break;

}

}

$nasm -f elf *.asm; ld -m elf_i386 -s -o demo *.o
main.asm:1: error: label or instruction expected at start of line

main.asm:2: error: parser: instruction expected

main.asm:3: error: comma, colon, decorator or end of line expected after operand

main.asm:4: error: invalid decorator token inside braces

main.asm:4: error: label or instruction expected at start of line

main.asm:5: error: parser: instruction expected

main.asm:6: error: label or instruction expected at start of line

main.asm:7: error: parser: instruction expected

main.asm:8: error: parser: instruction expected

main.asm:9: error: parser: instruction expected

main.asm:10: error: parser: instruction expected

main.asm:11: error: symbol `UCAOCTL1' redefined

main.asm:11: error: parser: instruction expected

main.asm:12: error: parser: instruction expected

main.asm:13: error: parser: instruction expected

main.asm:14: error: parser: instruction expected

main.asm:15: error: parser: instruction expected

main.asm:16: error: parser: instruction expected

main.asm:17: error: symbol `P1OUT' redefined

main.asm:17: error: parser: instruction expected

main.asm:18: error: symbol `P1OUT' redefined

main.asm:18: error: parser: instruction expected

main.asm:19: error: parser: instruction expected

main.asm:20: error: parser: instruction expected

main.asm:21: error: parser: instruction expected

main.asm:22: error: parser: instruction expected

main.asm:23: error: parser: instruction expected

main.asm:24: error: parser: instruction expected

main.asm:25: error: label or instruction expected at start of line

main.asm:26: error: label or instruction expected at start of line

main.asm:27: error: parser: instruction expected

main.asm:28: error: invalid decorator token inside braces

main.asm:28: error: label or instruction expected at start of line

main.asm:29: error: parser: instruction expected

main.asm:30: error: invalid decorator token inside braces

main.asm:30: error: label or instruction expected at start of line

main.asm:31: error: parser: instruction expected

main.asm:32: warning: label alone on a line without a colon might be in error [-w+orphan-labels]

main.asm:33: error: symbol `case' redefined

main.asm:33: error: parser: instruction expected

main.asm:34: error: symbol `while' redefined

main.asm:34: error: parser: instruction expected

main.asm:35: error: parser: instruction expected

main.asm:36: error: symbol `P1OUT' redefined

main.asm:36: error: parser: instruction expected

main.asm:37: error: parser: instruction expected

main.asm:38: error: symbol `SLV_Data' redefined

main.asm:38: error: parser: instruction expected

main.asm:39: error: symbol `UCAOTXBUF' redefined

main.asm:39: error: parser: instruction expected

main.asm:40: warning: label alone on a line without a colon might be in error [-w+orphan-labels]

main.asm:40: error: symbol `break' redefined

main.asm:41: error: symbol `case' redefined

main.asm:41: error: parser: instruction expected

main.asm:42: warning: label alone on a line without a colon might be in error [-w+orphan-labels]

main.asm:42: error: symbol `break' redefined

main.asm:43: error: invalid parameter to [default] directive

main.asm:44: error: label or instruction expected at start of line

main.asm:45: error: label or instruction expected at start of line

ld: cannot find *.o: No such file or directory