Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
/* * Ejercicio resuelto en clase de Computación II * Fecha: 20/05/20 * by Alejo S. Giles * Mapeo de contador: Mapear en salidas, los 4 (cuatro) bits menos significativos (nibble bajo) de una variable contador. El contador deberá incrementarse automáticamente cada un segundo, y reiniciase con cada flanco ascendente en la entrada. * * https://pastebin.com/9pRMtSJh */ #include "config.h" //BLINK #define CONFIGURAR_LED_TEST TRISD1=0 #define ENCENDER_LED_TEST LD1=1 #define APAGAR_LED_TEST LD1=0 //Para interactuar con las SALIDAS, utilizar: #define CONFIGURAR_SALIDAS TRISB=0 #define ACTIVAR_SALIDA0 LB0=1 #define DESACTIVAR_SALIDA0 LB0=0 #define ACTIVAR_SALIDA1 LB1=1 #define DESACTIVAR_SALIDA1 LB1=0 #define ACTIVAR_SALIDA2 LB2=1 #define DESACTIVAR_SALIDA2 LB2=0 #define ACTIVAR_SALIDA3 LB3=1 #define DESACTIVAR_SALIDA3 LB3=0 //Para interactuar con la ENTRADA, utilizar: #define CONFIGURAR_ENTRADA TRISA0=1 #define ENTRADA_ACTIVADA RA0 void MapeoDeContador(void) { static unsigned char contador = 0; //0b0000 0000 0000 0000 //0x0000 static unsigned long centiseg_ant = 0; static bit entrada_activada_ant=0; //Boton de reset if(ENTRADA_ACTIVADA != entrada_activada_ant) { entrada_activada_ant= ENTRADA_ACTIVADA; //Si detectó un flanco ascendente if(ENTRADA_ACTIVADA) contador=0; } //Incremento del contador if (centiseg - centiseg_ant < 3) return; centiseg_ant = centiseg; contador++; //Queremos copiar los cuatro bits menos significativos del contador, en PORTB //Mapeo del nibble bajo (4 bits menos significativos) PORTB &= 0b11110000; // "Limpiamos" los 4 bits menos significativos de PORTB PORTB |= contador & 0x0F; //Copiamos los 4 bits menos significatovos de contador en PORTB } void Blink(void) { static unsigned long centiseg_ant=0; static bit led=0; if((centiseg - centiseg_ant) < 5) return; centiseg_ant=centiseg; led=!led; if(led) ENCENDER_LED_TEST; else APAGAR_LED_TEST; } void main(void) { setup(); CONFIGURAR_SALIDAS; CONFIGURAR_ENTRADA; CONFIGURAR_LED_TEST; APAGAR_LED_TEST; while (1) { Blink(); MapeoDeContador(); } }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)