"Teoría es cuando se sabe todo y nada funciona. Práctica es cuando todo funciona y nadie sabe porqué. En este recinto se conjugan Teoría y Práctica: nada funciona y nadie sabe porqué..."

---------------------------------------------------------------


Sistema ISP-USB-AT89S51-52



Bajar 
archivo Diagrama Eléctrico (pdf)
Bajar archivo Diagrama Circuito Impreso PCB_Top (pdf)
Bajar archivo Diagrama Circuito Impreso PCB_Bot (pdf)
Bajar archivo Máscara de Componentes (pdf)
Bajar archivo Material (pdf) 

Editor MCS51

Con esta herramienta podrás editar programas para los microcontroladores de la familia mc51 además de ensamblar y programar los microcontroladores con el hardware del Programador MCS51.
 
 Bajar Software MCS51 (zip)

Ejemplo para generar una Señal PWM por Interrupción

Este ejemplo genera una señal modulada por ancho de pulso (PWM) con un periodo de 20 mSeg y un ciclo de trabajo de 0 a 100% y de regreso. La variación mínima del ancho del pulso es de 1/200.

;definición de variables y constantes

PWM_DUTY equ 7FH ;CICLO DE TRABAJO
PWM_TMP1 equ 7EH
PWM_TMP2 equ 7DH

PWM_OUT equ P1.1 ;señal pwm

;**************************************

org 0
sjmp INICIO

;-------------------------------------------------------
; ------- Rutina de interrupción PWM -------
;-------------------------------------------------------

Org 0BH ;vector de interrupción del Timer0
PWM_SERVO:
mov PWM_TMP2,A
djnz PWM_TMP1,PWM_CHK
mov PWM_TMP1,#200
clr PWM_OUT
reti

PWM_CHK:
xch A,PWM_TMP1
cjne A,PWM_DUTY,PWM_fin
setb PWM_OUT

PWM_fin:
xch A,PWM_TMP1
mov A,PWM_TMP2
reti
;*************************************
; ------- Inicio de programa principal -------
;-------------------------------------------------------

INICIO:
acall COND_INI

INICIO00:
mov A,PWM_DUTY
cjne A,#200,INCREMENTA
sjmp DECREMENTA

INCREMENTA:
inc PWM_DUTY
acall RETARDO
sjmp INICIO00

INICIO01:
mov A,PWM_DUTY
cjne A,#0,DECREMENTA
sjmp INICIO00

DECREMENTA:
dec PWM_DUTY
acall RETARDO
sjmp INICIO01
;-------------------------------------------------------

RETARDO:
djnz R7,$
djnz R6,RETARDO
ret
;*************************************
; ------- Rutina de configuración del sistema -------
;--------------------------------------------------------

COND_INI:
mov TMOD,#02H
mov TL0,#48H
mov TH0,#48H ;T = 20mSeg, xtal 11.059 MHz
setb TR0
mov IE,#82H
clr PWM_OUT
mov PWM_DUTY,#0 ;valor de inicio 0º
mov PWM_TMP1,#200
ret
;***************************************

end

Sistema de Desarrollo para PIC16F84A




Bajar archivo Diagrama Eléctrico (pdf)
Bajar archivo Diagrama Circuito Impreso PCB (pdf)
Bajar archivo Máscara de Componentes (pdf)

Fuente de 5V con LM2576


Bajar archivo Diagrama Eléctrico (pdf)
Bajar archivo Diagrama Circuito Impreso PCB (pdf)
Bajar archivo Máscara de Componentes (pdf)

Programador PIC16F8XX y 12F5XX

Programador de PIC's vía Puerto Serie (RS232). Programa PIC16F84A, PIC16F876A, PIC16F877A, PIC12F509, PIC12F6XX, entre otros. Utiliza el software ICProg, en este debes seleccionar el programador tipo JDM Programmer como lo muestra la imagen así como habilitar la opción Windows API
 
 
Nota: En caso de no tener puerto RS232, debe conectarse un convertidor RS232 a USB asegurándose que el número de puerto asignado sea entre 1 y 4.

Bajar archivo Diagrama Eléctrico (Pdf)
Bajar archivo Diagrama Circuito Impreso PCB (Pdf)
Bajar archivo Máscara de Componentes (Pdf)
 
 
Bajar Software Programador (ICProg)
 

Rutina para leer un Teclado Matricial con PIC's

Con esta rutina podras leer un teclado matricial de 16 teclas (4 renglones y 4 columnas). En el puerto PB del microcontrolador PIC16F84A se conecta el teclado. El código de la tecla solicitada se regresa en el registro W (de 00H a 0FH para teclas individuales, 10H si no se oprimio ninguna tecla y 11H si se oprimieron mas de una tecla). Sólo tienes que definir las siguientes variables COL_NEW (contador de columnas) y TEC_NEW (código de la tecla). Puedes hacer uso del Sistema de Desarrollo para PIC16F84A.

;*****************************************
; ------- Rutina para detectar una tecla -------

COL_NEW equ 0CH ;contador de columnas
TEC_NEW equ 0DH ;código de la tecla
;-------------------------------------------------------

