Files
SyncHome/trunk/workspace/gcb/10f200-scacciazanzare.gcb
2023-03-09 12:51:54 +00:00

105 lines
2.0 KiB
Plaintext

' ########### start ###########
' pic:PIC10F200
' ########### end ###########
'
' ******************************************************************
' Scacciazanzare with a PIC10F200
' 2016-08-11 (c) Paolo Iocco
' ******************************************************************
'
' Circuit diagram
' ---------------
' +--\/--+
' LED <----------|1° 6|<--------|50K|---+5V
' GND ---------->|2 5|<------- +5V
' BUZ1 <---------|3 4|-------> BUZ2
' +------+
'
' ******************************************************************
#include "pic6_pin.h"
'Chip model
#chip 10f200, 4
#Config WDT = ON, MCLRE=OFF, CP = OFF ', PWRTE = ON
#define LED D0
#define BUZ1 D1
#define BUZ2 D2
dir D0 out
dir D1 out
dir D2 out
dim ciclo as byte
dim ciclo_h as byte
dim dummy as byte
dim periodo as byte
dim dormi as byte
Startup:
set LED off
set BUZ1 off
set BUZ2 off
OPTION_REG=0b11001111 ' PSA + Prescaler 111 (1:128)
Loop:
do
' ** emette i suoni da ca. 63KHz a 15KHz
'for periodo=1 to 10 ' us del semiciclo (ciclo: 1=63,3KHz, 10=15,7KHz)
movlw 10
movwf periodo
step3:
movlw 160 ' 160*256 periodi per frequenza
movwf ciclo_h
step2:
movlw 255 ' ciclo interno
movwf ciclo
step1:
' primo emiciclo
set BUZ1 on 'bsf GPIO,1 'set BUZ1 on
set BUZ2 OFF 'bcf GPIO,0 'set BUZ2 off
movf periodo,w
movwf dummy
half1:
decfsz dummy,f
goto half1
clrwdt
'secondo emiciclo
set BUZ1 off 'bcf GPIO,1 'set BUZ1 off
set BUZ2 on 'bsf GPIO,0 'set BUZ2 on
movf periodo,w
movwf dummy
half2:
decfsz dummy,f
goto half2
decfsz ciclo,f
goto step1
decfsz ciclo_h,f
goto step2
decfsz periodo,f
goto step3
' ** lampeggio
set LED on
wait 125 ms
' ** reset delle uscite
set LED off
set BUZ1 off
set BUZ2 off
' ** dorme per 20 cicli di watchdog
movlw 20
movwf dormi
step4:
clrwdt
sleep
nop
decfsz dormi,f
goto step4
loop