• Domingo 19 de Mayo de 2024, 09:01

Autor Tema:  Aprende Arquitectura 8051  (Leído 6106 veces)

Gokuden

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Aprende Arquitectura 8051
« en: Viernes 8 de Abril de 2005, 18:36 »
0
hola.

aqui les dejo un rar con un completo paquete en español de funcionamiento e instrucciones, registros de estos micros.



les recomiendo que si desean comenzar, usen un 89c51 o 52. si desean tambien, puedo poner aqui una introduccion de como se programa para que vean como se programa ... junto con un compilador...


http://usuarios.lycos.es/gokudenelavismo/temporal/pdf 51 todo.rar

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Aprende Arquitectura 8051
« Respuesta #1 en: Viernes 8 de Abril de 2005, 19:13 »
0
Muchas gracias, ese documento que dices que tambien puedes subir, subelo, sera de gran utilidad.. un millon de gracias por tu aporte. Un Abrazo!
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

Gokuden

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Aprende Arquitectura 8051
« Respuesta #2 en: Sábado 9 de Abril de 2005, 04:28 »
0
primero comenzemos con algo basico.

estos micro controladores son famosos, economicos y versatiles. ESCUCHEN, tenganlos por seguro que si tienen un micro de estos, el prgoramador aprendera sa usarlo, es realmente facil.


BREVE INTRODUCCION

este micro tiene 4 ptos como un 877, no trae adc, ni i2c, ni captura, trae solo uart.
y no trabaja a 4 ciclos por instruccion como microchip sino a 12. exactamente el trabaja a 1microsegundo por instruccion si le colocas un cristal e 11,0529mhz, que es bastante comercial.  

 

otra cosa es que no se configuran puertos, es decir, si deseas sacar datos por el saca y si deseas leer lee, es bidireccional en tiempo de ejecucion.

con respecto a las interrupciones, tiene igual interrupciones para cada modulo, como timers, uart, etc etc pero cada uno apunta a un vector diferente, no como en microchip que todos apuntan a 04h, estos apuntan diferente, asi que puedes hacer rutinas de interrupcion diferentes para cada una. pero me imagino que tendran una duda. ?que pasa si esta interrumpido y viene otra interrupcion?, el tiene un registro donde tu le puedes dar mas prioridad a una que a otra, y si estas en una interrupcion y se activa la de mayor prioridad, entonces se va a la otra, se ejecuta y regresa a la que estaba realizando. ^^. pero si todas tienen la misma jerarquia, pos la interrupcion que se haga mientras este haciendo una no se ejecuta, se pierde .



ADENTREMOS ALGO A LA PROGRAMACION.

los puertos se llaman p0, p1,p2, y p3 a diferencia de porta,portb,etc etc.

con respecto a las instrucciones. estan en el pdf que les di arriba, en un capitulo, pero para decirles una de las mas utilizadas en microchips serian.

MICROCHIP VS 8051

CALL LCALL O ACALL
GOTO JMP O LJMP


COSAS IMPORTANTISIMA.

porque ciertas instrucciones se les pone una L antes. es porque s i tu programa es muy largo, las instrucciones sin L como esas llaman a rutinas que esten 128 lineas por debajo o per encima a ella, en cambio con la L antes, puedes abarcar toda la memoria del micro. mejor usa siempre L, lo que pasa es que esta instruccion te ocupa dos espacios en vez de 1 como las demas.

este mciro funciona como microcontrolador, como microchip o como microprocesador, asi que la patita EA, debe ir a tierra creo, voy a revisar y corregire si no es asi.

este micro no tiene PWR, o power on reset de microchip, asi que debes resetearlo manualmente despues de haberlo encendido, o le pones una resistencia de 10k a tierra, y en esa misma patita un condensador de 10micros F. a vcc. pero el lado negativo del condensador a Vcc. ya que el reset es inverso.

con respecto al direccionamiento, es micro usa un direccionamiento diferente, usa un registro llamado DPTR, este registro es de 16 bits y puedes usarlo directo, meter valores de 16bits en el, pero para leerlo, el tiene un Dptr bajo y un dptr alto ya que este micro es de 8bits. QUE SIGNIFICA ESE DIRECCIONAMIENTO. significa que no usa el cochino PCL de microchip, tienes dos bancos de registro, ni paginas, todo esta en una misma pagina y dos bancos. programas para adelante y no le pares a nada ^^.


PRIMEROS CONOCIMIENTOS DE SUS CARACTERISTICAS. SEGUNDA PARTE ANTES DE HACER UN PROGRAMA.


INTERRUPCIONES.

tiene varias interrupciones, y como dije antes, un vector de interrupcion diferente.
que son vectores de interrpcion? es la localidad de memoria a donde el micro se dirije cuando se acontece la interrupcion deseada y previamente activada.

son estos:

INTERRUPCION VECTOR A QUE APUNTA.
1. interrupcion externa 0 (IE0) 3h
2. interrupcion timer0 (TF0) BH
3. interrupcion externa 1 (IE1) 13h
4. interrupcion timer 1 (TF1) 1BH
5. R1 y T1, interrupcion serial 23H
y hay un timer 2 que es para el 89c52.



DIFERENCIAS ENTRE 89C51 Y 89C52

son iguales, si tienes un programa en uno, puedes programarlo en el otro, colocarlo en tu circuito sin alterar nada y te funcionara. pero el 89c52 trae un timer2 y trae 8k de memoria en comparacion a los 4k que trae el 51.


OTRAS COSA.

ete micro tiene unos registros de ram, que tienen nombre, que son r0,r1,r2... a r7, puedes usarlos cuando quieras, son ram que trae el micro pero ya tienen nombre.


