Está en la página 1de 1

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

También podría gustarte