You are on page 1of 65

C Huy Hong Long

L Thanh

PHN I: CODE ASSEMBLY


====================================================================

Bi 1.a1: Chng trnh hin th gi tr N(nhp t SW7:0) ra LED7:0 nu N l s chn.


====================================================================
.text
.equ RED_LEDS, 0x00103020
.equ SWITCHES, 0x00103060
.global main
main:
movia

r9, SWITCHES

movia

r10, RED_LEDS

ldwio

r7, 0(r9)

andi

r7, r7, 0xff

# Nhap gia tri tu N tu SW7:0

# Neu bit cuoi la 1-->so le, nguoc lai la so chan


andi

r8, r7, 0x1

bne

r8, r0, RESET

stwio

r7, 0(r10)

# Neu r8 = 0 --> so chan --> xuat LED


br main
RESET:
stwio

r0, 0(r10)

br

main

.end

1|Page

C Huy Hong Long

L Thanh

====================================================================

Bi 1.a2: Chng trnh hin th gi tr N nhp tu SW7:0 ra LED7:0 nu N l s l.


====================================================================
.text
.equ RED_LEDS, 0x00103020
.equ SWITCHES, 0x00103060
.global main
main:
movia

r9, SWITCHES

movia

r10, RED_LEDS

ldwio

r7, 0(r9)

# Nhap gia tri tu N tu SW7:0


andi

r7, r7, 0xff

# Neu bit cuoi la 1-->so le, nguoc lai la so chan


andi

r8, r7, 0x1

beq

r8, r0, RESET

stwio

r7, 0(r10)

# Neu r8 = 0 --> so chan --> RESET


br main
RESET:
stwio

r0, 0(r10)

br

main

.end

2|Page

C Huy Hong Long

L Thanh

====================================================================

Bi 1.b1: Chng trnh hin th gi tr N nhp t SW7:0 ra LED7:0 nu N<M.


====================================================================
.text
.equ SWITCHES, 0x00103060
.equ RED_LEDS, 0x00103020
.global main
main:
movia

r10, SWITCHES

movia

r12, RED_LEDS

movia

r4, M

ldw

r7, 0(r4)

ldwio

r9, 0(r10)

andi

r9, r9, 0xff

bge

r9, r7, RESET

# Kiem tra N<M ko? Neu khong thi quay lai main
stwio

r9, 0(r12)

br

main

RESET:
stwio

r0, 0(r12)

br

main

.data
M:
.word 7
.end

3|Page

C Huy Hong Long

L Thanh

====================================================================

Bi 1.b2: Chng trnh hin th gi tr N nhp t SW7:0 ra LED7:0 nu N>M.


====================================================================
.text
.equ SWITCHES, 0x00103060
.equ RED_LEDS, 0x00103020
.global main
main:
movia

r10, SWITCHES

movia

r12, RED_LEDS

movia

r4, M

ldw

r7, 0(r4)

ldwio

r9, 0(r10)

andi

r9, r9, 0xff

ble

r9, r7, main

# Kiem tra N>M ko? Neu khong thi quay lai main
stwio

r9, 0(r12)

br

main

RESET:
stwio

r0, 0(r12)

br

main

.data
M:
.word 7
.end

4|Page

C Huy Hong Long

L Thanh

====================================================================

Bi 1.c1: Chng trnh hin th gi tr N nhp t SW7:0 ra LED7:0 nu N (M1;M2).


====================================================================
.text
.equ SWITCHES, 0x00103060
.equ RED_LEDS, 0x00103020
.global main
main:
movia

r10, SWITCHES

movia

r12, RED_LEDS

movia

r4, M1

ldw
r7 = 7

r7, 0(r4)

ldw

r8, 4(r4)

# Lay gia tri cua M1 dua vao r7

# Lay gia tri cua M2 dua vao r8 r8 = 15


ldwio

r9, 0(r10)

andi

r9, r9, 0xff

ble

r9, r7, RESET

# Kiem tra lan 1: Neu N<=M1 khong xuat N


call

COMPARE_M2

br

main

# Goi ham con COMPARE_M2

COMPARE_M2:
bge

r9, r8, RESET

# Kiem tra lan 2: Neu N >=M2 Khong xuat N


stwio

r9, 0(r12)

ret

# tro ve cau lenh lien sau lenh goi ham con

RESET:
stwio

r0, 0(r12)

br

main

.data
M1:
.word 7
M2:
.word 15
.end

5|Page

C Huy Hong Long

L Thanh

====================================================================

Bi 1.c2: Chng trnh hin th gi tr N nhp t SW7:0 ra LED7:0 nu N nm ngoi khong


(M1;M2).
====================================================================
.text
.equ SWITCHES, 0x00103060
.equ RED_LEDS, 0x00103020
.global main
main:
movia

r10, SWITCHES

movia

r12, RED_LEDS

movia

r4, M1

ldw

r7, 0(r4)

# Lay gia tri cua M1 dua vao r7 r7 = 7


ldw

r8, 4(r4)

# Lay gia tri cua M2 dua vao r8 r8 = 15


ldwio

r9, 0(r10)

andi

r9, r9, 0xff

bgt

r9, r7, COMPARE_M2

# Kiem tra lan 1: Neu N <=M1 Xuat N


stwio

r9, 0(r12)

br

main

COMPARE_M2:
blt

r9, r8, RESET

# Kiem tra lan 2: Neu N < M2 Khong xuat N


stwio

r9, 0(r12)

br

main

RESET:
stwio

r0, 0(r12)

br

main

.data
M1:
.word 7
M2:
.word 15
.end
6|Page

C Huy Hong Long

L Thanh

7|Page

C Huy Hong Long

L Thanh

====================================================================

Bi 1.d:Chng trnh hin th gi tr N nhp t SW7:0 ra LED7:0 nu N chia ht cho 3,4,6,8.


====================================================================
.text
.equ SWITCHES, 0x00103060
.equ RED_LEDS, 0x00103020
.global main
main:
movia

r10, SWITCHES

movia

r12, RED_LEDS

movia

r4, Divisor

ldw

r7, 0(r4)

ldwio

r9, 0(r10)

andi

r9, r9, 0xff

div

r8, r9, r7

mul

r8, r8, r7

bne

r8, r9, RESET

stwio

r9, 0(r12)

br

main

RESET:
stwio

r0, 0(r12)

br

main

.data
Divisor:
.word 3
# De N chia het cho 4, 6, 8 thi cho gia tri nay bang 4, 6, 8
.end

8|Page

C Huy Hong Long

L Thanh

====================================================================

Bi 1.e: Chng trnh hin th gi tr N nhp t SW7:0 ra LED7:0 nu N l s NGUYN T.


Notes: Trong on code ny xem 0,1 khng phi l s nguyn t.
====================================================================
.text
.equ SW, 0x00103060
.equ RED_LEDS, 0x00103020
.global main
main:
movia

r10, SW

movia

r12, RED_LEDS

movi

r7, 0x2

movi

r5, 0x1

ldwio

r9, 0(r10)

andi

r9, r9, 0xff

beq

r9, r0, RESET

beq

r9, r5, RESET

div

r8, r9, r7

mul

r8, r8, r7

bne

r8, r9, TEMP

bne

r7, r9, RESET

stwio

r9, 0(r12)

br

main

addi

r7, r7, 1

br

LOOP

LOOP:

TEMP:

RESET:
stwio

r0, 0(r12)

br

main

.end

9|Page

C Huy Hong Long

L Thanh

====================================================================

Bi 1.e: Chng trnh hin th gi tr N nhp t SW7:0 ra LED7:0 nu N l


