Ordenador casero con uP Z80

Excelente proyecto!

Gracias!...

como no se de sistemas embebidos, cual es la diferencia de diseÑar un sistema asi como el tuyo, que por ejemplo implementarlo con un pic32, o pic24 u otro buen microcontrolador ?

Diría yo que la diferencia es la flexibilidad entre ambos tipos de sistemas... la mayoría de los uControladores (corrijanme si estoy equivocado) son un sistema cerrado que consiste en la CPU y sus períféricos ya interconectados de fábrica, lo que hasta cierto punto limíta las prestaciónes del sistema. Otra cosa... al tratarse de un uP este generalmente tiene mayor número de instrucciónes que un microcontrolador además de ser más poderosas en cuanto a direccionamiento y tratamiento de datos.

Respecto a usar un micro depende de la aplicación, en lo personal desistí de usar uno por varias razones:
La más importante desde mi punto de vista era la "didáctica" de armar un proyecto de estos, con un sistema basado en uP tengo más flexibilidad para futuras expansiónes del sistema (memoria, puertos, interrupciónes, etc.).

Obviamente hablando de optimización es mucho más recomendable hoy en día utilizar un solo uC y concentrarse en la programación de este, no es necesario preocuparse por algún cable que se haya desconectado de tal periférico, un CI descompuesto, etc. Hablando de dinero, es más óptimo un sistema con uControlador.

Resumiendo, un proyecto como estos es meramente didático, para aplicaciónes serias, ni pensarlo dos veces, un uControlador será la mejor opción (creo que un 95% de las veces es así).
 
Hola. Exelente proyecto. Todos tus comentarios son muy acertados. Yo he trabajado algunos años con microcontroladores, no soy experto pero mis conocimientos en el tema me facultan para calificar tus comentarios. Viendo tú proyecto me gustaría diseñar un sistema de control para un robot didáctico, el cual ya he controlado con PIC y con Arduino (cosa fácil comparado con un uP). Encontre en la red un proyecto con el 8055, pero al parecer ya es un uP algo antiguo. En verdad al ver tú proyecto me he interezado sobremanera en este tema y honestamente no conozco el tema.
Tambien estudio en ESIME-UC y como han dicho, en estos temas no hay un gran apoyo por parte de los conocimientos de los profes.
Mi robot cuenta con motores PAP y servos. Esteticamente no es muy atractivo ya que yo lo hice completamente, tiene 8 grados de libertad. Tambien he realizado PCB con Protel.
La idea actual es contar con un sistema de control con uP que tenga un teclado hexadecimal. Mi objetivo es adquirir habilidad en el manejo de comandos para el uP y por eso me gustaría almacenar los datos por ese teclado. Podrías acesorarme al respecto?
Agradezco la atención.
 

Adjuntos

  • proyecto cekit 8055 1a parte.pdf
    1.4 MB · Visitas: 139
Gracias por el interés... es cierto ese uP es ya bastante antiguo y por lo mismo será algo difícil construir algo basado en el (por una razón similar base mi proyecto en el Z80, aunque es antiguo aún es relativamente fácil conseguir periféricos para el).
Si estas de acuerdo en basar tu robot en algún uP con gusto te puedo ayudar en lo que refiere a programación e interfaz para los motores, el teclado, algún LCD, etc.
Podemos empezar aclarando que es lo que deseas que tenga el robot y el uP a utilizar.
Saludos y nuevamente gracias por el interés. :apreton:
 
me gustaria saber como aprendiste a usar el Z80 siempre quise aprender a usarlo tambien n la vocacional "me lo enseñaron" pero pura de arabe.
una vez hise un seudo compilador C con instrucciones del pic 16fxx solo para ver si era posible hacer uno un propio compilador, creo que seria interesante hacer un compilador C para Z80 :D
uso los pic y avr sin problemas pero siempre me dio el gusano de aprender usar un CPU obsoleto
no dispongo de grabador de eproms pero pude hacer mi gradador de Sram USB para mis juegos de NES y mi atari2600 (y) , supongo que seria lo mismo que un grabador eeprom
 
