Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
/*****************************************************
Projecto 1 :
Secuenciador de luz por el puerto D , donde se encienden consecutivamente
leds ubicados en el pueto D del chip Atmega16 de derecha a izquierda y viceversa
Autor : Mecatrodatos
microcontrolador : ATmega16
Oscilador Externo : 4.000000 MHz
*****************************************************/
#include<mega16.h>
#include<delay.h>
#define xtal 4000000
int i;
void main (void)
{
DDRD = 0xFF;
while(1)
{
for(i = 1; i <= 128; i = i*2)
{
PORTD = i;
delay_ms(100);
}
for(i = 128; i > 1; i = i/2)
{
PORTD = i;
delay_ms(100);
}
}
}
Récapitulando
DDRx PORTx Entrada/Salida Resistencia Description
de pull-up
0 0 Entrada NO el pin esta en entrada con alta impedancia
0 1 Entrada SI el pin esta en entrada con resistencia al positivo
1 0 Salida NO el pin esta en salida y con nivel 0
1 1 Salida NO el pin esta en salida y con nivel 1
;------------------------------------------------------
; Los Puertos :Sumar Dos Numeros : Sumar 15+2
; :Transmitirlo Al Exterior" Por El Puerto B
;------------------------------------------------------
; Declaraciones estandar para este micro AT90S8515:
.include "8515def.inc"
;-----------------------------------------------------------
; Definicion de constantes y variables
;-----------------------------------------------------------
; Pila
.equ PILA =0x0FF
;-----------------------------------------------------
.DSEG
; MEMORIA RAM
.ORG (PILA+1)
;----------------------------------------------------
; Vectores de interrupcion
;----------------------------------------------------
.CSEG
.ORG 0x0000
rjmp RESET ; RESET
; --------------------------------------------------------
; RUTINA DE RESET
; --------------------------------------------------------
RESET: cli
ldi r16,HIGH ( PILA )
out SPH,r16
ldi r16,LOW (PILA )
out SPL,r16
;*******DESDE AQUÍ VUESTRO CODIGO*****
ldi r18,0x15 ; carga 00010101 0= Entrada 1=Salida
out 0x18,r18 ; r18 es enviado a PortB (Configura Salida Datos De Puerto.B)
ldi r17,0x02 ; carga 00000010 0= Entrada 1=Salida
out 0x17,r17 ; r17 es enviado a DdrB (Configura Salida De Direcion Puerto.B)
add r18,r17 ; carga 00010101 + 00000010 Suma Los 2 Registros
out 0x18,r18 ; salida de datos Por El puerto.B
rjmp stop
;****HASTA AQUÍ VUESTRO CODIGO********
STOP: rjmp STOP ;FIN DEL PROGRAMA
Por cierto, ya me funciona el circuito. Los voy a guardar todos los que publiques. Poco a poco a coger ideas. He visto que en WinPic800 está el AT90S2313.
Yo sigo partidario del asm pero lo haré con el tiny2313 o el tiny48 seguramente con el segundo que esta muy completo.
También soy de esos.
C siempre es el lenguaje preferido por todos pero siempre hay que empezar desde abajo total en C hacer rutinas para i2c, o una lcd no tiene tanto merito.
Es el preferido porque es más fácil y rápido, sobre todo proyectos grandes. También porque hoy en día hay muchos cómodos.