s CHNH PHNG.
Notes: Trong on code ny xem 0,1 khng l s chnh phng.
====================================================================
.text
.equ SW, 0x00103060
.equ RED_LEDS, 0x00103020
.global main
main:
movia

r10, SW

movia

r12, RED_LEDS

movi

r7, 0x2

movi

r5, 0x1

ldwio

r9, 0(r10)

andi

r9, r9, 0xff

div

r8, r9, r7

mul

r8, r8, r8

bne

r8, r9, CONTINUE

stwio

r9, 0(r12)

br

main

LOOP:

CONTINUE:
add

r7, r7, 1

bgt

r7, r9, RESET

br

LOOP

RESET:
stwio

r0, 0(r12)

br

main

.end

10 | P a g e

C Huy Hong Long

L Thanh

====================================================================

Bi 2.a: Chng trnh tnh giai tha ca N vi N nhp t SW7:0 v hin th kt qu ra


LED15:0.
====================================================================
.text
.equ SW, 0x00103060
.equ RED_LEDs, 0x00103020
.global main
main:
movia

r10, SW

movia

r15, RED_LEDs

ldwio

r9, 0(r10)

andi

r9, r9, 0xff

movi

r5, 0x1

movi

r11, 0x1

addi

r5, r5, 0x1

bgt

r5, r9, EXP

mul

r11, r11, r5

br

LOOP

LOOP:

EXP:
# Hien thi gia tri ra LEDR15:0
andi

r11, r11, 0xffff

stwio

r11, 0(r15)

br

main

.end

11 | P a g e

C Huy Hong Long

L Thanh

====================================================================

Bi 2.b: Chng trnh tnh NN vi N nhp t SW3:0 v hin th kt qu ra LED15:0.


====================================================================
.text
.equ SW, 0x00103060
.equ RED_LEDs, 0x00103020
.global main
main:
movia

r10, SW

movia

r12, RED_LEDs

ldwio

r11, 0(r10)

andi

r11, r11, 0xf

# Chi lay gia tri cua SW3:0


movi

r9, 0x1

movi

r15, 0x1

addi

r9, r9, 0x1

mul

r15, r15, r11

bgt

r9, r11, EXP

br

LOOP

andi

r15, r15, 0xffff

stwio

r15, 0(r12)

br

main

LOOP:

EXP:

.end

12 | P a g e

C Huy Hong Long

L Thanh

====================================================================

Bi 3.a: Chng trnh hin th tng N gi tr u tin ca dy s FIBONACI vi N nhp t


SW7:0 v hin th kt qu ra LED15:0.
Chui s FIBONACI:
F(0) = 0
F(1) = 1
F(N) = F(N-1) + F(N-2) (vi N>1).
====================================================================
.text
.equ SW, 0x00103060
.equ RED_LEDS, 0x00103020
.global main
main:
movia

r9, SW

movia

r12, RED_LEDS

ldwio

r14, 0(r9)

andi

r14, r14, 0xff

movi

r15, 0

movi

r16, 0x1

movi

r6, 0x1

add

r18, r15, r16

subi

r14, r14, 0x1

add

r17, r15, r16

add

r18, r18, r17

mov

r15, r16

mov

r16, r17

bne

r14, r6, LOOP

andi

r18, r18, 0xffff

stwio

r18, 0(r12)

br

main

LOOP:

.end

13 | P a g e

C Huy Hong Long

L Thanh

===================================================================

Bi 3.b: Chng trnh hin th tng:


F(N) = 1 + 2 + 3 + 4 + + N.
Vi N nhp t SW7:0 v hin th kt qu ra LED15:0.
====================================================================
.text
.equ SW, 0x00103060
.equ RED_LEDS, 0x00103020
.global main
main:
movia

r10, SW

movia

r12, RED_LEDS

ldwio

r14, 0(r10)

andi

r14, r14, 0xff

mov

r15, r0

mov

r16, r0

subi

r14, r14, 0x1

addi

r15, r15, 0x1

add

r16, r16, r15

bne

r14, r0, LOOP

andi

r16, r16, 0xff

stwio

r16, 0(r12)

br

main

LOOP:

.end

14 | P a g e

C Huy Hong Long

L Thanh

====================================================================

Bi 3.c: Chng trnh hin th tng:


F(N) = 1 + 3 + 5 + 7 + + (2N+1).
Vi N nhp t SW7:0 v hin th kt qu ra LED15:0.
====================================================================
.text
.equ SW, 0x00103060
.equ RED_LEDS, 0x00103020
.global main
main:
movia

r9, SW

movia

r12, RED_LEDS

ldwio

r14, 0(r9)

andi

r14, r14, 0xff

movi

r15, 0x1

movi

r16, 0x1

subi

r14, r14, 0x1

addi

r15, r15, 0x2

add

r16, r16, r15

bne

r14, r0, LOOP

andi

r16, r16, 0xffff

stwio

r16, 0(r12)

br

main

LOOP:

.end

15 | P a g e

C Huy Hong Long

L Thanh

===================================================================

Bi 3.d: Chng trnh hin th tng:


F(N) = 2 + 4 + 6 + 8 + + 2N.
Vi N nhp t SW7:0 v hin th kt qu ra LED15:0.
====================================================================
.text
.equ SW, 0x00103060
.equ RED_LEDS, 0x00103020
.global main
main:
movia

r9, SW

movia

r12, RED_LEDS

ldwio

r14, 0(r9)

andi

r14, r14, 0xff

movi

r15, 0

movi

r16, 0

subi

r14, r14, 0x1

addi

r15, r15, 0x2

add

r16, r16, r15

bne

r14, r0, LOOP

andi

r16, r16, 0xffff

stwio

r16, 0(r12)

br

main

LOOP:

.end

16 | P a g e

C Huy Hong Long

L Thanh

====================================================================

Bi 3.e: Chng trnh hin th tng:


F(N) = 22 + 42 + 62 + 82 + + (2N)2.
Vi N nhp t SW7:0 v hin th kt qu ra LED15:0.
====================================================================
.text
.equ SW, 0x00103060
.equ RED_LEDS, 0x00103020
.global main
main:
movia

r9, SW

movia

r12, RED_LEDS

ldwio

r14, 0(r9)

andi

r14, r14, 0xff

movi

r15, 0

movi

r16, 0

subi

r14, r14, 0x1

addi

r15, r15, 0x2

mul

r17, r15, r15

add

r16, r16, r17

bne

r14, r0, LOOP

andi

r16, r16, 0xffff

stwio

r16, 0(r12)

br

main

LOOP:

.end

17 | P a g e

C Huy Hong Long

L Thanh

====================================================================

Bi 3.f: Chng trnh hin th tng:


F(N) = 12 + 32 + 52 + 72 + + (2N+1)2.
Vi N nhp t SW7:0 v hin th kt qu ra LED15:0.
====================================================================
.text
.equ SW, 0x00103060
.equ RED_LEDS, 0x00103020
.global main
main:
movia

r9, SW

movia

r12, RED_LEDS

ldwio

r14, 0(r9)

andi

r14, r14, 0xff

movi

r15, 0x1

movi

r16, 0x1

subi

r14, r14, 0x1

addi

r15, r15, 0x2

mul

r17, r15, r15

add

r16, r16, r17

bne

r14, r0, LOOP

andi

r16, r16, 0xffff

stwio

r16, 0(r12)

br

main

LOOP:

.end

18 | P a g e

C Huy Hong Long

L Thanh

===================================================================

Bi 3.g: Chng trnh hin th tng: F(N) = 2M + 4M + 6M + + (2N)M.


Vi N nhp t SW7:0 v hin th kt qu ra LED15:0.
====================================================================
.text
.equ SW, 0x00103060
.equ RED_LEDS, 0x00103020
.global main
main:
movia

r9, SW

movia