Pues el "chispazo" del conocimiento lo tuve en la vocacional cuando empezamos a ver el tema de los microprocesadores, me llamo mucho la atención y por mi cuenta comencé a estudiar del tema.
Creo recordar que ya existe un compilador C para el Z80. No hay comparación entre un AVR, PIC y una CPU como tal, como ya he mencionado se tiene más flexibilidad en el diseño con una CPU.
Sobre lo del programador, si ya tienes tu grabador d SRAM perfectamente te serviría para empezar a depurar pequeños programas en el sistema mínimo del Z80 que supongo armaste en la vocacional ¿no es así?
 
Última edición:
si asi fue nunca supe programarlo debido a que hubo problemas en aquel entonces en mi escuela querian quitar al martin vera que enseñaba Z80 y termino no enseñando y mis compañeros diario mataban clase asi pus jamas aprendi aparte que no tenia dinero para comprar cosas

ahora pues me quede con 2 z80 y el puerto apenas a comienzos de este año hise mi grabador de memorias y lei tu publicacion y dije achis si el pudo por que yo no :LOL:

me podrias facilitar informacion del Z80 la verdad estoy bien perdido pero me gustaria saber mas del tema digo solo para ver que puedo hacer :D como hobby actualmente si hay micros muy avanzados que hacen eso y mas como los pic32 o los freescale que son muy galletudos pero
quiero armar una microcomputadora con mis propias manos (y)

¿como empiezo?
nunca supe ni prender un led con el ni tube la tabla de nemonicos del z80 en internet me hace bolas con este cpu
 
Igualmente como tal de mi profe no aprendí mucho más que lo básico, él nos proporcionó el PCB para armar el sistema mínimo del Z80, aún recuerdo que tenía una RAM de 2KB y una EPROM de 32KB y las conexiónes para los puertos y hasta allí, para las prácticas más o menos nos explicaba que hacía cada instrucción y como estaba la cosa, algo obvio ya que meterse de lleno en el Z80 es tema de más de un semestre.
En fin ¿como empezar?, primero que nada y me atrevo a decir: interés.. mucho mucho interés y paciencia muuuuucha paciencia, armarte tu sistema mínimo con lo básico, CPU memorias y buses de puertos para comenzar a hacer pequeños programas.

Yo me empapé de información en internet y de un libro que se llama "El microprocesador Z80" de Uruñuela que me prestó un amigo cuando vió mi interés por el tema.
Dices que ya tienes tu programador y USB, que mejor, empieza a conocer la estructura y sintaxis del compilador, en lo personal uso este TASM para el Z80.

No olvides su respectiva biblia para que no andes a ciegas con el tema de las intrucciónes.

Eso para comenzar... si tienes dudas con gusto por acá te puedo ayudar.
 
armare un Z80 en las vacaciones normalmente no lo hago no por ineptitud si no por falta de tiempo en mi chambita una pregunta
¿proteus simula un sistema minimo aunquesea para prender un led?
por que con un pic se me pone lenta la compu para prender un Lcd y supuse que un pic es menos carga para el proteus que todo un sistema minimo

y si es asi cargo el .hex a la eprom? o como le haria estoy medio verde en proteus

tambien lei que eres de la esime zacatenco no es asi?

yo estoy cursando en 8° semestre paso a 9° en la tarde en la especialidad de electronica creo que debi meterme a la unam o a esime culuacan :unsure: puras porquerias de profes desepcionante la especialidad ojala no te pase lo mismo y eso que hui de esime azcapotzalco de robotica estaba peor de chafa :eek: creo que era ing en taqueria o hamburgueseria 4, robotica paranada!!!
 