REGISTROS MAS USADOS.

esta el famoso status qe ahora no se usa para nada. a menos que vayas a usar el carry. ya no se usa el Z, no existe, ya que hay instrucciones para comparar directo y no con una xorwf o xorlw



registro de interrupcion.




y el de priroridades pero este no le paren mucho




TIMERS


El 8051 tiene 2 timer/contadores de 16 bits cada uno, llamados Timer 0 y
el Timer 1 respectivamente. Ambos pueden ser configurados para operar como
temporizadores (timers) o como contadores (counters).

Cuando se trabaja como contador, el registro interno del contador, es incrementado cada vez que existe una transición negativa (de 1 a 0) por la línea de entrada correspondiente a T0 ó T1. En cambio, cuando funciona como temporizador "Timer", el registro es incrementado cada 12 periodos de oscilación es decir su frecuencia de conteo es 1/12 de la frecuencia del oscilador.

En el momento que los bits del registro del contador pasan de todos 1's a
todos 0's, se activa la línea de interrupción interna correspondiente a TF0 o TF1,
generándose, (si ha sido permitida) una interrupción.





REGISTRO DE MODO DE CONTROL DEL TIMER/CONTADOR

Este registro permite especificar si se van a trabajar como Temporizadores
(Timers) o como Contadores (Counters), los puertos denominados Timer 0 y Timer 1. Existen 4 modos de trabajo para estos puertos




COSAS IMPORTATES 2.

otra cosa que deben saber es que tu puedes levantar el bit o bajar el bit de un registro de forma directa.

ejemplo.

el bcf o bsf de microchip aqui con clr y setb respectivamente.
este ejemplo es como si usaremos el status de microchip. si deseamos poner en alto el bit RP0, ponemos


SETB RPO en vez de BSF STATUS,RP0


COSAS ANTES DE HACER EL PROGRAMA.


este microcontrolador no controla nada de corriente en sus salidas, asi que no podran prender ni un led, pueden quemar el puerto. asi que deben usar un latch, buffer digital, o un amplificador operacional en modo seguidor para ello. pero para informacion y otras cosas pueden hacerlo directo. la corriente de cada pto es de menos de 1mA.



el acumulador se llama A, hay registros ram con nombres libres de uso como B, r1 a r7, y puedes mover datos directo de un registro a otro

SOFTWARE

para programar usaremos el block de notas, y como compilador el ASM52, buscalo en google. para hacer los retardos o delays usaremos el PICLOOPS, el cual este posee la capacidad de tambien hacer retardos para 8051.




PRENDAMOS Y APAGUEMOS UN LED

PONDRE EL PROGRAMA Y EXPLICARE LINEA A LINEA.

 






$MOD51 ;identificador de programa, obligatorio.
;primero programa
;POWERED by:
; Gokuden
;****************DECLARACION DE REGISTROS********************
LED BIT P1.0
DATOL EQU 20H
; decimos qe el bit 0 del Pto1, se llamara LED, con la pseudoinstruccion BIT
; asi se declara una variable, igual que microchip. desde 20h com el 16f84a

;************************ VECTORES**************************
ORG 0000H ;comenzaremos a programar desde la 0h, obligatorio
LJMP START ; cuando el micro arranca, apunta a 00000h MOV SP,#2FH;stack pointer es el stack, dejalo asi

;*******************CUERPO**************************
START: SETB P1.0
LCALL RET1S
CLR P1.0
LCALL RET1S
JMP START


; PONEMOS EN ALTO EL BIT P1.0 ......ES COMO EL BSF PORTB,0.
; LLAMAMOS A LA RUTINA DE 1SEGUNDO DE RETARDO
; PONEMOS EN BAJO EL BIT P1.0....... ES COMO EL BCF PORTB,0
; LLAMAMOS LA RUTINA DE 1 SEGUNDO
; VAMOS A START DE NUEVO, COMO EL GOTO START .



;********************************************************** ; ESTO ES RUTINA DE 1SEGUNDO. SE HACE CON PICLOOPS.
; RETARDO 1 SEGUNDO
;****************************************************************
RET1S: MOV R1,#16
MOV R2,#71
MOV R3,#255
LOOP: DJNZ R3,$
DJNZ R2,LOOP
DJNZ R1,LOOP
RET


; MOVEMOS EL VALOR EN DECIMAL A EL REGISTRO R1, FIJENSE QUE SE MUEVE DIRECTO, Y NO COM EN MICROCHIP QUE PRIMERO A W LUEGO A EL REGISTRO
;Y NO COM EN MICROCHIP QUE PRIMERO A W LUEGO A EL REGISTRO
; DECREMENTA Y SALTA SI NO ES CERO EL VALOR.
; DECREMENTA Y SALTA SI NO ES CERO


END











disculpen que no puse los comentarios al lado pero se descuadraba el programa.
luego pondre otro programa mas complicado con mas cosas. no eexplico las instrucciones porque son muchas pero por eso ire haciendo programas y las iran viendo en ejecucion.

pero si en realidad no van a dejar esto solo en el pc y van a comprar el micro y van a programrarlo ya probar. pos me mandan un email a supergogeta_4@hotmail.com, o por aqui mismo mejor, y le detallo a la perfeccion cada detalle , cada paso, y que tengan duda.



SE QUE NO ES FACIL ARRANCAR ASI COMO ASI Y QUE LO QUE ESCRIBI NO ES SUFICIENTE PERO ASI EMPESAREMOS, LOS QUE COMPREN Y TENGAN COMO PROGRAMARLOS, ME DICEN, Y LO HAREMOS DETALLADAMENTE.