jueves, 17 de diciembre de 2009
#include "PCronos.h"
int contador = 0;
long time[6];
long int cuenta = 0;
#int_TIMER0
void TIMER0_isr()
{
set_timer0(136);
cuenta++;
/* printf("T"); */
}
#int_EXT
void EXT_isr()
{
if (contador<= 6) {
time[contador] = cuenta;
}
contador++;
printf("E");
}
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_8);
set_timer0(136);
enable_interrupts(INT_EXT);
enable_interrupts(INT_TIMER0);
set_tris_a(0x10);
set_tris_b(0x01);
printf("Cronometro para PC \n\r");
contador = 0;
while (1){
if (contador == 0) {
printf("Presione S para comenzar a realizar la medicion \n\r" );
while(getch() != 'S');
enable_interrupts(GLOBAL);
printf("\n\rOK\n\r");
contador++;
}
else if (contador > 5){
disable_interrupts(GLOBAL);
printf("\n\r");
for(contador = 1; contador < 6; contador++){
printf("%Lu\n\r", time[contador]);
}
printf("\n\r");
printf("%Lu\n\r", time[2] - time[1]);
printf("%Lu\n\r", time[3] - time[2]);
printf("%Lu\n\r", time[4] - time[3]);
printf("%Lu\n\r", time[5] - time[4]);
contador = 0;
cuenta = 0;
printf("Preparado para una nueva medicion \n\r");
}
}
}
#include <16f84a.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_A3,rcv=PIN_A4,bits=8)
miércoles, 25 de noviembre de 2009
TP 12 !
Codigo Assembler
;********************************************************************
; Nombre del archivo: TestStarter.asm
;********************************************************************
; Descripción:
; ------------
; Este software sirve para verificar el funcionamientos de la
; placa Starter.
; Enciende y apaga los leds conectados al PORTB en una secuencia
; determinada por el programa, siempre y
; cuando se active mediante un "1" la llave conectada en RA0.
;
;********************************************************************
; Hardware:
; ---------
; Placa Starter
; XTAL: 4MHz
;********************************************************************
; Autores: VMMB Fecha: 18/11/09 Versión:1.0
;********************************************************************
LIST p=PIC16F84A
INCLUDE
__CONFIG _WDT_OFF & _PWRTE_ON & _CP_OFF & _XT_OSC
ERRORLEVEL -302
;********************************************************************
; Definiciones y Equivalencias
;********************************************************************
#DEFINE BANK0 bcf STATUS,RP0 ; Cambio al banco 0
#DEFINE BANK1 bsf STATUS,RP0 ; Cambio al banco 1
RAM EQU 0x0C
FLASHROM EQU 0x000
SW_0 EQU 0
SW_1 EQU 1
;********************************************************************
; Variables
;********************************************************************
CBLOCK RAM
var_1
var_2
var_3
w_temp
status_temp
ENDC
;********************************************************************
; MACROS (Sustituyen una o más lineas de código por un nombre)
;********************************************************************
; Macros usadas para este programa
LEDS_OFF MACRO
clrf PORTB
ENDM
LEDS_ON MACRO
movlw b'11111111'
movwf PORTB
call delay_200ms
LEDS_OFF
call delay_200ms
ENDM
LED_1 MACRO
movlw b'00000001'
movwf PORTB
ENDM
LED_2 MACRO
movlw b'00000010'
movwf PORTB
ENDM
LED_3 MACRO
movlw b'00000100'
movwf PORTB
ENDM
LED_4 MACRO
movlw b'00001000'
movwf PORTB
ENDM
LED_5 MACRO
movlw b'00010000'
movwf PORTB
ENDM
LED_6 MACRO
movlw b'00100000'
movwf PORTB
ENDM
LED_7 MACRO
movlw b'01000000'
movwf PORTB
ENDM
LED_8 MACRO
movlw b'10000000'
movwf PORTB
ENDM
LED_1y3 MACRO
movlw b'00000101'
movwf PORTB
ENDM
LED_2y4 MACRO
movlw b'00001010'
movwf PORTB
ENDM
LED_3y5 MACRO
movlw b'00010100'
movwf PORTB
ENDM
LED_4y6 MACRO
movlw b'00101000'
movwf PORTB
ENDM
LED_5y7 MACRO
movlw b'01010000'
movwf PORTB
ENDM
LED_6y8 MACRO
movlw b'10100000'
movwf PORTB
ENDM
LED_7y1 MACRO
movlw b'01000001'
movwf PORTB
ENDM
LED_8y2 MACRO
movlw b'10000010'
movwf PORTB
ENDM
LED_1y2 MACRO
movlw b'00000011'
movwf PORTB
ENDM
LED_3y4 MACRO
movlw b'00001100'
movwf PORTB
ENDM
LED_5y6 MACRO
movlw b'00110000'
movwf PORTB
ENDM
LED_7y8 MACRO
movlw b'11000000'
movwf PORTB
ENDM
; Macros usadas para guardar los registros W y STATUS al momento
; de llegar una interrupción
PUSH MACRO
movwf w_temp
swapf STATUS,W
movwf status_temp
ENDM
POP MACRO
swapf status_temp,W
movwf STATUS
swapf w_temp,F
swapf w_temp,W
ENDM
;********************************************************************
; Vectores
;********************************************************************
ORG FLASHROM
clrw
goto Inicio ; de Reset
ORG 0x004
goto Isr ; de Interrupción
;********************************************************************
Inicio
;********************************************************************
; Configuro los puertos I/O
BANK1
movlw b'11111'
movwf TRISA
clrf TRISB
BANK0
;********************************************************************
; Programa principal
;********************************************************************
Loop_1
;LEDS_OFF
LEDS_ON
goto Loop
Loop
btfss PORTA,SW_0
goto Variacion_1
goto Variacion_2
Variacion_1
btfss PORTA,SW_1
goto Loop_1
goto SECUENCIA_1
Variacion_2
btfss PORTA,SW_1
goto SECUENCIA_2
goto SECUENCIA_3
SECUENCIA_1
LED_1
call delay_200ms
LED_2
call delay_200ms
LED_3
call delay_200ms
LED_4
call delay_200ms
LED_5
call delay_200ms
LED_6
call delay_200ms
LED_7
call delay_200ms
LED_8
call delay_200ms
goto Loop
SECUENCIA_2
LED_1y3
call delay_200ms
LED_2y4
call delay_200ms
LED_3y5
call delay_200ms
LED_4y6
call delay_200ms
LED_5y7
call delay_200ms
LED_6y8
call delay_200ms
LED_7y1
call delay_200ms
LED_8y2
call delay_200ms
goto Loop
SECUENCIA_3
LED_1y2
call delay_200ms
LED_3y4
call delay_200ms
LED_5y6
call delay_200ms
LED_7y8
call delay_200ms
goto Loop
;********************************************************************
; Subrutinas
;********************************************************************
; Delays
;
delay_200ms
;499994 cycles
movlw 0x03
movwf var_1
movlw 0x18
movwf var_2
movlw 0x02
movwf var_3
delay_200ms_0
decfsz var_1, f
goto $+2
decfsz var_2, f
goto $+2
decfsz var_3, f
goto delay_200ms_0
;2 cycles
goto $+1
;4 cycles (including call)
return
;********************************************************************
; Servicio de Interrupción
;********************************************************************
Isr
PUSH
; Aca se escribe el Servicio de Interrupción
POP
retfie
;********************************************************************
END ;Directiva que indica la finalización del pgm
Simulación
jueves, 19 de noviembre de 2009
Pasos a seguir para realizar el TP
Lo primero que vamos a hacer es explicar como realizar la plaqueta:
Para diseñar dicha plaqueta usaremos un programa llamado PROTEL SE99 que sirve para hacer un esquemático del circuito y luego el PCB (circuito impreso). Acá les dejamos un tutorial para aprender a usarlo igualmente les recomendamos realizar varias practicas mas sencillas para agilizar su uso. Una vez creado el PCB lo imprimimos en una hoja de papel fotográfico o papel ilustración, para transmitir el PCB a la placa por medio del método de transferencia térmica. Una vez terminado este paso la placa la procesamos en ácido Percloruro Férrico para que quite el cobre sobrante quedando solo las islas y pistas. Realizado este procedimiento pasamos a marcar la placa con una punta de trazar para que sea mas efectivo el momento de agujerear. Hechos todos los agujeros limpiamos con la virulana las pistas para que quede sin ningún tipo de suciedad el cobre, así pasamos contacflux (barniz protector de flux orgánico) ayudando que el cobre no se oxide, para un buen secado se recomienda dejar la placa 20 horas en reposo. Montamos los componentes de menor a mayor tamaño ordenadamente y comenzamos las respectivas soldaduras. Así finalizamos la primer etapa de este proyecto que es la realización de la placa.
¿Cuál es el uso de este TP?
¿De qué trata el TP Final?
miércoles, 18 de noviembre de 2009
Comunicacion microcontrolador al pc por transimición de dato serie.
En lógica TTL un 1 lógico equivale a 5V, en RS232 a -12V.
En lógica TTL un 0 lógico equivale a 0V, en RS232 a 12V.
Acá esta el datasheet
Tanto los aficionados a la electrónica con inquietud para montar proyectos con microcontroladores, como los estudiantes de Formación Profesional de Electrónica y los estudiantes de Ingeniería Industrial, Telecomunicaciones o Informática, encontrarán de gran utilidad este libro para la realización de todo tipo de proyectos.
La obra es eminentemente práctica ya que contiene más de 200 ejercicios resueltos integramente con programas y esquemas, siendo muchos de ellos proyectos clásicos, como termómetros, relojes, calendarios, cerraduras electrónicas, control de displays, termostatos, temporizadores, alarmas, sirenas, comunicación con el ordenador, juegos, control de motores, microrobots, etc.
El software utilizado es de libre distribución y los circuitos emplean componentes que pueden adquirirse fácilmente en cualquier tienda de componentes electrónicos. Para el desarrollo de cualquiera de los proyectos planteados no se precisa de grandes medios materiales, por lo que realizarlo resulta sencillo, económico y ameno.
Descargar Libro