Proteus no simula al Z80, todos los programas que hagas los tendrás que depurar físicamente en tu sistema mínimo :/
Si también soy de ESIME Zacatenco del turno matutino, se supone pasaría a 7° semestre pero por reprobar algunas materias me quedaré en 6to :(, en verdad el nivel ha bajado mucho en todo el politécnico, parte los profesores y otra parte nosotros los alumnos
 
no te creas yo igual soy dinosaurio reprobe en zacatenco por maestros corruptos querian varo y yo no sabia daria una lista de nombres pero son de la tarde esime azcapo estaba deplorable y aca pues algo pero no tanto.
de hecho hago proyectos para chavos que no dan una , ets , diagramas y asesoarias para ineptos que es el 75%
cuando yo estaba en la voca me decian que zacatenco estaba feo y pues cuando yo llege ene el 2008 lo vi pero ya no estaba "tan mal" :unsure:

metete a una especialidad que no sea electronica los maestros son super mamones y no enseñan nada

bueno ok armare un sistema minimo y te cuento como me fue primero empezare con un led tratare de buscar un libro por que asi aun me siento muy inepto
 
mira el dios de la electronica en verdad es el maestro macias palacios jorge es muy buen maestro te deja proyectos fabulosos y enseña con tanto gusto que no dan ganas de perderte ningua clase dara electronica de potencia en enero del 2013 pero es de la tarde por el electronica de la tarde se saturo pero no dio este semestre metete de oyente con macias para que veas lo buen profe que es

los maestros que deberas debes cuidarte son ELEAZAR no hay forma de tratarlo es muy muy mamon y debes hacerle la baraba no hay forma de pasar mas que besarle los pies da en la tarde y en la mañana , Ruiz Meza es igual pero almenos el si enseña ,Fernel nunca va pero con el si pasas, Urbano da clases de maestria en el cinvestav igual una porqueria de profe tambien reprueba a todos, ismael cosme tambien no enseña nada del semestre es algo mamonson y reprueba a un grupo entero sin piedad alguna.
con Eleazar ya reprobo a 3 grupos enteros sin piedad y pide un monton de transmisores para derecho al ETS el hace los ETS :( si fuera por mi lo atropellaba

suerte carnal echale galleta si pudiste armar algo asi puedes salir de la carrera medio vivo(y)
 
Gracias por las recomendaciones, si hay que tener mucho cuidado con la elección de profes.
Ya voy más de la mitad, no me quiero echar para atrás. Hasta ahorita he corrido con suerte por que los temas no se me dificultan tanto (más que nada por el gusto a la carrera), ya a ver que opino después jaja
 
hola soy yo denuevo apenas en diciembre construi mi computadora con Z80 tube que releer todo lo que escribiste.
no la construi pues cuando te envie el ultimo mensaje mi papá murio.
apenas me decidi y me quedo mas o menos descargue un compilador Z80 con simulador de puertos y con debug

pero algo no logro comprender ¿como mando llamar una subrutina?
yo pongo :
CALL etiqueta
mas codigo

etiqueta:
mi subrutina
RET

el simulador lo simula bien pero en mi maquina no funicona
¿que estoy haciendo mal?
debe ser por el Stack Pointer?
esta es mi maquina en prototipo ahi no aparece la ram conectada pero ya la conecte esta en la direccion 3000H
1174602_412121458920737_1619121108_n.jpg
 
Saludos amigo y mi más sincero pésame para ti y tu familia...
Lo que pasa es que, como mencionas, antes de llamar a alguna subrutina es necesario inicializar al "apuntador de pila" (SP) con alguna dirección que esté apuntando en el espacio de RAM.
Recuerda que el SP se DECREMENTA cada vez que se almacena un byte en la RAM por lo que es recomendable declarar el espacio de la pila en las últimas direcciónes de la RAM; en tu caso dices que la RAM está situada a partir de la dirección 3000H así que te convendrá apuntar a una dirección superior a esa, por ejemplo:

LD SP,3500H

PD: Felicidades por tu prototipo ;)
 
gracias

soy muy piedra aun para el ensamblador solo he hecho juego de luces en el z80
no se declarar bien el stack pointer te pondre un ejemplo de como lo hise
este programa ya me saco canas verdes y en simulacion me queda pero no trabaja en mi prototipo

Código:
;-------DECLARO LOS PUERTOS-----------
PORTA    EQU    00H
PORTB    EQU    01H
PORTC    EQU    02H
CONTROL EQU    03H
;----------------FIN------------------

    LD    SP,37FFH        ;CARGO EL STACK POINTER CON MI MEMORIA MAXIMA "2Kb"
    
    LD     A,80H            ;DECLARO LOS PUERTOS COMO SALIDAS
    OUT     (CONTROL),A        ;LLAMO AL CONTROL
    LD    A,170
    OUT     (PORTA),A
    LD    A,85
    OUT     (PORTB),A



    LD    A,1            ;CARGO EL ACUMULADOR CON 1 PARA ROTARLO
INICIO
    CALL     IZQ
    CALL     DER
    
    JP    INICIO


DER:
    LD     B,6            ;NUMERO DE VECES A ROTAR
ROTAR2:    RRCA                ;ROTA EL ACUMULADOR A A LA DERECHA
    OUT     (PORTC),A
    DJNZ     ROTAR2    
    RET

IZQ:    
    LD     B,6            ;NUMERO DE VECES A ROTAR
ROTAR1:    RLCA                ;ROTA EL ACUMULADOR A A LA IZQUIERDA
    OUT     (PORTC),A
    DJNZ     ROTAR1            ;SALTA DECREMENTANDO B CUANDO SE ACABA B TERMINA EL BUCLE
    RET
        
    END

¿que estare haciendo mal?
 
Última edición por un moderador:
Por el momento veo dos posibles causas:
1-No declaraste el inicio del programa con ORG 0000h
y
2-Puede que en realidad si funcione el programa pero como el proceso de rotación es muy veloz no se alcanza a apreciar. Introduce algunas rutinas de retardo.

¿Usas el 8255 para los puertos?
 
si uso el 82C55 a 4 Mhz
pero uso un NE555 a una frecuencia muy baja para hacer debug

por eso no hay problema del retardo

el reloj real no se lo pongo aun las rutinas de retardo lo queria hacer como sub rutina pero queria usar el CALL pero no me funciona

y que es eso del ORG eso no lo entiendo no lo encuentro en la tabla de nemonicos

mi logica para hacer retardos en C es la siguiente "es un ejemplo no esta calculado"
uso char pues solo ocupan 1 byte en los micros y unsignes por que char es de 0 a 127 y -127 y con el unsigned es de 0 a 255

Código:
unsigned char contador=0;
unsigned char segundos=0;
unsigned char minutos=0;
void main()
{
if(contador>=200)
{
segundos++;
contador=0;
}

if (segundos>=60)
{
minutos++;
segundos=0;
}

if (minutos>=60)
{
minutos=0;
}



delay_us(50);
contador++;
}


lo que hago es un delay muy chico para no trabar los micros "por flojera al declarar el timer"y queria hacer igual un delay pequeño para el Z80
con una subrutina de 50us
pero no se calcularla cuando mi reloj trabaja a 4Mhz

podrias orientarme con un libro que hable mas de las subrutinas en internet encuentro pero son cosas rebuscadas o no dicen nada
muchas gracias por responder
 
Última edición por un moderador:
Ese libro es muy bueno, ahora, lo del ORG no es propiamente una instrucción del Z80 si no una directiva del ensamblador la cual le indica a partir de que dirección comenzará a guardar las instrucciones subsecuentes en la memoria.
Te recomiendo mejor usar algún timer de circuito integrado como el 8254, verás que es más sencillo hacer retardos largos y cortos con él que con bucles anidados en el CPU además de liberar tiempo de procesado.
 
Atrás
Arriba