Autor
|
Tema: AT89S52 o AT89C52 Timer, Contadores (Leído 10,635 veces)
|
CATBro
Desconectado
Mensajes: 156
Envidio la manera de pensar de Caboose
|
Que tal foro, mi primer post en electronica y tengo tres dudas que no me entran en la cabeza, resulta que tengo unas practicas en la escuela con este microcontrolador AT89C52 o AT89S52 y ni el maestro se explica bien. Consegui un manual de ese micro, no el datasheet si no el manual con los temas, y sigo sin entender como funcionan y como accedo a esto, todo las practicas las hacemos en ASM del micro. Alguien que sea amable y me ayude explicandome esto. No saben que agradecido estaria
|
|
|
En línea
|
|
|
|
skapunky
Electronik Engineer &
Colaborador
Desconectado
Mensajes: 3.667
www.killtrojan.net
|
Realmente es dificil explicarlo bien y menos sobre Atmel que estos microcontroladores están obsoletos, por suerte yo en la facultad hace años me tocó la típica assignatura de micros y trabajé con atmel.
Cada micro tiene unos registros para los timers y los contadores, eso lo deberías mirar en tu datasheet, digo que realmente es dificil explicar eso porque debería ceñirme en tu caso en particular con esos modelos pero te lo explicaré de forma general.
Tanto para manjear los timers como los contadores, exísten un o varios registros que se deben habilitar, estos registros tienen 8 bits. Cada bit de ellos es a su vez un "subregistro de 1 bit" que según si está a 0 o 1 lo activaremos.
Es parecido a la palabra de estado, no se si habrás oído hablar de ella donde tiene 8 bits con 8 funciónes distintas.
Lo mejor para entender esto, es en las practicas de laboratorio donde lo programes, y si tienes dudas deberías preguntar porque es algo que cuando tienes delante el programa se entiende fácilmente. Te recomiendo que leas detalladamente el apartado del datasheet de los contadores y temporizadores, aunque el micro tenga 2 o 3 de cada uno de ellos todos funcionan igual solo que su registro lleva el numero que sea.
Si tienes dudas mas específicas te puedo ayudar.
NOTA: No se si demasiada gente por aquí te podrá ayudar ya que Atmel se da en algunas universidades y en todos lados enseñan Microchip, yo ahóra estoy oxidado en Atmel pero si ves que tienes apuros me pongo contigo con lo que necesites.
|
|
|
En línea
|
Killtrojan Syslog v1.44: ENTRAR
|
|
|
CATBro
Desconectado
Mensajes: 156
Envidio la manera de pensar de Caboose
|
Jeje muchas gracias por contestar y por ofrecerte a echarme una mano, pense que nadie iva a contestar , estuve estos dias con una practica que usaba un temporizador y mas o menos le entendi pero no muy bien , respecto a los registro de 8 bits que me dices, son el registro TMOD y TCON los que tengo que utilizar. Pero sigo sin entender el funcionamiento a la perfeccion dejen pongo un ejemplo: NOP NOP MOV TMOD,#01H ;//////////////////////////////////////////////////////// APAGAR Y PRENDER EL LED
APAGADO: MOV R0,#00H MOV R1,#00H
SETB P1.0 ;--------->Prende
LLAMAR: LCALL TIMER CJNE R0,#014H,LLAMAR MOV R0,#00H INC R1 CJNE R1,#07H,LLAMAR ;/////////////////////////////////////////////////////// APAGA LED CLR P1.0--------->Apaga MOV R0,#00H MOV R1,#00H LLAMAR2: LCALL TIMER CJNE R0,#014H,LLAMAR2 MOV R0,#00H INC R1 CJNE R1,#03H,LLAMAR2 LJMP APAGADO ;/////////Timer
TIMER: INC R0 MOV TL0,#0AFH MOV TH0,#03CH MOV TCON,#010H AQUI: MOV A,TCON ANL A,#020H ;<-------------------No entiendo esta parte... JZ AQUI RET FIN: LJMP FIN NOP END
Lo que debe de hacer es prender un led por 7 segundos y apagarlo por 3 segundos, pero todo esto esta muy difuso, como en la parte de ANL A,#020H no entiendo para que lo multiplica..... Saludos
|
|
|
En línea
|
|
|
|
skapunky
Electronik Engineer &
Colaborador
Desconectado
Mensajes: 3.667
www.killtrojan.net
|
AQUI: MOV A,TCON ANL A,#020H ;<-------------------No entiendo esta parte... JZ AQUI RET Primero a entender que es "ANL", según la descripción del manual de instrucciónes de Atmel tenemos: Operation: ANL Function: Bitwise AND Syntax: ANL operand1, operand2 Description: ANL does a bitwise "AND" operation between operand1 and operand2, leaving the resulting value in operand1. The value of operand2 is not affected. A logical "AND" compares the bits of each operand and sets the corresponding bit in the resulting byte only if the bit was set in both of the original operands, otherwise the resulting bit is cleared. Es decir, compara dos valores...esto lo hace en forma de "mascara" imagino que sabes lo que es, por si no lo sabes una mascara se utiliza para comparar si un valor de un registro o uno de los bits de un registro es el valor que deseamos, en este caso del registro TCON donde su valor lo almacenamos en el acumulador A. Vamos línea por línea: AQUI: MOV A,TCON //almacenamos el valor del registro TCON en acumulador A ANL A,#020H // comparamos el valor del bit 6º si es 0 o 1. JZ AQUI // si es cero volvemos a la etiqueta aqui RET //volvemos de la función.
Ahora paso a explicarte lo de la mascara, el valor TCON = XXXXXXXX donde A = TCON = XXXXXXXX. Ahóra comparamos con una AND bit por bit el valor de TCON con el valor de la mascara 020h xxxxxxxx 00100000 ------------ Aplicamos AND bit a bit xx@xxxxx Donde el valor @ será 0 o 1 dependiendo del 6º bit de TCON, una vez comprovado si es cero salta a la etiqueta y si no es cero va a RET. Espero que entiendas la explicación, si tienes dudas pregunta a tu profesor lo que es una "mascara" porque en ensamblador para comprovar si el bit N de un registro es 0 o 1 es obligatorio siempre hacerlo. Enlaces que te pueden ayudar: 8051 instruccion setAssembler user guide ATMELPor cierto TL0 y THO era para cargar el valor de la temporización no? deberé repasar los registros de atmel, todo por no mirar en el datasheet de uno de ellos jajaja. Si tienes mas dudas te ayudaré encantado, por suerte el oxido que tengo en atmel lo puedo pulir.
|
|
« Última modificación: 11 Noviembre 2011, 21:27 pm por skapunky »
|
En línea
|
Killtrojan Syslog v1.44: ENTRAR
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
contadores y alarma
Electrónica
|
shovanny
|
5
|
8,167
|
1 Junio 2005, 20:25 pm
por LinuxRaider
|
|
|
contadores tipo 4
Electrónica
|
stradivariuss
|
0
|
2,801
|
4 Julio 2007, 17:49 pm
por stradivariuss
|
|
|
Contadores de Visitas, sobre carga :p
Nivel Web
|
Castg!
|
1
|
2,586
|
28 Enero 2010, 08:39 am
por jdc
|
|
|
Ayuda con contadores
Programación C/C++
|
hail to the helix
|
2
|
2,013
|
4 Marzo 2014, 07:05 am
por hail to the helix
|
|
|
Contadores en c++
Programación C/C++
|
AndresDiazK
|
5
|
2,525
|
14 Marzo 2014, 19:06 pm
por AndresDiazK
|
|