r12, RED_LEDS

ldwio

r14, 0(r9)

andi

r14, r14, 0xff

movia

r11, M

ldw

r20, 0(r11)

mov

r15, r0

mov

r16, r0

subi

r14, r14, 0x1

addi

r15, r15, 0x2

add

r17, r15, r0

LOOP:

POWER_M:
subi

r20, r20, 0x1

beq

r20, r0, ADD_N_ELEMENT

mul

r17, r17, r15

br

POWER_M

ADD_N_ELEMENT:
add

r16, r16, r17

bne

r14, r0, LOOP

andi

r16, r16, 0xffff

stwio

r16, 0(r12)

br

main

.data
M:
.word 5
.end
19 | P a g e

C Huy Hong Long

L Thanh

====================================================================

Bi 4.a.1: Chng trnh dch RED_LEDS t phi sang tri.


====================================================================
.text
.equ RED_LEDS, 0x00103020
.global main
main:
movia

r4, RED_LEDS

movi

r5, 0x1

movi

r6, 0x13

subi

r6, r6, 0x1

beq

r6, r0, main

stwio

r5, 0(r4)

movi

r19, 0xBB8

mul

r20, r19, r19

slli

r5, r5, 0x1

LOOP:

DELAY:
subi

r20, r20, 0x1

beq

r20, r0, LOOP

br

DELAY

.end

20 | P a g e

C Huy Hong Long

L Thanh

====================================================================

Bi 4.a.2: Chng trnh dch GREEN_LEDS t tri sang phi.


====================================================================
.text
.equ GREEN_LEDS, 0x00103030
.global main
main:
movia

r4, GREEN_LEDS

movi

r5, 0x80

movi

r6, 0x9

subi

r6, r6, 0x1

beq

r6, r0, main

stwio

r5, 0(r4)

srli

r5, r5, 0x1

movi

r19, 0xBB8

mul

r20, r19, r19

# Set gia tri 0b1000 0000

LOOP:

DELAY:
subi

r20, r20, 0x1

beq

r20, r0, LOOP

br

DELAY

.end

21 | P a g e

C Huy Hong Long

L Thanh

====================================================================

Bi 4.b: Chng trnh dch RED_LEDS t phi sang tri khi SWX = 0, t tri sang phi khi
SWX = 1(X cho trc).
====================================================================
.text
.equ SW, 0x00103060
.equ RED_LEDS, 0x00103020
.global main
main:
movia

r10, SW

movia

r15, RED_LEDS

ldwio

r9, 0(r10)

movia

r11, X

ldw

r12, 0(r11)

srl

r9, r9, r12

andi

r9, r9, 0x1

movi

r7, 0x13

movi

r8, 0x20000

movi

r6, 0x1

movi

r19, 0xBB8

mul

r20, r19, r19

beq

r9, r0, SHIFT_LEFT

LOOP:

SHIFT_RIGHT:
subi

r7, r7, 0x1

beq

r7, r0, main

stwio

r8, 0(r15)

srli

r8, r8, 0x1

br

DELAY

SHIFT_LEFT:
subi

r7, r7, 0x1

beq

r7, r0, main

stwio

r6, 0(r15)

slli

r6, r6, 0x1

22 | P a g e

C Huy Hong Long

L Thanh

DELAY:
subi

r20, r20, 0x1

beq

r20, r0, LOOP

br

DELAY

.data
X:
.word 15
.end
====================================================================

Bi 4.c: Chng trnh dch LEDS t phi sang tri bt u t LEDG0 LEDG7 LEDR0
LEDR17 LEDG0.
====================================================================
.text
.equ GREEN_LEDS, 0x00103030
.equ RED_LEDS, 0x00103020
.global main
main:
movia

r4, GREEN_LEDS

movia

r5, RED_LEDS

movi

r6, 0x13

movi

r8, 0x9

movi

r9, 0x1

movi

r10, 0x1

subi

r8, r8, 0x1

ble

r8, r0, CHANGE_LED

stwio

r10, 0(r4)

stwio

r0, 0(r5)

slli

r10, r10, 0x1

movi

r19, 0xBB8

mul

r20, r19, r19

br

DELAY

LOOP:

CHANGE_LED:
subi

r6, r6, 1

beq

r6, r0, main

stwio

r9, 0(r5)
23 | P a g e

C Huy Hong Long

L Thanh

stwio

r0, 0(r4)

slli

r9, r9, 0x1

movi

r19, 0xBB8

mul

r20, r19, r19

DELAY:
subi

r20, r20, 0x1

beq

r20, r0, LOOP

br

DELAY

.end
====================================================================

Bi 4.d: Chng trnh LEDR0 chp tt vi tn s c iu chnh t SW1:0.


====================================================================
.text
.equ SW, 0x00103060
.equ RED_LEDS, 0x00103020
.global main
main:
movia

r9, SW

movia

r12, RED_LEDS

ldwio

r7, 0(r9)

andi

r7, r7, 0x2

movi

r15, 0x3

movi

r16, 0x2

movi

r17, 0x1

mov

r18, r0

sub

r18, r17, r18

stwio

r18, 0(r12)

beq

r7, r0, SET_DELAY0

beq

r7, r17, SET_DELAY1

beq

r7, r16, SET_DELAY2

beq

r7, r15, SET_DELAY3

br

main

LOOP:

24 | P a g e

C Huy Hong Long

L Thanh

SET_DELAY0:
movi

r19, 0x7D0

mul

r20, r19, r19

br

DELAY

# DELAY

4 000 000 LAN

# DELAY

9 000 000 LAN

# DELAY

16 000 000 LAN

# DELAY

25 000 000 LAN

SET_DELAY1:
movi

r19, 0xBB8

mul

r20, r19, r19

br

DELAY

SET_DELAY2:
movi

r19, 0xFA0

mul

r20, r19, r19

br

DELAY

SET_DELAY3:
movi
mul

r19, 0x1388
r20, r19, r19

DELAY:
subi

r20, r20, 0x1

beq

r20, r0, LOOP

br

DELAY

.end

====================================================================

Bi 4.e: Chng trnh RED_LEDS v tr l chp tt khi SWX = 1, v tr chn chp tt khi
SWX = 0.
====================================================================
.text
.equ SW, 0x00103060
.equ RED_LEDS, 0x00103020
.global main
main:
movia

r9, SW

movia

r12, RED_LEDS

ldwio

r10, 0(r9)

movia

r8, X

ldw

r11, 0(r8)

srl

r10, r10, r11


25 | P a g e

C Huy Hong Long

L Thanh

andi

r10, r10, 0x1

movhi

r15, 0x2

ori

r15, r15, 0xAAAA

movhi

r16, 0x1

ori

r16, r16, 0x5555

mov

r18, r0

beq

r10, r0, EVEN_LIGHT

LOOP:

ODD_LIGHT:
sub

r18, r16, r18

stwio

r18, 0(r12)

movi

r19, 0xbb8

mul

r20, r19, r19

DELAY:
subi

r20, r20, 0x1

beq

r20, r0, CHECK_SW

br

DELAY

EVEN_LIGHT:
sub

r18, r15, r18

stwio

r18, 0(r12)

movi

r19, 0xbb8

mul

r20, r19, r19

br

DELAY

CHECK_SW:
stwio

r0, 0(r12)

ldwio

r10, 0(r9)

movia

r8, X

ldw

r11, 0(r8)

srl

r10, r10, r9

andi

r10, r10, 0x1

br

LOOP

.data
X:
.word 7
.end

26 | P a g e

C Huy Hong Long

L Thanh

====================================================================

Bi 5.a: Chng trnh hin th ngy thng nm sinh theo kiu DD/MM/YYYY ra LEDS 7
on.
====================================================================
.text
.equ

