Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Mr.Moonlight

#21
Programación General / 3 en raya .asm 6809
12 Mayo 2015, 16:23 PM
Hola chicos , estoy tratando de simular en el 6809 el típico juego de 'el gato' o más conocido como 3 en raya. Bien , el problema me surge a la hora de que en la práctica se me especifica que debo de crear el tablero y que este se autorefresque es decir , no lo puedo imprimir una y otra vez con los nuevos movimientos , el tablero se me ha ocurrido recrearlo imprimiendo direcciones de memoria seguidas , ya que me facilitaria el imprimirlas con su valor en ascii , es decir , cuando del teclado lee un 1 , hace un salto a esta subrutina y en ella con un ld , almacena el valor 88 , (en ascii una X) a la vez que en la direccion siguiente almacena un 48 (un 0 en ascii)

obviamente no voy a copiar todo el codigo porque seria muy extenso por aqui dejo el modulo jugador vs maquina , esperando que me den alguna idea para refrescar el tablero.
OJO no pido código.

jugador_maquina:

lda teclado
cmpa #1
bne compara2
jsr siesuno
bra jugador_maquina

compara2:

cmpa #2
bne compara3
jsr siesdos
bra jugador_maquina

compara3:
cmpa #3
bne compara4
jsr siestres
bra jugador_maquina

compara4:
cmpa #4
bne compara5
jsr siescuatro
bra jugador_maquina

compara5:
cmpa #5
bne compara6
jsr siescinco
bra jugador_maquina

compara6:
cmpa #6
bne compara7
jsr siesseis
bra jugador_maquina

compara7:
cmpa #7
bne compara8
jsr siessiete
bra jugador_maquina

compara8:
cmpa #8
bne compara9
jsr siesocho
bra jugador_maquina

compara9:
cmpa #9
bne Valorerroneo
jsr siesnueve
bra jugador_maquina

valorerroneo:
jsr imprime valor_erroneo
#22
Estudio Ingeniería Informática en la Universidad de Salamanca

Al menos en Salamanca se estudia física electrónica y aparte otra materia que es cálculo en la ingeniería además de álgebra lineal y otras materias.

#23
Verán ,ando trabajando en un contador con biestables que realiza una cuenta, el problema es que como resultado tengo 2 bucles de 0->8 y otro de 7->15 , el tema es por si alguien puede echarme un cable y decirme como puedo iniciar el contador en un número que no esté en bucle , el 2 por ejemplo , por aqui dejo el codigo fuente del programa que tengo hecho hasta ahora.. Mencionar que no pido ningún codigo solo el como hacerlo.

*Edit : Todo resuelto , despues de investigar un buen rato alcance la solucion :D
//Modulo del biestable JK
module JKdown(output reg Q, output wire QN, input wire J, input wire K,   input wire C);
 not(NQ,Q);

 initial
 begin
   Q=0;
 end    

 always @(posedge C)
   case ({J,K})
     2'b10: Q=1;
     2'b01: Q=0;
     2'b11: Q=~Q;
   endcase
endmodule


//Módulo que contiene el contador y la circuitería auxiliar.
module contador (output wire[3:0] Q, input wire C);
//Cables correspondientes a las salidas negadas de los biestables.
 wire [3:0] nQ;
 
 wire rand;

 
 // J2, K2
 and (rand, Q[0], nQ[3]);
 
 JKdown jk0 (Q[0], nQ[0], Q[1], Q[1], C);
 JKdown jk1 (Q[1], nQ[1], Q[0], Q[0], C);
 JKdown jk2 (Q[2], nQ[2], rand, rand, C);
 JKdown jk3 (Q[3], Q[3], 1'b1, 1'b1, C);

endmodule


//Módulo para probar el circuito.
module test;
 reg C;
 wire [3:0] Q;
 contador counter (Q,C);

 always
 begin
   #9 C=~C;
   
 end

 initial
 begin
 
  $monitor($time, "Q[3:0]=%b", Q[3:0]);
   
  //Iniciar cuenta en 2
    counter.jk3.Q=0;
   counter.jk2.Q=0;          
   counter.jk1.Q=1;
   counter.jk0.Q=0;

   C=0;
   #300 $finish;
 end
endmodule





[MOD]: Utiliza las etiquetas para insertar código.