Cuando pones los puertos como salidas este se cambia autom�ticamente a un valor
random, por tal motivo se debe limpiar siempre
BSF STATUS,RP0 CLRF TRISD ; Al ejecutarse esto el PORTD toma un valor de 0xE0 (aleatoriamente) BCF STATUS,RP0 CLRF PORTD ; Por tal motivo se debe limpiar Esto se debe a los Data Latch, TRIS Latch (Parecido a los FLIP FLOPS, solo que es sin el CLK (seg�n wiki xD)) ---> Revisar foto o circuito de un puerto (en este caso Puerto D). El bus de datos ---> Va a todo el microcontrolador, pero especialmente a la RAM. La entrada no puede ir por el buffer, as� que va por schmitt trigger input ----> Luego entra a un Flip Flop tipo D -----> Lo cual habilita un Latch cuando se le entregue una se�al de lectura al Puerto (en este caso estamos analizando el Puerto D) (esto ocasiona el TRIS) ----> se habilitan los 2 el Q y la lectura (RD PORT) -----> Finalmente esto llega hasta el bus de datos. Esto solo se ocasiona s� y solo s� cuando se le habilite al puerto como lectura (entrada supongo xD). Esta lectura es cuando yo guardo informaci�n a la RAM. El TRIS ----> Permite que el dato salga o no salga ----> Por ejemplo, si TRIS es 0 ---> Es salida ---> Se habilita el LATCH (Q = 0) ----> Se va al buffer, pero como la bolita del buffer significa un NOT ----> Ese 0 se transforma a 1 -----> Eso hace que el bus de datos pueda pasar por el BUFFER ---> Se va al I/O pin, por lo tanto este act�a como salida. De manera an�loga, si el TRIS = 1 ---> El BUFFER no permite el paso del bus de datos, por lo tanto el I/O pin act�a como entrada. �Cu�ndo se sabe que habilita el Data Latch o Tris Latch? ----> Esto es manejado por los -----> WR Port, WR TRIS, RD TRIS y RD Port (RD = Read, WR = Write) ----> WR son clocks, as� dice KIKO. -------------------------------- RETARDOS (SUB RUTINAS ANIDADAS) -------------------------------- Para una frecuencia de 4MHZ RUT_TIEMPO: movlw 3 ---> Toma 1 ciclo de instrucci�n movwf VARIABLE ---> Toma 1 ciclo de instrucci�n Lazo decfsz VARIABLE ---> Toma 1 ciclo de instrucci�n goto LAZO ---> Toma 2 ciclos de instrucci�n (goto y call) return x ciclos de instrucci�n = 4x ciclos de reloj Fcy = Frecuencia de Ciclo de instrucci�n FQ = Frecuencia de Ciclo de reloj ---> Fcy = FQ/4 ----> Tcy = 4*TQ = 4/FQ ----> En el problema ----> Tcy = 4/4MHz = 1us ---> Cada instrucci�n (que no sea goto o call) toma 1uS cuando la frecuencia de reloj es 4MHz En el problema, el total de tiempo que se tom� ser�a: 1+1 + 1+2 + 1+2 + 2+2 = 2 + 3(3-1) + 4 = 12 ---> 12us Sea VARIABLE = n: --> 2 + 3(n-1) + 4 = 3n + 3 = 3(n+1) ==> Ttotal = 3(VARIABLE+1)xTinst ; Tinst = 4.Tclk