skip to main |
skip to sidebar
Proyectos electrónicos
Proyectos electrónicos
lunes, 7 de marzo de 2011 1:29 a. m.
Publicado por Earl Orlando
"La lista de expresiones es una serie de uno o más valores de byte (cada uno de los cuales puede ser una expresión) separadas por comas"
ORG 0010h
TABLA: DB 54h
DB 3Ah
DB F8h
Código en lenguaje ensamblador (asm)
ORG 00H
MOV DPTR, #NOMBRE
MOV P1, #0FFH
MOV R0, #00H
INICIO:
MOV A, R0
MOVC A, @A+DPTR
CPL A
MOV P1, A
ACALL TIME
INC R0
SJMP INICIO
NOMBRE:
DB 79H;E
DB 77H;A
DB 50H;R
DB 38H;L
DB 00H;
DB 3FH;O
DB 50H;R
DB 38H;L
DB 77H;A
DB 54H;N
DB 5EH;D
DB 3FH;O
DB 00H;
DB 50H;R
DB 77H;A
DB 4FH;M
DB 06H;I
DB 50H;R
DB 79H;E
DB 5BH;Z
DB 00H;
DB 6DH;S
DB 77H;A
DB 54H;N
DB 39H;C
DB 76H;H
DB 79H;E
DB 5BH;Z
TIME: MOV R2, #14H
DEC1: MOV R3, #62H
DEC2: MOV R4, #05H
DEC3: DJNZ R4, DEC3
DJNZ R3, DEC2
DJNZ R2, DEC1
RET
END
Arreglos unidimensionales y multidimensionales
Los arreglos son una colección de variables del mismo tipo que se referencian utilizando un nombre común. Un arreglo consta de posiciones de memoria contigua. La dirección más baja corresponde al primer elemento y la más alta al último. Un arreglo puede tener una o varias dimensiones. Para acceder a un elemento en particular de un arreglo se usa un índice.
Formato para declarar un arreglo unidimensional es:
ipo nombre_arr [ tamaño ]
Por ejemplo, para declarar un arreglo de enteros llamado listanum con diez elementos se hace de la siguiente forma:
int listanum[10];
En C, todos los arreglos usan cero como índice para el primer elemento. Por tanto, el ejemplo anterior declara un arreglo de enteros con diez elementos desde listanum[0] hasta listanum[9].
La forma como pueden ser accesados los elementos de un arreglo, es de la siguiente forma:
listanum[2] = 15; /* Asigna 15 al 3er elemento del arreglo listanum*/
num = listanum[2]; /* Asigna el contenido del 3er elemento a la variable num */
El lenguaje C no realiza comprobación de contornos en los arreglos. En el caso de que sobrepase el final durante una operación de asignación, entonces se asignarán valores a otra variable o a un trozo del código, esto es, si se dimensiona un arreglo de tamaño N, se puede referenciar el arreglo por encima de N sin provocar ningún mensaje de error en tiempo de compilación o ejecución, incluso aunque probablemente se provoque el fallo del programa. Como programador se es responsable de asegurar que todos los arreglos sean lo suficientemente grandes para guardar lo que pondrá en ellos el programa.
Permite arreglos con más de una dimensión, el formato general es:
tipo nombre_arr [ tam1 ][ tam2 ] ... [ tamN];
Por ejemplo un arreglo de enteros bidimensionales se escribirá como:
int tabladenums[50][50];
Observar que para declarar cada dimensión lleva sus propios paréntesis cuadrados.
Para acceder los elementos se procede de forma similar al ejemplo del arreglo unidimensional, esto es,
tabladenums[2][3] = 15; /* Asigna 15 al elemento de la 3ª fila y la 4ª columna*/
num = tabladenums[25][16];
A continuación se muestra un ejemplo que asigna al primer elemento de un arreglo bidimensional cero, al siguiente 1, y así sucesivamente.
main()
{
int t,i,num[3][4];
for(t=0; t<3;>
for(i=0; i<4;>
num[t][i]=(t*4)+i*1;
for(t=0; t<3;>
{
for(i=0; i<4;>
printf("num[%d][%d]=%d ", t,i,num[t][i]);
printf("\n");
}
}
En C se permite la inicialización de arreglos, debiendo seguir el siguiente formato:
tipo nombre_arr[ tam1 ][ tam2 ] ... [ tamN] = {lista-valores};
Por ejemplo:
int i[10] = {1,2,3,4,5,6,7,8,9,10};
int num[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
Código en lenguaje C
#include
unsigned char nombre[]={0x79, 0x77, 0x50, 0x38, 0x00, 0x3F, 0x50, 0x38, 0x77, 0x54, 0x5E, 0x3F, 0x00, 0x50, 0x77, 0x4F, 0x06, 0x50, 0x79, 0x5B, 0x00, 0x6D, 0x77, 0x54, 0x39, 0x76, 0x79, 0x5B, 0x00};
unsigned char i;
void retardo_ms(unsigned int msegs);
main()
{
while(1)
{
for (i=0; i<=28; i++)
{
P1=~nombre[i];
retardo_ms(500);
}
}
}
void retardo_ms(unsigned int msegs)
{
volatile unsigned char i,t;
while(msegs)
{
for (i=0;i<=140;i++)
{
t++;
}
t++;
t++;
t++;
msegs--;
}
}
martes, 1 de diciembre de 2009 8:24 p. m.
Publicado por jaimepsantos
viernes, 13 de noviembre de 2009 4:09 p. m.
Publicado por Earl Orlando

Esta obra ofrece una clara introducción a los principios del diseño lógico digital. A diferencia de otras obras similares, la mayor parte de los temas se presentan desde una perspectiva exploratoria a semejanza de un proyecto de investigación, cuyo objetivo consiste en descubrir y asimilar conocimientos sobre el tema expuesto. Así, al abordar un tema nuevo, siempre se intenta que los estudiantes comprendan su importancia y se involucren en el descubrimiento de los conceptos.
Se incluyen abundantes ilustraciones, ejemplos y ejercicios para cada tema con los cuales el estudiante puede reforzar y aplicar los conceptos vistos en la obra.
- Al final de cada capítulo, el lector encontrará una serie de problemas que van desde una aplicación muy sencilla de los procedimientos formulados en el texto hasta la solución de otros más complejos y de mayor dificultad.
- Se ha elegido el lenguaje ABEL para presentar los lenguajes de descripción en hardware (HDL) como una herramienta de diseño. Con esto se reduce el esfuerzo de los estudiantes para aprender el lenguaje y les permite concentrarse en los conceptos subyacentes al diseño con un un HDL.
La obra está dirigida a estudiantes de los primeros años de ingeniería eléctrica, electrónica y en ciencias computacionales.
ÍNDICE
Cap. 1 Representación de números, códigos y conversión de dígitos.
Cap. 2 Álgebra de conmutadores y compuertas lógicas.
Cap. 3 Representación e implementación de funciones lógicas.
Cap. 4 Diseño lógico combinatorio.
Cap. 5 Componentes de circuitos secuenciales.
Cap. 6 Máquinas secuenciales síncronas.
Cap. 7 Máquinas secuenciales asíncronas.
Cap. 8 Diseño con lenguajes de descripción de hardware.
Cap. 9 Organización de la computadora.
Autores: Norman Balabanian, Bradley Carlson
Páginas: 352
jueves, 12 de noviembre de 2009 7:55 p. m.
Publicado por jaimepsantos