Se quiere encargar la realización de un generador de señal con las siguientes
características:
• La frecuencia de la señal será seleccionable entre 1 y 10Khz mediante dos botones
(uno aumentará la frecuencia y otro la disminuirá).
• El circuito estará basado en un PIC16F88 y un convertidor A/D de 8 bits.
• A la salida del ADC el circuito generará una señal de 3Vpp (entre 1V y 4V)
aproximandola a una señal sinusoidal en 10 escalones para un periodo de la señal.
• La salida del ADC (señal sinusoidal con escalones) se filtrará para “suavizarla”
eliminando los escalones, mediante un filtro paso bajo RC.
• El sistema se diseñará de forma que el tamaño en placa y el número de componentes
sea mínimo.
El prototipo del circuito se hará en placa de wrapping. El diseño final se hará en tarjeta
de circuito impreso.
Es el proyecto q tengo q hacer. He echo mas o menos el programa para el PIC16F88 queria q viera si esta bien o no.
;..................................................
;GENERADOR DE SEÑAL, REGULABLE ENTRE 1 Y 10 KHZ
;..................................................
LIST P=16F88
INCLUDE "P16F88.INC"
__CONFIG _CONFIG1, _CP_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_CLKOUT
RA0_UP EQU 20H ;control de entrada ascendente
RA1_DOWN EQU 21H ;control de entrada descendente
CONT EQU 22H ;contador
ORG 0X00
GOTO INICIO
ORG 0X05
;Configuración de registros
;...............................
INICIO
CLRF PORTA
CLRF PORTB
MOVLW B'1001000'
MOVWF INTCON
BSF STATUS, RP0
CLRF TRISB
MOVLW B'00000011'
MOVWF TRISA
MOVLW B'00001000' ;Perro guardian
MOVWF OPTION_REG
MOVLW B'01101101'
MOVWF OSCCON
BCF STATUS,RP0
CLRF RA0_UP
CLRF RA1_DOWN
MOVLW .1
MOVWF CONT ;CONT=1
;Detectar pulsación
;...............................
MOVLW .1
SUBWF RA0_UP,W
BTFSS STATUS,Z
GOTO FINSI
INCF CONT,F
FINSI:
MOVLW .1
SUBWF RA1_DOWN,W
BTFSS STATUS,Z
GOTO FINSI1
DECF CONT,F
FINSI1:
MOVLW .1
SUBWF CONT,W
BTFSS STATUS,Z
GOTO FINSI2
MOVLW .10
MOVWF CONT
FINSI2:
MOVLW .10
SUBWF CONT,W
BTFSS STATUS,Z
GOTO FINSI3
MOVLW .1
MOVWF CONT
FINSI3:
;Casos
;.............................
CASO1: MOVLW .1
SUBWF CONT,W
BTFSS STATUS,Z
GOTO CASO2
CALL F1
GOTO FINCASO
CASO2: MOVLW .2
SUBWF CONT,W
BTFSS STATUS,Z
GOTO CASO3
CALL F2
GOTO FINCASO
CASO3: MOVLW .3
SUBWF CONT,W
BTFSS STATUS,Z
GOTO CASO4
CALL F3
GOTO FINCASO
CASO4: MOVLW .4
SUBWF CONT,W
BTFSS STATUS,Z
GOTO CASO5
CALL F4
GOTO FINCASO
CASO5: MOVLW .5
SUBWF CONT,W
BTFSS STATUS,Z
GOTO CASO6
CALL F5
GOTO FINCASO
CASO6: MOVLW .6
SUBWF CONT,W
BTFSS STATUS,Z
GOTO CASO7
CALL F6
GOTO FINCASO
CASO7: MOVLW .7
SUBWF CONT,W
BTFSS STATUS,Z
GOTO CASO8
CALL F7
GOTO FINCASO
CASO8: MOVLW .8
SUBWF CONT,W
BTFSS STATUS,Z
GOTO CASO9
CALL F8
GOTO FINCASO
CASO9: MOVLW .9
SUBWF CONT,W
BTFSS STATUS,Z
GOTO CASO10
CALL F9
GOTO FINCASO
CASO10: CALL F10
FINCASO:
;Rutina 1-->1KHZ
;.............................
F1 MOVLW D'129'
MOVWF PORTB
MOVLW .156
MOVWF TMR0
BUCLE
BTFSS INTCON,TMR0IF
GOTO BUCLE
MOVLW D'210'
MOVWF PORTB
MOVLW .156
MOVWF TMR0
BUCLE1
BTFSS INTCON,TMR0IF
GOTO BUCLE1
MOVLW D'251'
MOVWF PORTB
MOVLW .156
MOVWF TMR0
BUCLE2
BTFSS INTCON,TMR0IF
GOTO BUCLE2
MOVLW D'251'
MOVWF PORTB
MOVLW .156
MOVWF TMR0
BUCLE3
BTFSS INTCON,TMR0IF
GOTO BUCLE3
MOVLW D'204'
MOVWF PORTB
MOVLW .156
MOVWF TMR0
BUCLE4
BTFSS INTCON,TMR0IF
GOTO BUCLE4
MOVLW D'129'
MOVWF PORTB
MOVLW .156
MOVWF TMR0
BUCLE5
BTFSS INTCON,TMR0IF
GOTO BUCLE5
MOVLW D'53'
MOVWF PORTB
MOVLW .156
MOVWF TMR0
BUCLE6
BTFSS INTCON,TMR0IF
GOTO BUCLE6
MOVLW D'7'
MOVWF PORTB
MOVLW .156
MOVWF TMR0
BUCLE7
BTFSS INTCON,TMR0IF
GOTO BUCLE7
MOVLW D'7'
MOVWF PORTB
MOVLW .156
MOVWF TMR0
BUCLE8
BTFSS INTCON,TMR0IF
GOTO BUCLE8
MOVLW D'153'
MOVWF PORTB
MOVLW .156
MOVWF TMR0
BUCLE9
BTFSS INTCON,TMR0IF
GOTO BUCLE9
RETURN
;Rutina 2-->2KHZ
;.............................
F2 MOVLW D'129'
MOVWF PORTB
MOVLW .206
MOVWF TMR0
BUCLE10
BTFSS INTCON,TMR0IF
GOTO BUCLE10
MOVLW D'210'
MOVWF PORTB
MOVLW .206
MOVWF TMR0
BUCLE11
BTFSS INTCON,TMR0IF
GOTO BUCLE11
MOVLW D'251'
MOVWF PORTB
MOVLW .206
MOVWF TMR0
BUCLE12
BTFSS INTCON,TMR0IF
GOTO BUCLE12
MOVLW D'251'
MOVWF PORTB
MOVLW .206
MOVWF TMR0
BUCLE13
BTFSS INTCON,TMR0IF
GOTO BUCLE13
MOVLW D'204'
MOVWF PORTB
MOVLW .206
MOVWF TMR0
BUCLE14
BTFSS INTCON,TMR0IF
GOTO BUCLE14
MOVLW D'129'
MOVWF PORTB
MOVLW .206
MOVWF TMR0
BUCLE15
BTFSS INTCON,TMR0IF
GOTO BUCLE15
MOVLW D'53'
MOVWF PORTB
MOVLW .206
MOVWF TMR0
BUCLE16
BTFSS INTCON,TMR0IF
GOTO BUCLE16
MOVLW D'7'
MOVWF PORTB
MOVLW .206
MOVWF TMR0
BUCLE17
BTFSS INTCON,TMR0IF
GOTO BUCLE17
MOVLW D'7'
MOVWF PORTB
MOVLW .206
MOVWF TMR0
BUCLE18
BTFSS INTCON,TMR0IF
GOTO BUCLE18
MOVLW D'153'
MOVWF PORTB
MOVLW .206
MOVWF TMR0
BUCLE19
BTFSS INTCON,TMR0IF
GOTO BUCLE19
RETURN