HEX3_HEX0, 0x00103040

.equ

HEX7_HEX4, 0x00103050

.global main
main:
movia

r17, HEX3_HEX0

movia

r19, HEX7_HEX4

movia

r20, 7_SEG_TABLE

movia

r18, HEX_SEGMENT_1

movia

r21, HEX_SEGMENT_2

movia

r4, N

ldw

r5, 0(r4)

addi

r6, r4, 0xB

ldb

r7, 0(r6)

movi

r8, 0x4

subi

r5, r5, 0x1

add

r22, r20, r7

ldb

r10, 0(r22)

bge

r5, r8, YEAR

LOOP:

DAY_MONTH:
stb

r10, 0(r21)

addi

r21, r21, 0x1

subi

r6, r6, 0x1

ldb

r7, 0(r6)

bne

r5, r0, LOOP

movia

r18, HEX_SEGMENT_2

ldw

r12, 0(r21)

stwio

r12, 0(r19)

br

STOP

27 | P a g e

C Huy Hong Long

L Thanh

YEAR:
stb

r10, 0(r18)

beq

r5, r8, EXP_YEAR

addi

r18, r18, 0x1

subi

r6, r6, 0x1

ldb

r7, 0(r6)

br

LOOP

EXP_YEAR:
movia

r18, HEX_SEGMENT_1

ldw

r11, 0(r18)

stwio

r11, 0(r17)

br

LOOP

br

STOP

STOP:

.data
N:
.word 8
IMP_DAY_MONTH_YEAR:
.byte 0, 9, 1, 1, 1, 9, 9, 1
7_SEG_TABLE:
.byte 0b00111111, 0b00000110, 0b01011011, 0b01001111
.byte 0b01100110, 0b01101101, 0b01111101, 0b00000111
.byte 0b01111111, 0b01100111, 0b00000000, 0b00000000
.byte 0b00000000, 0b00000000, 0b00000000, 0b00000000
HEX_SEGMENT_1:
.fill 1, 4, 0
HEX_SEGMENT_2:
.fill 1, 4, 0
.end

28 | P a g e

C Huy Hong Long

L Thanh

====================================================================

Bi 5.b: Chng trnh hin th v dch ch HELLO t tri sang phi.


====================================================================
.text
.equ HEX3_HEX0, 0x00103040
.equ HEX7_HEX4, 0x00103050
.global main
main:
movia

r9, HEX3_HEX0

movia

r12, HEX7_HEX4

movhi

r15, 0xf2e

ori

r15, r15, 0x1c3f

movi

r16, 0x76

movi

r4, 0x4

movi

r5, 0

movi

r19, 0xbb8

mul

r20, r19, r19

stwio

r15, 0(r9)

stwio

r16, 0(r12)

call

DELAY

mov

r14, r15

srli

r14, r14, 0xfb

andi

r14, r14, 0xff

slli

r16, r16, 0x8

or

r16, r16, r14

slli

r15, r15, 0x8

addi

r5, r5, 0x1

bge

r5, r4, main

movi

r19, 0xbb8

mul

r20, r19, r19

br

LOOP

LOOP:

DELAY:
subi

r20, r20, 0x1

bne

r20, r0, DELAY

ret
29 | P a g e

C Huy Hong Long

L Thanh

====================================================================

Bi 5.c: Chng trnh hin th v m t 0 9.


====================================================================
.text
.equ HEX3_0, 0x00103040
.global main
main:
movia r9, HEX3_0
movia r10, SEVEN_DECODE_TABLE
mov r5, r0
mov r7, r0
movi r6, 0x9
movi r19, 0xbb8
mul r20, r19, r19
LOOP:
add r8, r10, r5
ldb r7, 0(r8)
and r7, r7, 0xff
stwio r7, 0(r9)
call DELAY
addi r5, r5 0x1
bgt r5, r6, main
movi r19, 0xbb8
mul r20, r19, r19
br LOOP
DELAY:
subi r20, r20, 0x1
bne r20, r0, DELAY
ret
.data
SEVEN_DECODE_TABLE:
.byte 0b00111111, 0b00000110, 0b01011011, 0b01001111
.byte 0b01100110, 0b01101101, 0b01111101, 0b00000111
.byte 0b01111111, 0b01100111, 0b00000000, 0b00000000
.byte 0b00000000, 0b00000000, 0b00000000, 0b00000000
.end
30 | P a g e

C Huy Hong Long

L Thanh

====================================================================

Bi 5.d: Chng trnh hin th v dch k t A.


====================================================================

.text
.equ HEX3_0, 0x00103040
.equ HEX7_4, 0x00103050
.global main
main:
movia

r9, HEX3_0

movia

r10, HEX7_4

movia

r4, N

ldw

r5, 0(r4)

movi

r6, 0x3

movi

r7, 0x7

mov

r8, r0

bgt

r8, r6, RESET

addi

r8, r8, 0x1

stwio

r5, 0(r9)

stwio

r0, 0(r10)

slli

r5, r5, 8

movi

r19, 0xbb8

mul

r20, r19, r19

call

DELAY

br

LOOP

LOOP:

RESET:
movia

r4, N

ldw

r5, 0(r4)

CHANGE:
stwio

r0, 0(r9)

stwio

r5, 0(r10)

bgt

r8, r7, main

addi

r8, r8, 0x1

slli

r5, r5, 8
31 | P a g e

C Huy Hong Long

L Thanh

movi

r19, 0xbb8

mul

r20, r19, r19

call

DELAY

br

CHANGE

.data
N:
.byte

0b01110111

====================================================================

Bi 5.e: Chng trnh chp tt k t A c tn s thay i bng SW.


====================================================================
.text
.equ HEX3_0, 0x00103040
.equ SW, 0x00103060
.global main
main:
movia

r9, HEX3_0

movia

r10, SW

ldw

r19, 0(r10)

mul

r20, r19, r19

movia

r4, N

ldw

r5, 0(r4)

stwio

r5, 0(r9)

call

DELAY

stwio

r0, 0(r9)

call

DELAY

br

main

LOOP:

DELAY:
subi

r20, r20, 0x1

bne

r20, r0, DELAY

ret
.data
N:
.byte

0b01110111

.end
32 | P a g e

C Huy Hong Long

L Thanh

====================================================================

Bi 6.a: Chng trnh m t 0 99 khi KEY1 nhn.


====================================================================
.text
.equ HEX3_0, 0x00103040
.equ PUSH, 0x00103070
.global main
main:
movia

r9, HEX3_0

movia

r10, PUSH

movia

r8, SEVEN_SEG_DECODE_TABLE

movi

r4, 0x9

mov

r5, r0

mov

r6, r0

add

r7, r8, r5

ldb

r12, 0(r7)

andi

r12, r12, 0xff

mov

r15, r12

slli

r15, r15, 0x8

add

r7, r8, r6

ldb

r12, 0(r7)

andi

r12, r12, 0xff

or

r15, r15, r12

stwio

r15, 0(r9)

movi

r19, 0xbb8

mul

r20, r19, r19

call

DELAY

LOOP:

CHECK_KEY_1:
ldw

r11, 0(r10)

srli

r11, r11, 0x1

andi

r11, r11, 0x1

beq

r11, r0, CHECK_KEY_1


33 | P a g e

C Huy Hong Long

L Thanh

DON_VI:
addi

r6, r6, 0x1

bgt

r6, r4, CHUC

br

LOOP

mov

r6, r0

addi

r5, r5, 0x1

bgt

r5, r4, RESET

br

LOOP

CHUC:

RESET:
mov

r5, r0

br

LOOP

DELAY:
subi

r20, r20, 0x1

bne

r20, r0, DELAY

