demostracion en proteus usando compilador positron basic
;-------------------------------------------------------------------------------
;**** Added by Fuse Configurator ****
; Use the Fuse Configurator plug-in to change these settings
Device = 12F683
Config FOSC_INTOSCIO, WDTE_OFF, PWRTE_OFF, MCLRE_OFF, CP_OFF, CPD_OFF, BOREN_ON, IESO_OFF, FCMEN_OFF
;**** End of Fuse Configurator Settings ****
;-------------------------------------------------------------------------------
Declare Xtal = 4
Declare Optimiser_Level = 3
Declare Reminders Off
Declare Watchdog = Off
Declare Create_Coff On
'========================================================
' PIC12F683 - ROGER BEEP CB
'
' GP0 = PTT OUT
' GP1 = LED
' GP2 = AUDIO CCP1/PWM
' GP3 = PTT INPUT
' GP4 = SELECT TONE
'
' Oscilador interno 4 MHz
'========================================================
'--------------------------------------------------------
' CONFIGURACION DIGITAL
'--------------------------------------------------------
' GP3 y GP4 entradas
' GP0 GP1 GP2 salidas
TRISIO = %00011000
GPIO = 0
'--------------------------------------------------------
' SIMBOLOS
'--------------------------------------------------------
Symbol PTT_OUT = GPIO.0
Symbol LED = GPIO.1
Symbol AUDIO = GPIO.2
Symbol PTT_IN = GPIO.3
Symbol SW_TONE = GPIO.4
'--------------------------------------------------------
' VARIABLES
'--------------------------------------------------------
Dim B1 As Byte
Dim B0 As Byte
'========================================================
' INICIO
'========================================================
Start:
B1 = 1
'========================================================
' BUCLE PRINCIPAL
'========================================================
Main:
DelayMS 10
If PTT_IN = 0 Then GoTo Out
DelayMS 10
If SW_TONE = 0 Then GoTo SetTone
GoTo Main
'========================================================
' ENTRAR EN PROGRAMACION
'========================================================
SetTone:
High LED
DelayMS 1500
Low LED
GoTo ToneSet1
'========================================================
ToneSet1:
B1 = 1
If SW_TONE = 1 Then GoTo ToneSet2
GoTo ToneSet1
'========================================================
ToneSet2:
If SW_TONE = 0 Then GoTo ToneSet
If PTT_IN = 0 Then GoTo Main
GoTo ToneSet2
'========================================================
' SIGUIENTE TONO
'========================================================
ToneSet:
High LED
DelayMS 400
Inc B1
Low LED
If B1 > 11 Then GoTo LedFlash
GoTo ToneSet2
'========================================================
' ERROR
'========================================================
LedFlash:
DelayMS 500
For B0 = 1 To 20
High LED
DelayMS 150
Low LED
DelayMS 150
Next B0
DelayMS 500
GoTo Start
'========================================================
' PTT ACTIVADO
'========================================================
Out:
High PTT_OUT
High LED
If PTT_IN = 1 Then GoTo Beep
GoTo Out
'========================================================
' SELECCION DEL TONO
'========================================================
Beep:
If B1 = 1 Then GoTo Play1
If B1 = 2 Then GoTo Play2
If B1 = 3 Then GoTo Play3
If B1 = 4 Then GoTo Play4
If B1 = 5 Then GoTo Play5
If B1 = 6 Then GoTo Play6
If B1 = 7 Then GoTo Play7
If B1 = 8 Then GoTo Play8
If B1 = 9 Then GoTo Play9
If B1 = 10 Then GoTo Play10
If B1 = 11 Then GoTo Play11
GoTo Beep
'========================================================
' TONO 1 - SIN BEEP
'========================================================
Play1:
GoTo OutTone
'========================================================
' TONO 2
' C#6 aproximadamente 554 Hz
'========================================================
Play2:
Tone554
GoTo OutTone
'========================================================
' TONO 3
' D7 aproximadamente 1175 Hz
'========================================================
Play3:
Tone1175
GoTo OutTone
'========================================================
' TONO 4
' F7 aproximadamente 1396 Hz
'========================================================
Play4:
Tone1396
GoTo OutTone
'========================================================
' TONO 5
' G7 aproximadamente 1568 Hz
'========================================================
Play5:
Tone1568
GoTo OutTone
'========================================================
' TONO 6
' A#7 aproximadamente 1865 Hz
'========================================================
Play6:
Tone1865
GoTo OutTone
'========================================================
' TONO 7 - DOBLE BEEP
' D7 - G7
'========================================================
Play7:
Tone1175
Tone1568
GoTo OutTone
'========================================================
' TONO 8 - TRIPLE BEEP
' C7 - G7 - C7
'========================================================
Play8:
Tone1047
Tone1568
Tone1047
GoTo OutTone
'========================================================
' TONO 9
' G5 - G#5 - A#5 - D#5
'========================================================
Play9:
Tone392
Tone415
Tone466
Tone311
GoTo OutTone
'========================================================
' TONO 10
'========================================================
Play10:
Tone392
Tone262
Tone262
Tone523
Tone262
Tone330
Tone262
GoTo OutTone
'========================================================
' TONO 11
'========================================================
Play11:
Tone330
Tone370
Tone392
Tone440
Tone494
Tone494
Tone466
Tone392
Tone370
GoTo OutTone
'========================================================
' GENERADORES DE TONO
'
' CCP1 -> GP2
' PWM 50 %
'========================================================
'--------------------------------------------------------
' 262 Hz
'--------------------------------------------------------
Sub Tone262
PR2 = 238
CCP1CON = %00101100
CCPR1L = 119
T2CON = %00000111
DelayMS 259
T2CON = 0
Low AUDIO
EndSub
'--------------------------------------------------------
' 311 Hz
'--------------------------------------------------------
Sub Tone311
PR2 = 200
CCP1CON = %00101100
CCPR1L = 100
T2CON = %00000111
DelayMS 259
T2CON = 0
Low AUDIO
EndSub
'--------------------------------------------------------
' 330 Hz
'--------------------------------------------------------
Sub Tone330
PR2 = 188
CCP1CON = %00101100
CCPR1L = 94
T2CON = %00000111
DelayMS 259
T2CON = 0
Low AUDIO
EndSub
'--------------------------------------------------------
' 370 Hz
'--------------------------------------------------------
Sub Tone370
PR2 = 168
CCP1CON = %00101100
CCPR1L = 84
T2CON = %00000111
DelayMS 259
T2CON = 0
Low AUDIO
EndSub
'--------------------------------------------------------
' 392 Hz
'--------------------------------------------------------
Sub Tone392
PR2 = 158
CCP1CON = %00101100
CCPR1L = 79
T2CON = %00000111
DelayMS 259
T2CON = 0
Low AUDIO
EndSub
'--------------------------------------------------------
' 415 Hz
'--------------------------------------------------------
Sub Tone415
PR2 = 150
CCP1CON = %00101100
CCPR1L = 75
T2CON = %00000111
DelayMS 259
T2CON = 0
Low AUDIO
EndSub
'--------------------------------------------------------
' 440 Hz
'--------------------------------------------------------
Sub Tone440
PR2 = 141
CCP1CON = %00101100
CCPR1L = 71
T2CON = %00000111
DelayMS 259
T2CON = 0
Low AUDIO
EndSub
'--------------------------------------------------------
' 466 Hz
'--------------------------------------------------------
Sub Tone466
PR2 = 133
CCP1CON = %00101100
CCPR1L = 67
T2CON = %00000111
DelayMS 259
T2CON = 0
Low AUDIO
EndSub
'--------------------------------------------------------
' 494 Hz
'--------------------------------------------------------
Sub Tone494
PR2 = 126
CCP1CON = %00101100
CCPR1L = 63
T2CON = %00000111
DelayMS 259
T2CON = 0
Low AUDIO
EndSub
'--------------------------------------------------------
' 523 Hz
'--------------------------------------------------------
Sub Tone523
PR2 = 119
CCP1CON = %00101100
CCPR1L = 60
T2CON = %00000111
DelayMS 259
T2CON = 0
Low AUDIO
EndSub
'--------------------------------------------------------
' 554 Hz
'--------------------------------------------------------
Sub Tone554
PR2 = 112
CCP1CON = %00101100
CCPR1L = 56
T2CON = %00000111
DelayMS 259
T2CON = 0
Low AUDIO
EndSub
'--------------------------------------------------------
' 1047 Hz
'--------------------------------------------------------
Sub Tone1047
PR2 = 238
CCP1CON = %00101100
CCPR1L = 119
T2CON = %00000101
DelayMS 259
T2CON = 0
Low AUDIO
EndSub
'--------------------------------------------------------
' 1175 Hz
'--------------------------------------------------------
Sub Tone1175
PR2 = 212
CCP1CON = %00101100
CCPR1L = 106
T2CON = %00000101
DelayMS 259
T2CON = 0
Low AUDIO
EndSub
'--------------------------------------------------------
' 1396 Hz
'--------------------------------------------------------
Sub Tone1396
PR2 = 178
CCP1CON = %00101100
CCPR1L = 89
T2CON = %00000101
DelayMS 259
T2CON = 0
Low AUDIO
EndSub
'--------------------------------------------------------
' 1568 Hz
'--------------------------------------------------------
Sub Tone1568
PR2 = 158
CCP1CON = %00101100
CCPR1L = 79
T2CON = %00000101
DelayMS 259
T2CON = 0
Low AUDIO
EndSub
'--------------------------------------------------------
' 1865 Hz
'--------------------------------------------------------
Sub Tone1865
PR2 = 133
CCP1CON = %00101100
CCPR1L = 67
T2CON = %00000101
DelayMS 259
T2CON = 0
Low AUDIO
EndSub
'========================================================
' FIN DEL ROGER BEEP
'========================================================
OutTone:
DelayMS 10
T2CON = 0
CCP1CON = 0
Low AUDIO
Low PTT_OUT
Low LED
GoTo Main