TODOPIC
Otros Microcontroladores / Dispositivos programables => Microcontroladores 8 bits => Mensaje iniciado por: stk500 en 26 de Noviembre de 2009, 12:07:05
-
Hace muchos tiempos que estoy estudiando Bascom AVR, aprendiendo con este lenguaje y esperando tener cosas muy concreta me decidi compartir aqui, con el gran deseo que otros que quieran tambien cooperar y compartir, pues bien ya que hay un Hilo aqui sobre esten gran lenguaje y poca unformacion en habla españolas
http://www.todopic.com.ar/foros/index.php?topic=8108.0
pues quiero continuar aqui no solo con el Atmega8 sino con otros mas que tengo.
pues bien de momento os dejo aqui un Reloj que todavia no esta acabado del todos , ya que le queria poner mas cosas, pero me divertir muchos con el aprendiendo, ya que llevo muchos meses haciendolo , buscando informacion,leyendos otros Textos, otros proyectos.
Se trata de un Reloj muy simple, con 3 teclado de momento, la Tecla del Puerto PD4 es para iniciar el ajuste, la tecla del Puerto PD2 se ajusta las Horas, el Puerto PD3 es para ajustar los Minutos y volviendo a la Tecla PD4 se memorizas los ajuste, el Puerto PD6 aun lo estoy trabajando, donde quiero implementar texto.
aqui os subo el Codigo y las imagen
' * - - * - * * - - - - - - - - - - - - - - - - - - - - - - - - - - -
'Hecho por Rafael Jimenez
'www.todopic.com.ar/foros
'' * - - * - * * - - - - - - - - - - - - - - - - - - - - - - - - - -
$regfile = "m8def.dat" ' se puede usar cualquier micro,
$crystal = 8000000 ' aqui yo uso el Cristal interno
Declare Sub text_amoroso()
Config Pind.2 = Input ' pulsador para ajuste de hora
Config Pind.3 = Input 'pulsador para ajuste los minutos
Config Pind.4 = Input ' pulsador para configurar el reloj, una pulsacion espera ajuste,
'volver a pulsar momoriza los ajuste
'Config Pind.6 = Output ' Toggle mensaje display
Portd.2 = 1
Portd.3 = 1
Portd.4 = 1
'Portd.6 = 0
' Declaramos variables
Dim A As Integer ' Variables para caracteres
Dim Segundos As Byte ' variable para Segundos
Dim Minutos As Byte 'variable para minutos
Dim Horas As Byte ' variable para la horas
' el reloj inicia con todos los datos a ceros
Let Segundos = 0
Let Minutos = 0
Let Horas = 0
Let A = 0
' aqui usaremos un LCD 162x2 , observar el Esquema,
'se puede usar varios tipo de LCD, pero debe cambiar la config lcd = 162x2.240x4 ha sido probado
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.0 , Rs = Portc.1
Config Lcd = 20 * 4
Deflcdchar 0 , 32 , 21 , 14 , 4 , 4 , 10 , 17 , 17 ' resultado del editor de caracteres
Deflcdchar 1 , 32 , 4 , 14 , 14 , 14 , 4 , 4 , 4 ' resultado del editor de caracteres
Config Timer1 = Timer , Prescale = 1024 ' aqui usamos el reloj internos de Mcu
On Ovf1 Tim1_isr '
Load Timer1 , 7812 ' 8Mhz/1024=7812 aqui calgamos el reloj a segundo
Setclock: 'ajuste del reloj
Disable Interrupts
Let Segundos = 0
Cls ' aqui borramos el Display del LCD
Cursor On Blink ' aqui actvamos cursor del display
Lcd "Hora: "
Lowerline
Lcd "Ajuste la hora!"
Locate 1 , 9
Lcd ":"
Locate 1 , 12
Lcd "."
Do
If Pind.3 = 0 Then
Minutos = Minutos + 1
If Minutos = 60 Then Minutos = 0
Waitms 200
End If
If Pind.2 = 0 Then
Horas = Horas + 1
If Horas = 24 Then Horas = 0
Waitms 200
End If
If Pind.4 = 0 Then Exit Do
Locate 1 , 7
Lcd " "
Locate 1 , 7
Lcd Horas
Locate 1 , 10
Lcd " "
Locate 1 , 10
Lcd Minutos
Locate 1 , 13
Lcd " "
Locate 1 , 13
Lcd Segundos
Waitms 50
Loop
Enable Timer1
Enable Interrupts
Cursor Off Noblink
Call text_amoroso()
Do
Toggle Portd.6
Waitms 100
If Pind.4 = 0 Then
Waitms 10
While Pind.4 = 0
nop
Wend
Goto Setclock
End If
Loop
Tim1_isr:
Load Timer1 , 7812
If Segundos = 60 Then
Segundos = 0
Minutos = Minutos + 1
If Minutos = 60 Then
Minutos = 0
Locate 1 , 10
Lcd " "
Horas = Horas + 1
If Horas = 24 Then
Horas = 0
Locate 1 , 7
Lcd " "
Call text_amoroso()
nop
nop
End If
End If
End If
Locate 1 , 7
Lcd Horas
Locate 1 , 10
Lcd Minutos
Locate 1 , 13
Lcd " "
Locate 1 , 13
Lcd Segundos
Locate 1 , 16
If A = 0 Then
Lcd Chr(0)
A = 1
Elseif A = 1 Then
Lcd Chr(1)
A = 0
End If
Segundos = Segundos + 1
Return
End
Sub text_amoroso()
Locate 2 , 0
Lcd "Rafael Jimenez! "
End Sub
(http://img412.imageshack.us/img412/5763/lcd4bit.jpg)
(http://img412.imageshack.us/img412/1064/image001fv.jpg)
Cual quier comentarios se agradece
-
Menos mal que te has animado, dinosauriooooooooo :D
-
:D :D ya lo sabe Sr. Manuel :D y estoy preparando mas cosas :lol: :lol:
-
muy buena Rafa, el bascom es en lenguaje Basic? cierto?
seguimos atentos :-/
-
muy buena Rafa, el bascom es en lenguaje Basic? cierto?
seguimos atentos :-/
Si amigo Cryn , y tambien en Assembler puede usar Ej.
Dim C As Byte
Loadadr C , X 'load address of variable C into register X
$asm
Ldi R24,1 ; load register R24 with the constant 1
St X,R24 ; store 1 into variable c
$end Asm
Print C
End
muchas gracias por tu interes.
Saludo
-
Hola, quiero saber si me puedes ayudar con un lio que tengo, no manejo muy bien los pwm en los avr, estoy usando bascom avr y un micro atmega32, necesito generar una frecuencia de 35Khz a la salida del timer y modular su ancho de pulso, me puedes ayudar con un modelo para poder programar? no entiendo bien como puedo calcular esa frecuencia de salida.
De verdad muchas gracias por tu ayuda
saludos
Pablo
-
Hola, quiero saber si me puedes ayudar con un lio que tengo, no manejo muy bien los pwm en los avr, estoy usando bascom avr y un micro atmega32, necesito generar una frecuencia de 35Khz a la salida del timer y modular su ancho de pulso, me puedes ayudar con un modelo para poder programar? no entiendo bien como puedo calcular esa frecuencia de salida.
De verdad muchas gracias por tu ayuda
saludos
Pablo
pues para generar pwm debe usar el timer de atmega32 , pero deberia ante todos hacer los calculo con el tipo de cristal que use, por ejemplo
F= oscilador/ prescaler, los prescale que puede usar son 1,8,64,128,256 y 1024, no olvide que prescale es Divisor.
deberia configurar el Timer,
Config Timer0 = Pwm , Prescale = X , Compare Pwm = Clear Down , Pwm = On
Config Timer1 = Pwm , Pwm = 8 , Prescale = X , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down ,
no olvide que ese micro tiene 4 pwm y creo que 3 timer, timero es de 8bit,timer1 de 16 bit,timer2 8bit, leete la hoja de datos.
cualquier dudas seguimos.
-
hola me podrias ayudar con un proble ma q tengo, tengo q conectar el teclado del computador al micro un atmega 16 y lo q escriba mostrarlo en un lcd, y lo mismo con el mouse del computador, mover el mouse se tiene q mover el cursor en el lcd y
no se q instrucciones ni librerias tengo q usar
-
Hola a todos. soy nuevo con micros de Atmel. Mi experiencia es mayor con micros de Freescale (05 y hs08). Para empezar me consegui un STK500 y baje el BASCOM DEMO , el WinAvr y AVR Studio. Pero me encontré que el AVR Studio ( ultima version) no soporta la herramienta STK500. Podrían aclararme si esto es verdad o estoy equivocado. Especificamente estoy intentando hacer un proyecto con ATMEGA 128 y al parecer el STK500 no soporta directamente a este micro.
Agradeceré sus comentarios. saludos
-
Hola Andes baires y Bienvenido a nuestros Foro Todopic!
pues claro que lo soporta! lo que te puede suceder es la Version y mal configuracion, el STK500 no tiene salida USB y si tiene una Pentium IV nueva sin conector Serial no te va a funcionar, yo tengo mi STK500 con un Adaptador SERIAL/USB , el unico problema que te puede dar con el Adaptador, es que cada vez que desconecte la Targeta STK500 con el programa abierto se te cuelgue al programar el micro que tenga, por lo que deberia reiniciar el programa, cosa que con el SERIAL directo no da problema, osea dberia decirnos que Versionjes instalaste y mas INFO , el AVRStudio Soporta todas Serie Amega y el WinAVR tambien y si usa el Bascom claro que lo soporta, lo que me extraña muchos tu problema.
Saludo y Suerte
-
Las ultimas placas todivia tienen puerto serial rs232, felismente compre una placa AMD (AM3) que tiene puerto paralelo y serial.
Pero las ultimas que vienen con USB3 solo tiene puerto rs232.