ret
.data
SEVEN_SEG_DECODE_TABLE:
.byte 0b00111111, 0b00000110, 0b01011011, 0b01001111
.byte 0b01100110, 0b01101101, 0b01111101, 0b00000111
.byte 0b01111111, 0b01100111, 0b00000000, 0b00000000
.byte 0b00000000, 0b00000000, 0b00000000, 0b00000000
.end

34 | P a g e

C Huy Hong Long

L Thanh

====================================================================

Bi 6.b: Chng trnh m t 99 0 khi KEY2 nhn.


====================================================================
.text
.equ HEX3_0, 0x00103040
.equ PUSH, 0x00103070
.global main
main:
movia

r9, HEX3_0

movia

r10, PUSH

movia

r8, SEVEN_SEG_DECODE_TABLE

movi

r5, 0x9

movi

r6, 0x9

add

r7, r8, r5

ldb

r12, 0(r7)

andi

r12, r12, 0xff

mov

r15, r12

slli

r15, r15, 0x8

add

r7, r8, r6

ldb

r12, 0(r7)

andi

r12, r12, 0xff

or

r15, r15, r12

stwio

r15, 0(r9)

movi

r19, 0xbb8

mul

r20, r19, r19

call

DELAY

LOOP:

CHECK_KEY_2:
ldw

r11, 0(r10)

srli

r11, r11, 0x2

andi

r11, r11, 0x1

beq

r11, r0, CHECK_KEY_1

35 | P a g e

C Huy Hong Long

L Thanh

DON_VI:
subi

r6, r6, 0x1

bge

r6, r0, LOOP

movi

r6, 0x9

subi

r5, r5, 0x1

bge

r5, r0, LOOP

CHUC:

RESET:
movi

r5, 0x9

br

LOOP

DELAY:
subi

r20, r20, 0x1

bne

r20, r0, DELAY

ret
.data
SEVEN_SEG_DECODE_TABLE:
.byte 0b00111111, 0b00000110, 0b01011011, 0b01001111
.byte 0b01100110, 0b01101101, 0b01111101, 0b00000111
.byte 0b01111111, 0b01100111, 0b00000000, 0b00000000
.byte 0b00000000, 0b00000000, 0b00000000, 0b00000000
.end

36 | P a g e

C Huy Hong Long

L Thanh

====================================================================

Bi 6.c: Chng trnh hin th gi tr SW15:0 ra 4 LEDS 7 on khi KEY3 c nhn.


====================================================================
.text
.equ HEX3_0, 0x00103040
.equ SW, 0x00103060
.equ PUSH, 0x00103070
.global main
main:
movia

r9, HEX3_0

movia

r10, SW

movia

r11, PUSH

movia

r15, HEX_SEGMENT

movia

r16, SEVEN_SEG_DECODE_TABLE

CHECK_KEY3:
ldw

r4, 0(r11)

srli

r4, r4, 0x3

andi

r4, r4, 0x1

bne

r4, r0, L0AD_SW_VALUE

stwio

r0, 0(r9)

br

CHECK_KEY3

L0AD_SW_VALUE:
ldw

r12, 0(r10)

andi

r12, r12, 0xffff

movi

r6, 0x4

DECODER:
mov

r14, r12

andi

r14, r14, 0xf

add

r17, r16, r14

ldb

r18, 0(r17)

stb

r18, 0(r15)

addi

r15, r15, 1
37 | P a g e

C Huy Hong Long

L Thanh

srli

r12, r12, 4

subi

r6, r6, 0x1

bgt

r6, r0, DECODER

STORE_SW_VALUE:
movia

r15, HEX_SEGMENT

ldw

r20, 0(r15)

stwio

r20, 0(r9)

movi

r19, 0xbb8

mul

r19, r19, r19

call

DELAY

br

CHECK_KEY3

DELAY:
subi

r19, r19, 0x1

bne

r19, r0, DELAY

ret

.data
SEVEN_SEG_DECODE_TABLE:
.byte 0b00111111, 0b00000110, 0b01011011, 0b01001111
.byte 0b01100110, 0b01101101, 0b01111101, 0b00000111
.byte 0b01111111, 0b01100111, 0b00000000, 0b00000000
.byte 0b00000000, 0b00000000, 0b00000000, 0b00000000
HEX_SEGMENT:
.fill 1, 4, 0
.end

38 | P a g e

C Huy Hong Long

L Thanh

PHN II: CODE C


1. Xy dng chng trnh hin th gi tr N (nhp t SW7:0) ra LEDR7:0 nu N
l:
a. S chn.
#define Slider_switches_0 0x00103060
#define Red_LEDs_0
0x00103020
int main(void)
{
volatile int * slider_switches_ptr = (int *) Slider_switches_0;
volatile int * leds_ptr = (int *) Red_LEDs_0;
while (1)
{
if (((*(slider_switches_ptr) >> 0) & 0x1) == 0)
{
*(leds_ptr) = *(slider_switches_ptr);
}
else
if (((*(slider_switches_ptr) >> 0) & 0x1) == 1)
{
*(leds_ptr) = 0;
}
}
return 0;
}

b. S l.
#define Slider_switches_0 0x00103060
#define Red_LEDs_0
0x00103020
int main(void)
{
volatile int * slider_switches_ptr = (int *) Slider_switches_0;
volatile int * leds_ptr = (int *) Red_LEDs_0;
while (1)
{
if (((*(slider_switches_ptr) >> 0) & 0x1) == 1)
{
*(leds_ptr) = *(slider_switches_ptr);
}
else
if (((*(slider_switches_ptr) >> 0) & 0x1) == 0)
{
*(leds_ptr) = 0;
39 | P a g e

C Huy Hong Long

L Thanh

}
}
return 0;
}

c. S ln hn hoc bng M ( N nhp t SW7:0, M nhp t SW15:8).


#define Slider_switches_0 0x00103060
#define Red_LEDs_0
0x00103020
void main()
{
volatile int * slider_switches_ptr = (int *)
Slider_switches_0;
volatile int * leds_ptr = (int *) Red_LEDs_0;
while(1)
{
int n,m;
n= ((*(slider_switches_ptr) ) & 0xFF);
m= ((*(slider_switches_ptr) >> 8) & 0xFF);
if ( n>=m)
{
*(leds_ptr) = n;
}
else if (n<m)
{
*(leds_ptr) = 0;
}
}
}

d. S nh hn M ( N nhp t SW7:0, M nhp t SW15:8).


#define Slider_switches_0 0x00103060
#define Red_LEDs_0
0x00103020
void main()
{
volatile int * slider_switches_ptr = (int *)
Slider_switches_0;
volatile int * leds_ptr = (int *) Red_LEDs_0;
while(1)
{
int n,m;
n= ((*(slider_switches_ptr) ) & 0xFF);
m= ((*(slider_switches_ptr) >> 8) & 0xFF);

40 | P a g e

C Huy Hong Long

L Thanh

if ( n<m)
{
*(leds_ptr) = n;
}
else if (n>=m)
{
*(leds_ptr) = 0;
}
}
}

e. S trong khong M1, M2 ( M1 < n <M2).


#define Slider_switches_0 0x00103060
#define Red_LEDs_0
0x00103020
void main()
{
volatile int * slider_switches_ptr = (int *)
Slider_switches_0;
volatile int * leds_ptr = (int *) Red_LEDs_0;
while(1)
{
int m1, m2, n;
m1=2;
m2=10;
n= * (slider_switches_ptr);
if ( n>m1 && n<m2)
{
*(leds_ptr) = *(slider_switches_ptr);
}
else
{
*(leds_ptr) = 0;
}
}
}

f. S ngoi khong M1, M2 (n<M1, n>M2).