TECLADO
bsf STATUS,5 ;Banco 1
movlw 0FH
movwf TRISB ;Puerto B entrada/salida
bcf OPTION_REG,7 ;habilita resistencias internas de pull-up
bcf STATUS,5 ;Banco 0

BARRIDO:
movlw 0x04
movwf COL_NEW ;inicia conteo de columnas
movlw 0EFH
movwf TEC_NEW ;inicia las columnas (nibble alto)

BARRIDO_00:
movwf PORTB ;envia columna

CHK_REN1:
btfss PORTB,0
goto REN1_OK ;salta si no se cumple PB0 = 0

CHK_REN2:
btfss PORTB,1
goto REN2_OK ;salta si no se cumple PB1 = 0

CHK_REN3:
btfss PORTB,2
goto REN3_OK ;salta si no se cumple PB2 = 0

CHK_REN4:
btfss PORTB,3
goto REN4_OK ;salta si no se cumple PB4 = 0
decfsz COL_NEW,1 ;verifica ultima columna
goto SIG_COL ;continua con los corrimientos
movlw 10H ;codigo de NO tecla oprimida
return

SIG_COL:
bsf STATUS,0 ;activa el CARRY
rlf TEC_NEW,1 ;siguiente columna
movf TEC_NEW,W
goto BARRIDO_00 ;envia siguiente columna
;---------------------------------------------------

REN1_OK:
bcf TEC_NEW,0
goto TEC00

REN2_OK:
bcf TEC_NEW,1
goto TEC00

REN3_OK:
bcf TEC_NEW,2
goto TEC00

REN4_OK:
bcf TEC_NEW,3

TEC00:
comf TEC_NEW,1
movf TEC_NEW,W
xorlw 11H ;verifica tecla
btfss STATUS,2 ;verifica la bandera Z
goto TEC01
movlw 01H
return

TEC01:
movf TEC_NEW,W
xorlw 12H ;verifica tecla
btfss STATUS,2 ;verifica la bandera Z
goto TEC02
movlw 04H
return

TEC02:
movf TEC_NEW,W
xorlw 14H ;verifica tecla
btfss STATUS,2 ;verifica la bandera Z
goto TEC03
movlw 07H
return

TEC03:
movf TEC_NEW,W
xorlw 18H ;verifica tecla
btfss STATUS,2 ;verifica la bandera Z
goto TEC04
movlw 0AH
return

TEC04:
movf TEC_NEW,W
xorlw 21H ;verifica tecla
btfss STATUS,2 ;verifica la bandera Z
goto TEC05
movlw 02H
return

TEC05:
movf TEC_NEW,W
xorlw 22H ;verifica tecla
btfss STATUS,2 ;verifica la bandera Z
goto TEC06
movlw 05H
return

TEC06:
movf TEC_NEW,W
xorlw 24H ;verifica tecla
btfss STATUS,2 ;verifica la bandera Z
goto TEC07
movlw 08H
return

TEC07:
movf TEC_NEW,W
xorlw 28H ;verifica tecla
btfss STATUS,2 ;verifica la bandera Z
goto TEC08
movlw 00H
return

TEC08:
movf TEC_NEW,W
xorlw 41H ;verifica tecla
btfss STATUS,2 ;verifica la bandera Z
goto TEC09
movlw 03H
return

TEC09:
movf TEC_NEW,W
xorlw 42H ;verifica tecla
btfss STATUS,2 ;verifica la bandera Z
goto TEC0A
movlw 06H
return

TEC0A:
movf TEC_NEW,W
xorlw 44H ;verifica tecla
btfss STATUS,2 ;verifica la bandera Z
goto TEC0B
movlw 09H
return

TEC0B:
movf TEC_NEW,W
xorlw 48H ;verifica tecla
btfss STATUS,2 ;verifica la bandera Z
goto TEC0C
movlw 0BH
return

TEC0C:
movf TEC_NEW,W
xorlw 81H ;verifica tecla
btfss STATUS,2 ;verifica la bandera Z
goto TEC0D
movlw 0CH
return

TEC0D:
movf TEC_NEW,W
xorlw 82H ;verifica tecla
btfss STATUS,2 ;verifica la bandera Z
goto TEC0E
movlw 0DH
return

TEC0E:
movf TEC_NEW,W
xorlw 84H ;verifica tecla
btfss STATUS,2 ;verifica la bandera Z
goto TEC0F
movlw 0EH
return

TEC0F:
movf TEC_NEW,W
xorlw 88H ;verifica tecla
btfss STATUS,2 ;verifica la bandera Z
goto FIN_TEC00
movlw 0FH
return

FIN_TEC00:
movlw 11H ;codigo de 2 o MAS teclas oprimidas
return

Fuente Regulada Variable

Este es un diseño básico de una fuente regulada con salidas de +5V, +12V, +15V variable y -15V variable.

Bajar archivo Diagrama Eléctrico (pdf)
Bajar archivo Diagrama Circuito Impreso PCB (pdf)
Bajar archivo Máscara de Componentes (pdf)