ECE 376: Embedded Systems

Homework 2
Command W A B
; Start 11 12 13
incf B,W 14 12 13
decf A,F 14 11 13
iorwf A,W 15 11 13
andwf B,F 15 11 13
movlw 15 15 11 13
subwf A,W -4 11 13
  1. 
    ; 8-bit
    ; unsigned char A, B, C;
    ; A = B + 2*C + 3;

rlncf C, W ; C 2 addwf B, W ; B + 2C addlw 3 ; B + 2C + 3 movwf A ; A = B + 2C + 3

3.
```asm
; 16-bit
; unsigned int A, B, C;
; A = B + 2*C + 3;

movf   C, W
addwf  C, W
movwf  A
movf   C+1, W
addwfc C+1, W
movwf  A+1      ; A = 2*C

movf   A, W
addwf  B, W
movwf  A
movf   A+1, W
addwfc B+1, W
movwf  A+1      ; A = B + 2*C

movf   A, W
addlw  3
movwf  A
movlw  0
addwfc A+1, F   ; A = B + 2*C + 3
  1. ; unsigned char A, B, C;
    ; if(A > B) C += 1
    ; if(A < B) C -= 1
    
     movf   B, W
     cpfsgt A
     goto   IF2
     incf   C, F
    IF2:
     cpfslt A
     goto   END_
     decf   C, F
    END_:
     end
  2. 
    ; Start

include <p18f4620.inc>

org 0x800
movlw 0xFF
movwf TRISB
clrf  TRISC
clrf  PORTC
movlw 0x0F
movwf ADCON1

Loop1: btfss PORTB,0 goto Loop1 btfss PORTB, 1 goto K btfss PORTB, 2 goto J Loop2: btfsc PORTB,0 goto Loop2 goto Loop1 K: btfss PORTB, 2 goto JK clrf PORTC goto Loop2 J: movlw 0xFF movwf PORTC goto Loop2 JK: movlw 0 cpfseq PORTC goto JK_ZERO movlw 0xFF movwf PORTC goto Loop2 JK_ZERO: clrf PORTC goto Loop2

end
6.
```asm
#include <p18f4620.inc> 

    org 0x800
    movlw 0xFF
    movwf TRISB
    clrf  TRISC
    clrf  PORTC
    movlw 0x0F
    movwf ADCON1

Loop1:
    movlw  0
    cpfseq PORTB
    goto   Loop1
Loop2:
    btfsc  PORTB, 0
    goto   Six
    btfsc  PORTB, 1
    goto   Eight
Sixteen:
    incf   PORTC, F  ; Increment
    movlw  16
    cpfslt PORTC
    goto   Loop1      ; Less than 16
    subwf  PORTC, F   ; More than 16
    goto   Loop1
Six:
    incf   PORTC, F  ; Increment
    movlw  6
    cpfslt PORTC
    goto   Loop1      ; Less than 6
    subwf  PORTC, F   ; More than 6
    goto   Loop1
Eight:
    incf   PORTC, F  ; Increment
    movlw  8
    cpfslt PORTC
    goto   Loop1      ; Less than 8
    subwf  PORTC, F   ; More than 8
    goto   Loop1

    end