#define Slider_switches_0 0x00103060
#define Red_LEDs_0
0x00103020
void main()
{
volatile int * slider_switches_ptr = (int *)
Slider_switches_0;
volatile int * leds_ptr = (int *) Red_LEDs_0;
while(1)
{
41 | P a g e

C Huy Hong Long

L Thanh

int m1, m2, n;


m1=2;
m2=10;
n= * (slider_switches_ptr);
if ( n<m1 && n>m2)
{
*(leds_ptr) = *(slider_switches_ptr);
}
else
{
*(leds_ptr) = 0;
}
}
}

g. S chia ht cho 3.
#define Slider_switches_0 0x00103060
#define Red_LEDs_0
0x00103020
int chiahetba( int n)
{
int k= n/3;
k=k*3;
if ( k==n )
{
return 1;
}
else return 0;
}
void main()
{
volatile int * slider_switches_ptr = (int *)
Slider_switches_0;
volatile int * leds_ptr = (int *) Red_LEDs_0;
while (1)
{
int n= * (slider_switches_ptr);
if ( chiahetba(n)==1 )
{
*(leds_ptr) = *(slider_switches_ptr);
}
else
{
*(leds_ptr) = 0;
}
}
}

42 | P a g e

C Huy Hong Long

L Thanh

h. S chia ht cho 4.
#define Slider_switches_0 0x00103060
#define Red_LEDs_0
0x00103020
int chiahetbon( int n)
{
int k= n/4;
k=k*4;
if ( k==n )
{
return 1;
}
else return 0;
}
void main()
{
volatile int * slider_switches_ptr = (int *)
Slider_switches_0;
volatile int * leds_ptr = (int *) Red_LEDs_0;
while (1)
{
int n= * (slider_switches_ptr);
if ( chiahetbon(n)==1 )
{
*(leds_ptr) = *(slider_switches_ptr);
}
else
{
*(leds_ptr) = 0;
}
}
}

i. S chia ht cho 6.
#define Slider_switches_0 0x00103060
#define Red_LEDs_0
0x00103020
int chiahetsau( int n)
{
int k= n/6;
k=k*6;
if ( k==n )
{
return 1;
}
43 | P a g e

C Huy Hong Long

L Thanh

else return 0;
}
void main()
{
volatile int * slider_switches_ptr = (int *)
Slider_switches_0;
volatile int * leds_ptr = (int *) Red_LEDs_0;
while (1)
{
int n= * (slider_switches_ptr);
if ( chiahetsau(n)==1 )
{
*(leds_ptr) = *(slider_switches_ptr);
}
else
{
*(leds_ptr) = 0;
}
}
}

j. S chia ht cho 8.
#define Slider_switches_0 0x00103060
#define Red_LEDs_0
0x00103020
int chiahettam( int n)
{
int k= n/8;
k=k*8;
if ( k==n )
{
return 1;
}
else return 0;
}
void main()
{
volatile int * slider_switches_ptr = (int *)
Slider_switches_0;
volatile int * leds_ptr = (int *) Red_LEDs_0;
while (1)
{
int n= * (slider_switches_ptr);
if ( chiahettam(n)==1 )
{
*(leds_ptr) = *(slider_switches_ptr);
}

44 | P a g e

C Huy Hong Long

L Thanh

else
{
*(leds_ptr) = 0;
}
}
}

k. S nguyn t.
#define Slider_switches_0 0x00103060
#define Red_LEDs_0
0x00103020
int checknt( int n)
{
if (n<=0)
{
return 0;
}
else if ( n==1)
{
return 1;
}
else if (n==2)
{
return 1;
}
else
{
int i;
for ( i=2; i<=n/2; i++)
{
if ( n%i==0)
{
return 0;
break;
}
}
return 1;
}
}
void main()
{
volatile int * slider_switches_ptr = (int *)
Slider_switches_0;
volatile int * leds_ptr = (int *) Red_LEDs_0;
while (1)
{
int n= * (slider_switches_ptr);
45 | P a g e

C Huy Hong Long

L Thanh

if ( checknt(n)==1 )
{
*(leds_ptr) = *(slider_switches_ptr);
}
else
{
*(leds_ptr) = 0;
}
}
}
l. S chnh phng.
#define Slider_switches_0 0x00103060
#define Red_LEDs_0
0x00103020
int chinhphuong(int n)
{
int i;
if (n==0)
{
return 1;
}
else
{
for (i=1; i<=n/2; i++)
{
if ( i*i==n)
{
return 1;
break;
}
}
return 0;
}
}
void main()
{
volatile int * slider_switches_ptr = (int *)
Slider_switches_0;
volatile int * leds_ptr = (int *) Red_LEDs_0;
while (1)
{
int n= * (slider_switches_ptr);
if ( chinhphuong(n)==1 )
{
*(leds_ptr) = *(slider_switches_ptr);
}
46 | P a g e

C Huy Hong Long

L Thanh

else
{
*(leds_ptr) = 0;
}
}
}

2. Xy dng chng trnh:


a. Tnh giai tha ca N vi N nhp t SW7:0 v hin th kt qu ra
LED15:0.
#define Slider_switches_0 0x00103060
#define Red_LEDs_0
0x00103020
int giaithua(int n)
{
if ( n==0 )
{
return 1;
}
else
{
return n*giaithua(n-1);
}
}
void main()
{
volatile int * slider_switches_ptr = (int *)
Slider_switches_0;
volatile int * leds_ptr = (int *) Red_LEDs_0;
while (1)
{
int n;
n= ((*(slider_switches_ptr)) & 0xFF);
* (leds_ptr) = giaithua(n);
}
}

b. Tnh NN vi N nhp t SW3:0 v hin th kt qu ra LED15:0.


#define Slider_switches_0 0x00103060
#define Red_LEDs_0
0x00103020
int power( int n, int k)
{
if (k==0)
{
47 | P a g e

C Huy Hong Long

L Thanh

return 1;
}
else
{
int i,s;
s=1;
for (i=1; i<=k; i++)
{
s=s*n;
}
return s;
}
}
void main()
{
volatile int * slider_switches_ptr = (int *)
Slider_switches_0;
volatile int * leds_ptr = (int *) Red_LEDs_0;
while (1)
{
int n;
n= ((*(slider_switches_ptr)) & 0x7);
* (leds_ptr) = power(n,n);
}
}

3. Xy dng chng trnh hin th kt qu chui s sau vi N nhp t SW7:0 ra


