From 3dc23a631f211cce3cdbcfee0da2923fc4fb36e4 Mon Sep 17 00:00:00 2001 From: TiagoRG Date: Sun, 7 Apr 2024 19:48:46 +0100 Subject: [PATCH] =?UTF-8?q?[AC2]=20Exerc=C3=ADcios=20adicionais=20(ex1-4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: TiagoRG --- .../ac2/extras_aula01-06/AC2_exerc_P-1_6.pdf | Bin 0 -> 63714 bytes 2ano/2semestre/ac2/extras_aula01-06/ex01.c | 19 ++++ 2ano/2semestre/ac2/extras_aula01-06/ex01.s | 66 ++++++++++++ 2ano/2semestre/ac2/extras_aula01-06/ex02.c | 25 +++++ 2ano/2semestre/ac2/extras_aula01-06/ex02.s | 102 ++++++++++++++++++ 2ano/2semestre/ac2/extras_aula01-06/ex04.c | 69 ++++++++++++ 6 files changed, 281 insertions(+) create mode 100644 2ano/2semestre/ac2/extras_aula01-06/AC2_exerc_P-1_6.pdf create mode 100644 2ano/2semestre/ac2/extras_aula01-06/ex01.c create mode 100644 2ano/2semestre/ac2/extras_aula01-06/ex01.s create mode 100644 2ano/2semestre/ac2/extras_aula01-06/ex02.c create mode 100644 2ano/2semestre/ac2/extras_aula01-06/ex02.s create mode 100644 2ano/2semestre/ac2/extras_aula01-06/ex04.c diff --git a/2ano/2semestre/ac2/extras_aula01-06/AC2_exerc_P-1_6.pdf b/2ano/2semestre/ac2/extras_aula01-06/AC2_exerc_P-1_6.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e608304ca1977b05b2080f5463ce0cfe92de3551 GIT binary patch literal 63714 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 Ds~XwW literal 0 HcmV?d00001 diff --git a/2ano/2semestre/ac2/extras_aula01-06/ex01.c b/2ano/2semestre/ac2/extras_aula01-06/ex01.c new file mode 100644 index 0000000..0f7380c --- /dev/null +++ b/2ano/2semestre/ac2/extras_aula01-06/ex01.c @@ -0,0 +1,19 @@ +#include + +int reverse_byte(int byte) { + byte = (byte & 0xF0) >> 4 | (byte & 0x0F) << 4; + byte = (byte & 0xCC) >> 2 | (byte & 0x33) << 2; + byte = (byte & 0xAA) >> 1 | (byte & 0x55) << 1; + return byte; +} + +int main() { + TRISB |= 0x000F; + TRISE &= 0xFF00; + + while (1) { + int sw = PORTB & 0x000F; + int reverse = reverse_byte(sw); + LATE = (LATE & 0xFF00) | sw | reverse; + } +} diff --git a/2ano/2semestre/ac2/extras_aula01-06/ex01.s b/2ano/2semestre/ac2/extras_aula01-06/ex01.s new file mode 100644 index 0000000..cda091f --- /dev/null +++ b/2ano/2semestre/ac2/extras_aula01-06/ex01.s @@ -0,0 +1,66 @@ + .equ ADDR_BASE, 0xBF88 + .equ TRISB, 0x6040 + .equ PORTB, 0x6050 + .equ TRISE, 0x6100 + .equ LATE, 0x6120 + + .data + .text + .globl main + +main: + lui $t7, ADDR_BASE + + lw $t0, TRISB($t7) + ori $t0, $t0, 0x000F + sw $t0, TRISB($t7) + + lw $t0, TRISE($t7) + andi $t0, $t0, 0xFF00 + sw $t0, TRISE($t7) + +loop: + lw $t0, PORTB($t7) + andi $t0, $t0, 0x000F + + move $a0, $t0 + addi $sp, $sp, -8 + sw $ra, 0($sp) + sw $t0, 4($sp) + jal reverse_byte + lw $ra, 0($sp) + lw $t0, 4($sp) + addi $sp, $sp, 8 + or $t0, $t0, $v0 + + lw $t1, LATE($t7) + andi $t1, $t1, 0xFF00 + or $t1, $t1, $t0 + sw $t1, LATE($t7) + + j loop + + jr $ra + +reverse_byte: + move $v0, $a0 + + andi $t0, $v0, 0xF0 + srl $t0, $t0, 4 + andi $t1, $v0, 0x0F + sll $t1, $t1, 4 + or $v0, $t0, $t1 + + andi $t0, $v0, 0xCC + srl $t0, $t0, 2 + andi $t1, $v0, 0x33 + sll $t1, $t1, 2 + or $v0, $t0, $t1 + + andi $t0, $v0, 0xAA + srl $t0, $t0, 1 + andi $t1, $v0, 0x55 + sll $t1, $t1, 1 + or $v0, $t0, $t1 + + jr $ra diff --git a/2ano/2semestre/ac2/extras_aula01-06/ex02.c b/2ano/2semestre/ac2/extras_aula01-06/ex02.c new file mode 100644 index 0000000..3e122f7 --- /dev/null +++ b/2ano/2semestre/ac2/extras_aula01-06/ex02.c @@ -0,0 +1,25 @@ +#include + +void delay(unsigned int ms) { + resetCoreTimer(); + while (readCoreTimer() < ms * 20000); +} + +int main() { + TRISE &= 0xFFF0; + LATE &= 0xFFF0; + + while (1) { + char key = inkey(); + + if ('0' <= key && key <= '3') { + LATE = (LATE & 0xFFF0) | 0x0001 << (key - '0'); + } else if (key != '\0') { + LATE = (LATE & 0xFFF0) | 0x000F; + delay(1000); + LATE &= 0xFFF0; + } + } + + return 0; +} diff --git a/2ano/2semestre/ac2/extras_aula01-06/ex02.s b/2ano/2semestre/ac2/extras_aula01-06/ex02.s new file mode 100644 index 0000000..5a3cd88 --- /dev/null +++ b/2ano/2semestre/ac2/extras_aula01-06/ex02.s @@ -0,0 +1,102 @@ + .equ INKEY, 1 + .equ GETCHAR, 2 + .equ PUTCHAR, 3 + .equ READ_INT, 4 + .equ READ_INT10, 5 + .equ PRINT_INT, 6 + .equ PRINT_INT10, 7 + .equ PRINT_STR, 8 + .equ READ_STR, 9 + .equ EXIT, 10 + .equ READ_CORE_TIMER, 11 + .equ RESET_CORE_TIMER, 12 + + .equ ADDR_BASE, 0xBF88 + .equ TRISE, 0x6100 + .equ LATE, 0x6120 + + .data + .text + .globl main + +main: + lui $t7, ADDR_BASE + + lw $t0, TRISE($t7) + andi $t0, $t0, 0xFFF0 + sw $t0, TRISE($t7) + + lw $t0, LATE($t7) + andi $t0, $t0, 0xFFF0 + sw $t0, LATE($t7) + +loop: + li $v0, INKEY + syscall + move $t0, $v0 + beq $t0, 0, loop + + beq $t0, '0', sw_0 + beq $t0, '1', sw_1 + beq $t0, '2', sw_2 + beq $t0, '3', sw_3 + + lw $t0, LATE($t7) + andi $t0, $t0, 0xFFF0 + ori $t0, $t0, 0x000F + sw $t0, LATE($t7) + + li $a0, 1000 + move $s0, $ra + jal delay + move $ra, $s0 + + lw $t0, LATE($t7) + andi $t0, $t0, 0xFFF0 + sw $t0, LATE($t7) + + j end + +sw_0: + lw $t0, LATE($t7) + andi $t0, $t0, 0xFFF0 + ori $t0, $t0, 0x0001 + sw $t0, LATE($t7) + j end + +sw_1: + lw $t0, LATE($t7) + andi $t0, $t0, 0xFFF0 + ori $t0, $t0, 0x0002 + sw $t0, LATE($t7) + j end + +sw_2: + lw $t0, LATE($t7) + andi $t0, $t0, 0xFFF0 + ori $t0, $t0, 0x0004 + sw $t0, LATE($t7) + j end + +sw_3: + lw $t0, LATE($t7) + andi $t0, $t0, 0xFFF0 + ori $t0, $t0, 0x0008 + sw $t0, LATE($t7) + j end + +end: + j loop + jr $ra + +delay: + mul $t0, $a0, 20000 + li $v0, RESET_CORE_TIMER + syscall + +delay_loop: + li $v0, READ_CORE_TIMER + syscall + move $t1, $v0 + blt $t1, $t0, delay_loop + jr $ra diff --git a/2ano/2semestre/ac2/extras_aula01-06/ex04.c b/2ano/2semestre/ac2/extras_aula01-06/ex04.c new file mode 100644 index 0000000..8ce9c59 --- /dev/null +++ b/2ano/2semestre/ac2/extras_aula01-06/ex04.c @@ -0,0 +1,69 @@ +#include + +const unsigned int dis7Scodes[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, + 0xFD, 0x07, 0x7F, 0x6F, 0x77, 0xFC, + 0x39, 0x5E, 0xF9, 0xF1}; + + +void delay(unsigned int ms) { + resetCoreTimer(); + while (readCoreTimer() < ms * 20000); +} + +typedef enum { HIGH, LOW } flag; + +void clearDisplays() { + LATD = (LATD & 0xFF9F) | 0x0040; + LATB &= 0x80FF; + LATD = (LATD & 0xFF9F) | 0x0020; + LATB &= 0x80FF; +} + +void send2displays(unsigned char value) { + static flag f = LOW; + char high = dis7Scodes[value >> 4]; + char low = dis7Scodes[value & 0x0F]; + + if (f == HIGH) { + LATD = (LATD & 0xFF9F) | 0x0040; + LATB = (LATB & 0x80FF) | high << 8; + f = LOW; + } else { + LATD = (LATD & 0xFF9F) | 0x0020; + LATB = (LATB & 0x80FF) | low << 8; + f = HIGH; + } +} + +int main() { + TRISE &= 0xFFF0; + TRISD &= 0xFF9F; + TRISB &= 0x80FF; + LATE &= 0xFFF0; + clearDisplays(); + + char lastKey; + while (1) { + char key = inkey(); + + if ('0' <= key && key <= '3') { + LATE = (LATE & 0xFFF0) | 0x0001 << (key - '0'); + lastKey = key; + } else if (key != '\0') { + LATE = (LATE & 0xFFF0) | 0x000F; + resetCoreTimer(); + while (readCoreTimer() < 20000000) + send2displays(0xFF); + LATE &= 0xFFF0; + clearDisplays(); + lastKey = 0xFF; + } + + if ('0' <= lastKey && lastKey <= '3') { + send2displays(lastKey - '0'); + delay(10); + } + } + + return 0; +}