LED15:0:
a. Chui s Fibonacci.
#define Slider_switches_0 0x00103060
#define Red_LEDs_0
0x00103020
int fibo( int n)
{
if (n==0)
{
return 0;
}
else if (n==1)
{
return 1;
}
else
{
return fibo(n-1) + fibo (n-2);
}
48 | P a g e

C Huy Hong Long

L Thanh

void main()
{
volatile int * slider_switches_ptr = (int *)
Slider_switches_0;
volatile int * leds_ptr = (int *) Red_LEDs_0;
while (1)
{
int n,i;
n= ((*(slider_switches_ptr)) & 0xFF);
int s=0;
for (i=0; i<=n; i++)
{
s=s+fibo(i);
}
* (leds_ptr) = s;
}
}
b. F(N) = 1 + 2 + 3 + + N.
#define Slider_switches_0 0x00103060
#define Red_LEDs_0
0x00103020
int tong( int n)
{
if (n==0)
{
return 0;
}
else if (n==1)
{
return 1;
}
else
{
return n + tong(n-1);
}
}
void main()
{
volatile int * slider_switches_ptr = (int *)
Slider_switches_0;
volatile int * leds_ptr = (int *) Red_LEDs_0;
while (1)
49 | P a g e

C Huy Hong Long

L Thanh

{
int n;
n= ((*(slider_switches_ptr)) & 0xFF);
* (leds_ptr) = tong(n);
}
}

c. F(N) = 1 + 3 + 5 + + (2N+1).
#define Slider_switches_0 0x00103060
#define Red_LEDs_0
0x00103020
int tongle( int n)
{
if (n==0)
{
return 1;
}
else
{
return 2*n+1 + tongle(n-1);
}
}
void main()
{
volatile int * slider_switches_ptr = (int *)
Slider_switches_0;
volatile int * leds_ptr = (int *) Red_LEDs_0;
while (1)
{
int n;
n= ((*(slider_switches_ptr)) & 0xFF);
* (leds_ptr) = tongle(n);
}
}

d. F(N) = 2 + 4 + 6 + + 2N.
#define Slider_switches_0 0x00103060
#define Red_LEDs_0
0x00103020
int tongchan( int n)
{
if (n==0)
{
return 0;
}

50 | P a g e

C Huy Hong Long

L Thanh

else
{
return 2*n + tongchan(n-1);
}
}
void main()
{
volatile int * slider_switches_ptr = (int *)
Slider_switches_0;
volatile int * leds_ptr = (int *) Red_LEDs_0;
while (1)
{
int n;
n= ((*(slider_switches_ptr)) & 0xFF);
* (leds_ptr) = tongchan(n);
}
}

e. F(N) = 22 + 42 + 62 + + (2N)2
#define Slider_switches_0 0x00103060
#define Red_LEDs_0
0x00103020
int power(int n, int i)
{
int j,s;
s=1;
if (i==0)
{
return 1;
}
else
{
for ( j=1; j<=i; j++)
{
s=s*n;
}
return s;
}
}
int tongchan( int n)
{
if (n==0)
{
return 0;
}
51 | P a g e

C Huy Hong Long

L Thanh

else
{
return power(2*n,2) + tongchan(n-1);
}
}
void main()
{
volatile int * slider_switches_ptr = (int *)
Slider_switches_0;
volatile int * leds_ptr = (int *) Red_LEDs_0;
while (1)
{
int n;
n= ((*(slider_switches_ptr)) & 0xFF);
* (leds_ptr) = tongchan(n);
}
}

f. F(N) = 12 + 32 +52 + + (2N+1)2


#define Slider_switches_0 0x00103060
#define Red_LEDs_0
0x00103020
int power(int n, int i)
{
int j,s;
s=1;
if (i==0)
{
return 1;
}
else
{
for ( j=1; j<=i; j++)
{
s=s*n;
}
return s;
}
}
int tongle( int n)
{
if (n==0)
{
return 1;
}
52 | P a g e

C Huy Hong Long

L Thanh

else
{
return power(2*n+1,2) + tongle(n-1);
}
}
void main()
{
volatile int * slider_switches_ptr = (int *)
Slider_switches_0;
volatile int * leds_ptr = (int *) Red_LEDs_0;
while (1)
{
int n;
n= ((*(slider_switches_ptr)) & 0xFF);
* (leds_ptr) = tongle(n);
}
}

4. Xy dng chng trnh:


a. Dch leds t phi sang tri.
#define Red_LEDs_0

0x00103020

void delay( int n)


{
int i,j;
for ( i=0; i<n; i++)
{
for ( j=0; j<n; j++)
{
}
}
}
int power(int n, int i)
{
int j,s;
s=1;
if (i==0)
{
return 1;
}
else
{
for ( j=1; j<=i; j++)
{
s=s*n;
53 | P a g e

C Huy Hong Long

L Thanh

}
return s;
}
}
int main(void)
{
volatile int * leds_ptr = (int *) Red_LEDs_0;
while (1)
{
int i;
for (i=0; i<18; i++)
{
*(leds_ptr) = power(2,i);
delay(2000);
*(leds_ptr) =0;
delay(2000);
}
}
return 0;
}

b. Dch leds t tri sang phi.


#define Red_LEDs_0

0x00103020

void delay( int n)


{
int i,j;
for ( i=0; i<n; i++)
{
for ( j=0; j<n; j++)
{
}
}
}
int power(int n, int i)
{
int j,s;
s=1;
if (i==0)
{
return 1;
}
else
{
for ( j=1; j<=i; j++)
54 | P a g e

C Huy Hong Long

L Thanh

{
s=s*n;
}
return s;
}
}
int main(void)
{
volatile int * leds_ptr = (int *) Red_LEDs_0;
while (1)
{
int i;
for (i=17; i>=0; i--)
{
*(leds_ptr) = power(2,i);
delay(2000);
*(leds_ptr) =0;
delay(2000);
}
}
return 0;
}

c. Dch leds xanh t phi sang tri.


#define Green_LEDs_0

0x00103030

void delay( int n)


{
int i,j;
for ( i=0; i<n; i++)
{
for ( j=0; j<n; j++)
{
}
}
}
int power(int n, int i)
{
int j,s;
s=1;
if (i==0)
{
return 1;
}

55 | P a g e

C Huy Hong Long

L Thanh

else
{
for ( j=1; j<=i; j++)
{
s=s*n;
}
return s;
}
}
int main(void)
{
volatile int * leds_ptr = (int *) Green_LEDs_0;
while (1)
{
int i;
for (i=0; i<8; i++)
{
*(leds_ptr) = power(2,i);
delay(2000);
*(leds_ptr) =0;
delay(2000);
}
}
return 0;
}

d. Dch leds xanh t tri sang phi.


#define Green_LEDs_0

0x00103030

void delay( int n)


{
int i,j;
for ( i=0; i<n; i++)
{
for ( j=0; j<n; j++)
{
}
}
}
int power(int n, int i)
{
int j,s;
s=1;

56 | P a g e

C Huy Hong Long

L Thanh

if (i==0)
{
return 1;
}
else
{
for ( j=1; j<=i; j++)
{
s=s*n;
}
return s;
}
}
int main(void)
{
volatile int * leds_ptr = (int *) Green_LEDs_0;
while (1)
{
int i;
for (i=7; i>=0; i--)
{
*(leds_ptr) = power(2,i);
delay(2000);
*(leds_ptr) =0;
delay(2000);
}
}
return 0;
}

e. Dch leds t phi sang tri khi SWx = 0, t tri sang phi khi SWx
= 1 (x cho trc).
#define Red_LEDs_0
0x00103020
#define Slider_switches_0 0x00103060
void delay( int n)
{
int i,j;
for ( i=0; i<n; i++)
{
for ( j=0; j<n; j++)
{
}
}
}

57 | P a g e

C Huy Hong Long

L Thanh

int power(int n, int i)


{
int j,s;
s=1;
if (i==0)
{
return 1;
}
else
{
for ( j=1; j<=i; j++)
{
s=s*n;
}
return s;
}
}
int main(void)
{
volatile int * leds_ptr = (int *) Red_LEDs_0;
volatile int * slider_switches_ptr = (int *) Slider_switches_0;
while (1)
{
int i;
if (((*(slider_switches_ptr) >> 0) & 0x1) == 0)
{
for (i=0; i<18; i++)
{
*(leds_ptr) = power(2,i);
delay(2000);
*(leds_ptr) =0;
delay(2000);
}
}
else
{
for (i=7; i>=0; i--)
{
*(leds_ptr) = power(2,i);
delay(2000);
*(leds_ptr) =0;
delay(2000);
}
}
}
return 0;
}
58 | P a g e

C Huy Hong Long

L Thanh

f. Dch leds t phi sang tri bt u t LEDG0 LEDG7 LEDR0


LEDR17 LEDG0.
#define Red_LEDs_0
#define Green_LEDs_0

0x00103020
0x00103030

void delay( int n)


{
int i,j;
for ( i=0; i<n; i++)
{
for ( j=0; j<n; j++)
{
}
}
}
int power(int n, int i)
{
int j,s;
s=1;
if (i==0)
{
return 1;
}
else
{
for ( j=1; j<=i; j++)
{
s=s*n;
}
return s;
}
}
int main(void)
{
volatile int * rleds_ptr = (int *) Red_LEDs_0;
volatile int * gleds_ptr = (int *) Green_LEDs_0;
while (1)
{
int i;
for (i=0; i<7; i++)
{
*(gleds_ptr) = power(2,i);
delay(2000);
*(gleds_ptr) =0;
59 | P a g e

C Huy Hong Long

L Thanh

delay(2000);
}
*(gleds_ptr) =0;
for (i=0; i<18; i++)
{
*(rleds_ptr) = power(2,i);
delay(2000);
*(rleds_ptr) =0;
delay(2000);
}
*(rleds_ptr) =0;
}
return 0;
}

g. LEDR0 chp tt vi tn s c iu chnh t SW1:0.


#define Red_LEDs_0
0x00103020
#define Slider_switches_0 0x00103060
void delay( int n)
{
int i,j;
for ( i=0; i<n; i++)
{
for ( j=0; j<n; j++)
{
}
}
}
int power(int n, int i)
{
int j,s;
s=1;
if (i==0)
{
return 1;
}
else
{
for ( j=1; j<=i; j++)
{
s=s*n;
}
return s;
}
}
60 | P a g e

C Huy Hong Long

L Thanh

int main(void)
{
volatile int * leds_ptr = (int *) Red_LEDs_0;
volatile int * slider_switches_ptr = (int *) Slider_switches_0;
while (1)
{
int n;
n=((*(slider_switches_ptr)) & 0x3);
*(leds_ptr)=0x1;
delay(1000*n);
*(leds_ptr)=0;
delay(1000*n);
}
return 0;
}

h. Leds v tr l chp tt khi SWx = 1, v tr chn chp tt khi


SWx = 0.
#define Red_LEDs_0
0x00103020
#define Slider_switches_0 0x00103060
void delay( int n)
{
int i,j;
for ( i=0; i<n; i++)
{
for ( j=0; j<n; j++)
{
}
}
}
int power(int n, int i)
{
int j,s;
s=1;
if (i==0)
{
return 1;
}
else
{
for ( j=1; j<=i; j++)
{
s=s*n;
}
61 | P a g e

C Huy Hong Long

L Thanh

return s;
}
}
int main(void)
{
volatile int * leds_ptr = (int *) Red_LEDs_0;
volatile int * slider_switches_ptr = (int *) Slider_switches_0;
while (1)
{
if (((*(slider_switches_ptr) >> 0) & 0x1) == 0)
{
*(leds_ptr)=0x15555;
delay(2000);
*(leds_ptr)=0;
delay(2000);
}
else
{
*(leds_ptr)=0x2AAAA;
delay(2000);
*(leds_ptr)=0;
delay(2000);
}
}
return 0;
}

5. Xy dng chng trnh hin th


a. Ngy thng nm sinh theo kiu DD/MM/YYYY ra leds 7 on.
#define HEX3_HEX0_BASE
#define HEX7_HEX4_BASE

0x00103040
0x00103050

char hex3_segments[] = { 0x06, 0x67, 0x67, 0x06, 0, 0, 0, 0 };


char hex7_segments[] = { 0x66, 0x3F, 0x66, 0x3F, 0, 0, 0, 0 };
void main(void)
{
volatile int * HEX3_HEX0_ptr = (int *) HEX3_HEX0_BASE;
volatile int * HEX7_HEX4_ptr = (int *) HEX7_HEX4_BASE;
while(1)
{
*(HEX3_HEX0_ptr) = *(int *) hex3_segments;
*(HEX7_HEX4_ptr) = *(int *) hex7_segments;
}
}
62 | P a g e

C Huy Hong Long

L Thanh

b. Chui [HELLO]
#define HEX3_HEX0_BASE
#define HEX7_HEX4_BASE

0x00103040
0x00103050

char hex3_segments[] = { 0x3F, 0x38, 0x38, 0x79, 0, 0, 0, 0 };


char hex7_segments[] = { 0x76, 0, 0, 0, 0, 0, 0, 0 };
void main(void)
{
volatile int * HEX3_HEX0_ptr = (int *) HEX3_HEX0_BASE;
volatile int * HEX7_HEX4_ptr = (int *) HEX7_HEX4_BASE;
while(1)
{
*(HEX3_HEX0_ptr) = *(int *) hex3_segments;
*(HEX7_HEX4_ptr) = *(int *) hex7_segments;
}
}

c. Mch m t 0 9 ra led 7 on HEX0.

#define HEX3_HEX0_BASE

0x00103040

char hex3_segments[] = { 0, 0, 0, 0, 0, 0, 0, 0 };

char seven_seg_decode_table[] = {
0x3F, 0x06, 0x5B, 0x4F,
0x66, 0x6D, 0x7D, 0x07,
0x7F, 0x67, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00 };

void delay(int n)
{
int i,j;
for ( i=0; i<=n; i++)
{
for ( j=0; j<=n; j++)
{
}
}
}

63 | P a g e

C Huy Hong Long

L Thanh

void main(void)
{
volatile int * HEX3_HEX0_ptr = (int *) HEX3_HEX0_BASE;
while(1)
{
int i;
for ( i=0; i<10; i++)
{
hex3_segments[0]= seven_seg_decode_table[i];
*(HEX3_HEX0_ptr) = *(int *) hex3_segments;
delay(1000);
}
}
}

d. Dch k t L cho trc t phi sang tri.


#define HEX3_HEX0_BASE
#define HEX7_HEX4_BASE

0x00103040
0x00103050

char hex_segments[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
void delay(int n)
{
int i,j;
for ( i=0; i<=n; i++)
{
for ( j=0; j<=n; j++)
{
}
}
}
void main(void)
{
volatile int * HEX3_HEX0_ptr = (int *) HEX3_HEX0_BASE;
volatile int * HEX7_HEX4_ptr = (int *) HEX7_HEX4_BASE;
while(1)
{
int i;
for ( i=0; i<=3; i++)
{
hex_segments[i] = 0x38;
* HEX3_HEX0_ptr = * (int *) hex_segments;
delay(1500);
hex_segments[i] = 0;
64 | P a g e

C Huy Hong Long

L Thanh

* HEX3_HEX0_ptr =
}
for ( i=0; i<=3; i++)
{
hex_segments[i] =
* HEX7_HEX4_ptr =
delay(1500);
hex_segments[i] =
* HEX7_HEX4_ptr =
}

* (int *) hex_segments;

0x38;
* (int *) hex_segments;
0;
* (int *) hex_segments;

}
}

e. K t L cho trc chp tt vi tn s thay i bng Switch.


#define HEX3_HEX0_BASE
#define Slider_switches_0

0x00103040
0x00103060

char hex_segments[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
void delay(int n)
{
int i,j;
for ( i=0; i<=n; i++)
{
for ( j=0; j<=n; j++)
{
}
}
}
void main(void)
{
volatile int * HEX3_HEX0_ptr = (int *) HEX3_HEX0_BASE;
volatile int * slider_switches_ptr = (int *)Slider_switches_0;
while(1)
{
int n = * (slider_switches_ptr);
hex_segments[0]= 0x38;
*(HEX3_HEX0_ptr) = *(int *) hex_segments;
delay(1000*n);
hex_segments[0]= 0;
*(HEX3_HEX0_ptr) = *(int *) hex_segments;
delay(1000*n);
}
}

65 | P a g e

You might also like