1256 lines
26 KiB
NASM
1256 lines
26 KiB
NASM
;-----------------------------------------------------
|
|
; MAZURKA.ASM - By Claudio Fin - Gennaio 2001
|
|
; (http://stor.altervista.org/pic/pic.htm)
|
|
;-----------------------------------------------------
|
|
PROCESSOR 16F84 ;4Mhz
|
|
RADIX DEC
|
|
INCLUDE "P16F84.INC"
|
|
__CONFIG 3FF1H
|
|
|
|
;-----------------------------------------------------
|
|
; Definizione variabili del programma
|
|
;-----------------------------------------------------
|
|
ORG 0CH
|
|
NCONT RES 1 ;Numero note
|
|
PTAB RES 1 ;Indice dell'elem. in tabella
|
|
RITAR RES 2 ;Valore ritardo per onda quadra
|
|
RIPET RES 2 ;Numero Ripetizioni
|
|
DRITAR RES 2 ;Valore ritardo - 1
|
|
RDEL RES 2 ;Valore ritardo per delay
|
|
|
|
;-----------------------------------------------------
|
|
; Inizio programma all'indirizzo 0.
|
|
;-----------------------------------------------------
|
|
ORG 0
|
|
|
|
goto inizio ;Salta le tabelle
|
|
|
|
;-----------------------------------------------------
|
|
; Tabelle note con 4 dati per nota:
|
|
; 0 - Low byte ritardo onda quadra
|
|
; 1 - High byte ritardo onda quadra
|
|
; 2 - Low byte numero ripetizioni
|
|
; 3 - High byte numero ripetizioni
|
|
;
|
|
; Ritardo = ( (1000000 / Hz) - 16 ) / 18
|
|
; Ripetizioni = Secondi * Hz
|
|
;-----------------------------------------------------
|
|
; Ritornello 1
|
|
;-----------------------------------------------------
|
|
tabr1 clrf PCLATH
|
|
movf PTAB,w
|
|
addwf PCL,f
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 62
|
|
retlw 0
|
|
retlw 132
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
;------------------------
|
|
retlw 52
|
|
retlw 0
|
|
retlw 58
|
|
retlw 1
|
|
|
|
retlw 52
|
|
retlw 0
|
|
retlw 157
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 235
|
|
retlw 0
|
|
;------------------------
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 62
|
|
retlw 0
|
|
retlw 132
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
;------------------------
|
|
retlw 70
|
|
retlw 0
|
|
retlw 235
|
|
retlw 0
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
|
|
retlw 74
|
|
retlw 0
|
|
retlw 111
|
|
retlw 0
|
|
|
|
retlw 79
|
|
retlw 0
|
|
retlw 210
|
|
retlw 0
|
|
;------------------------
|
|
retlw 55
|
|
retlw 0
|
|
retlw 40
|
|
retlw 1
|
|
|
|
retlw 55
|
|
retlw 0
|
|
retlw 40
|
|
retlw 1
|
|
|
|
retlw 62
|
|
retlw 0
|
|
retlw 8
|
|
retlw 1
|
|
;------------------------
|
|
retlw 62
|
|
retlw 0
|
|
retlw 132
|
|
retlw 0
|
|
|
|
retlw 66
|
|
retlw 0
|
|
retlw 125
|
|
retlw 0
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 214
|
|
retlw 1
|
|
;------------------------
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
|
|
retlw 74
|
|
retlw 0
|
|
retlw 111
|
|
retlw 0
|
|
|
|
retlw 79
|
|
retlw 0
|
|
retlw 163
|
|
retlw 1
|
|
;------------------------
|
|
retlw 79
|
|
retlw 0
|
|
retlw 105
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 105
|
|
retlw 0
|
|
retlw 58
|
|
retlw 1
|
|
;------------------------
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 62
|
|
retlw 0
|
|
retlw 132
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
;------------------------
|
|
retlw 52
|
|
retlw 0
|
|
retlw 58
|
|
retlw 1
|
|
|
|
retlw 52
|
|
retlw 0
|
|
retlw 157
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 235
|
|
retlw 0
|
|
|
|
;-----------------------------------------------------
|
|
tabr2 clrf PCLATH
|
|
movf PTAB,w
|
|
addwf PCL,f
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 62
|
|
retlw 0
|
|
retlw 132
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
;------------------------
|
|
retlw 70
|
|
retlw 0
|
|
retlw 235
|
|
retlw 0
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
|
|
retlw 74
|
|
retlw 0
|
|
retlw 111
|
|
retlw 0
|
|
|
|
retlw 79
|
|
retlw 0
|
|
retlw 210
|
|
retlw 0
|
|
;------------------------
|
|
retlw 55
|
|
retlw 0
|
|
retlw 40
|
|
retlw 1
|
|
|
|
retlw 55
|
|
retlw 0
|
|
retlw 40
|
|
retlw 1
|
|
|
|
retlw 62
|
|
retlw 0
|
|
retlw 8
|
|
retlw 1
|
|
;------------------------
|
|
retlw 62
|
|
retlw 0
|
|
retlw 132
|
|
retlw 0
|
|
|
|
retlw 66
|
|
retlw 0
|
|
retlw 125
|
|
retlw 0
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 214
|
|
retlw 1
|
|
;------------------------
|
|
retlw 55
|
|
retlw 0
|
|
retlw 148
|
|
retlw 0
|
|
|
|
retlw 62
|
|
retlw 0
|
|
retlw 132
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
|
|
;-----------------------------------------------------
|
|
ORG 100H
|
|
|
|
tabr3 movlw 1
|
|
movwf PCLATH
|
|
movf PTAB,w
|
|
addwf PCL,f
|
|
|
|
retlw 79
|
|
retlw 0
|
|
retlw 105
|
|
retlw 0
|
|
|
|
retlw 94
|
|
retlw 0
|
|
retlw 88
|
|
retlw 0
|
|
|
|
retlw 105
|
|
retlw 0
|
|
retlw 157
|
|
retlw 0
|
|
|
|
retlw 105
|
|
retlw 0
|
|
retlw 157
|
|
retlw 0
|
|
|
|
retlw 2
|
|
retlw 0
|
|
retlw 68
|
|
retlw 22
|
|
|
|
;-----------------------------------------------------
|
|
; Ritornello 2
|
|
;-----------------------------------------------------
|
|
tabr4 movlw 1
|
|
movwf PCLATH
|
|
movf PTAB,w
|
|
addwf PCL,f
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 198
|
|
retlw 0
|
|
|
|
retlw 52
|
|
retlw 0
|
|
retlw 58
|
|
retlw 1
|
|
|
|
retlw 55
|
|
retlw 0
|
|
retlw 40
|
|
retlw 1
|
|
;------------------------
|
|
retlw 62
|
|
retlw 0
|
|
retlw 132
|
|
retlw 0
|
|
|
|
retlw 66
|
|
retlw 0
|
|
retlw 125
|
|
retlw 0
|
|
|
|
retlw 62
|
|
retlw 0
|
|
retlw 132
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 62
|
|
retlw 0
|
|
retlw 132
|
|
retlw 0
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
;------------------------
|
|
retlw 79
|
|
retlw 0
|
|
retlw 105
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 79
|
|
retlw 0
|
|
retlw 105
|
|
retlw 0
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
|
|
retlw 62
|
|
retlw 0
|
|
retlw 132
|
|
retlw 0
|
|
|
|
retlw 79
|
|
retlw 0
|
|
retlw 105
|
|
retlw 0
|
|
;------------------------
|
|
retlw 83
|
|
retlw 0
|
|
retlw 81
|
|
retlw 2
|
|
;------------------------
|
|
retlw 83
|
|
retlw 0
|
|
retlw 198
|
|
retlw 0
|
|
|
|
retlw 79
|
|
retlw 0
|
|
retlw 210
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 198
|
|
retlw 0
|
|
;------------------------
|
|
retlw 66
|
|
retlw 0
|
|
retlw 125
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 55
|
|
retlw 0
|
|
retlw 148
|
|
retlw 0
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
|
|
retlw 46
|
|
retlw 0
|
|
retlw 96
|
|
retlw 1
|
|
;------------------------
|
|
retlw 83
|
|
retlw 0
|
|
retlw 198
|
|
retlw 0
|
|
|
|
retlw 79
|
|
retlw 0
|
|
retlw 210
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 198
|
|
retlw 0
|
|
;------------------------
|
|
retlw 62
|
|
retlw 0
|
|
retlw 132
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 52
|
|
retlw 0
|
|
retlw 157
|
|
retlw 0
|
|
|
|
retlw 62
|
|
retlw 0
|
|
retlw 132
|
|
retlw 0
|
|
|
|
retlw 41
|
|
retlw 0
|
|
retlw 140
|
|
retlw 1
|
|
;------------------------
|
|
retlw 83
|
|
retlw 0
|
|
retlw 198
|
|
retlw 0
|
|
|
|
retlw 52
|
|
retlw 0
|
|
retlw 58
|
|
retlw 1
|
|
|
|
retlw 55
|
|
retlw 0
|
|
retlw 40
|
|
retlw 1
|
|
;------------------------
|
|
retlw 62
|
|
retlw 0
|
|
retlw 132
|
|
retlw 0
|
|
|
|
retlw 66
|
|
retlw 0
|
|
retlw 125
|
|
retlw 0
|
|
|
|
retlw 62
|
|
retlw 0
|
|
retlw 132
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 62
|
|
retlw 0
|
|
retlw 132
|
|
retlw 0
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
;------------------------
|
|
retlw 79
|
|
retlw 0
|
|
retlw 105
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 79
|
|
retlw 0
|
|
retlw 105
|
|
retlw 0
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
|
|
retlw 62
|
|
retlw 0
|
|
retlw 132
|
|
retlw 0
|
|
|
|
retlw 79
|
|
retlw 0
|
|
retlw 105
|
|
retlw 0
|
|
;------------------------
|
|
retlw 83
|
|
retlw 0
|
|
retlw 81
|
|
retlw 2
|
|
;------------------------
|
|
retlw 83
|
|
retlw 0
|
|
retlw 198
|
|
retlw 0
|
|
|
|
retlw 79
|
|
retlw 0
|
|
retlw 210
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 198
|
|
retlw 0
|
|
;------------------------
|
|
retlw 66
|
|
retlw 0
|
|
retlw 125
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 55
|
|
retlw 0
|
|
retlw 148
|
|
retlw 0
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
|
|
retlw 46
|
|
retlw 0
|
|
retlw 96
|
|
retlw 1
|
|
|
|
;-----------------------------------------------------
|
|
ORG 200H
|
|
|
|
tabr5 movlw 2
|
|
movwf PCLATH
|
|
movf PTAB,w
|
|
addwf PCL,f
|
|
|
|
retlw 79
|
|
retlw 0
|
|
retlw 105
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 88
|
|
retlw 0
|
|
retlw 93
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 52
|
|
retlw 0
|
|
retlw 157
|
|
retlw 0
|
|
|
|
retlw 55
|
|
retlw 0
|
|
retlw 148
|
|
retlw 0
|
|
;------------------------
|
|
retlw 62
|
|
retlw 0
|
|
retlw 8
|
|
retlw 1
|
|
|
|
retlw 62
|
|
retlw 0
|
|
retlw 8
|
|
retlw 1
|
|
|
|
retlw 2
|
|
retlw 0
|
|
retlw 68
|
|
retlw 22
|
|
|
|
;-----------------------------------------------------
|
|
; Ritornello 3
|
|
;-----------------------------------------------------
|
|
tabr6 movlw 2
|
|
movwf PCLATH
|
|
movf PTAB,w
|
|
addwf PCL,f
|
|
|
|
retlw 79
|
|
retlw 0
|
|
retlw 59
|
|
retlw 1
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 94
|
|
retlw 0
|
|
retlw 88
|
|
retlw 0
|
|
|
|
retlw 105
|
|
retlw 0
|
|
retlw 78
|
|
retlw 0
|
|
;------------------------
|
|
retlw 79
|
|
retlw 0
|
|
retlw 163
|
|
retlw 1
|
|
|
|
retlw 62
|
|
retlw 0
|
|
retlw 8
|
|
retlw 1
|
|
;------------------------
|
|
retlw 52
|
|
retlw 0
|
|
retlw 116
|
|
retlw 2
|
|
|
|
retlw 46
|
|
retlw 0
|
|
retlw 96
|
|
retlw 1
|
|
;------------------------
|
|
retlw 70
|
|
retlw 0
|
|
retlw 193
|
|
retlw 2
|
|
;------------------------
|
|
retlw 59
|
|
retlw 0
|
|
retlw 164
|
|
retlw 1
|
|
|
|
retlw 62
|
|
retlw 0
|
|
retlw 132
|
|
retlw 0
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
|
|
retlw 79
|
|
retlw 0
|
|
retlw 105
|
|
retlw 0
|
|
;------------------------
|
|
retlw 83
|
|
retlw 0
|
|
retlw 41
|
|
retlw 1
|
|
|
|
retlw 79
|
|
retlw 0
|
|
retlw 105
|
|
retlw 0
|
|
|
|
retlw 94
|
|
retlw 0
|
|
retlw 88
|
|
retlw 0
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
;------------------------
|
|
retlw 105
|
|
retlw 0
|
|
retlw 236
|
|
retlw 0
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
|
|
retlw 62
|
|
retlw 0
|
|
retlw 132
|
|
retlw 0
|
|
|
|
retlw 59
|
|
retlw 0
|
|
retlw 140
|
|
retlw 0
|
|
;------------------------
|
|
retlw 55
|
|
retlw 0
|
|
retlw 81
|
|
retlw 2
|
|
|
|
retlw 52
|
|
retlw 0
|
|
retlw 58
|
|
retlw 1
|
|
|
|
retlw 79
|
|
retlw 0
|
|
retlw 59
|
|
retlw 1
|
|
|
|
retlw 83
|
|
retlw 0
|
|
retlw 99
|
|
retlw 0
|
|
|
|
retlw 94
|
|
retlw 0
|
|
retlw 88
|
|
retlw 0
|
|
|
|
retlw 105
|
|
retlw 0
|
|
retlw 78
|
|
retlw 0
|
|
;------------------------
|
|
retlw 79
|
|
retlw 0
|
|
retlw 163
|
|
retlw 1
|
|
|
|
retlw 62
|
|
retlw 0
|
|
retlw 8
|
|
retlw 1
|
|
;------------------------
|
|
retlw 44
|
|
retlw 0
|
|
retlw 236
|
|
retlw 2
|
|
|
|
retlw 46
|
|
retlw 0
|
|
retlw 96
|
|
retlw 1
|
|
;------------------------
|
|
retlw 59
|
|
retlw 0
|
|
retlw 48
|
|
retlw 2
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 235
|
|
retlw 0
|
|
;------------------------
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
|
|
retlw 74
|
|
retlw 0
|
|
retlw 111
|
|
retlw 0
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
|
|
retlw 62
|
|
retlw 0
|
|
retlw 132
|
|
retlw 0
|
|
|
|
retlw 59
|
|
retlw 0
|
|
retlw 140
|
|
retlw 0
|
|
|
|
retlw 46
|
|
retlw 0
|
|
retlw 176
|
|
retlw 0
|
|
;------------------------
|
|
retlw 52
|
|
retlw 0
|
|
retlw 215
|
|
retlw 1
|
|
|
|
retlw 79
|
|
retlw 0
|
|
retlw 105
|
|
retlw 0
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
|
|
retlw 79
|
|
retlw 0
|
|
retlw 105
|
|
retlw 0
|
|
;------------------------
|
|
retlw 83
|
|
retlw 0
|
|
retlw 41
|
|
retlw 1
|
|
|
|
retlw 52
|
|
retlw 0
|
|
retlw 157
|
|
retlw 0
|
|
|
|
retlw 59
|
|
retlw 0
|
|
retlw 140
|
|
retlw 0
|
|
|
|
retlw 70
|
|
retlw 0
|
|
retlw 118
|
|
retlw 0
|
|
;------------------------
|
|
retlw 79
|
|
retlw 0
|
|
retlw 210
|
|
retlw 0
|
|
|
|
retlw 79
|
|
retlw 0
|
|
retlw 210
|
|
retlw 0
|
|
|
|
retlw 2
|
|
retlw 0
|
|
retlw 68
|
|
retlw 22
|
|
|
|
;-----------------------------------------------------
|
|
; Inizio effettivo del programma.
|
|
; Vengono settate le porte A e B come ingressi,
|
|
; tranne il pin RB0 che e' un'uscita.
|
|
;-----------------------------------------------------
|
|
inizio bsf STATUS,RP0
|
|
movlw 00011111B
|
|
movwf TRISA
|
|
movlw 11111110B
|
|
movwf TRISB
|
|
bcf STATUS,RP0
|
|
|
|
call pl1
|
|
call pl2
|
|
call pl3
|
|
|
|
call pl1
|
|
call pl2
|
|
call pl3
|
|
|
|
call pl4
|
|
call pl5
|
|
|
|
call pl1
|
|
call pl2
|
|
call pl3
|
|
|
|
call pl6
|
|
|
|
sleep
|
|
|
|
;-----------------------------------------------------
|
|
; Suona 42 note leggendo i dati dalla tabella tabr1
|
|
; NCONT e' il contatore di note
|
|
; PTAB e' l'indice puntatore alla tabella
|
|
; Vengono caricati RITAR e RIPET e chiamata la
|
|
; subroutine qemit.
|
|
;-----------------------------------------------------
|
|
pl1 movlw 42
|
|
movwf NCONT ;42 note da suonare
|
|
clrf PTAB ;Indice tabella a zero
|
|
|
|
play1 call tabr1 ;Leggi valore
|
|
movwf RITAR ;Low byte ritardo onda
|
|
incf PTAB,f ;Punta all'elemento seguente
|
|
|
|
call tabr1
|
|
movwf RITAR+1 ;High byte ritardo onda
|
|
incf PTAB,f
|
|
|
|
call tabr1
|
|
movwf RIPET ;Low byte ripetiz.
|
|
incf PTAB,f
|
|
|
|
call tabr1
|
|
movwf RIPET+1 ;High byte ripetiz.
|
|
incf PTAB,f
|
|
|
|
call qemit ;Emissione onda quadra
|
|
|
|
decfsz NCONT,f
|
|
goto play1
|
|
return
|
|
|
|
;-----------------------------------------------------
|
|
; Suona 20 note leggendo i dati dalla tabella tabr2
|
|
;-----------------------------------------------------
|
|
pl2 movlw 20
|
|
movwf NCONT ;20 note da suonare
|
|
clrf PTAB ;Indice tabella a zero
|
|
|
|
play2 call tabr2 ;Leggi valore
|
|
movwf RITAR ;Low byte ritardo onda
|
|
incf PTAB,f ;Punta all'elemento seguente
|
|
|
|
call tabr2
|
|
movwf RITAR+1 ;High byte ritardo onda
|
|
incf PTAB,f
|
|
|
|
call tabr2
|
|
movwf RIPET ;Low byte ripetiz.
|
|
incf PTAB,f
|
|
|
|
call tabr2
|
|
movwf RIPET+1 ;High byte ripetiz.
|
|
incf PTAB,f
|
|
|
|
call qemit ;Emissione onda quadra
|
|
|
|
decfsz NCONT,f
|
|
goto play2
|
|
return
|
|
|
|
;-----------------------------------------------------
|
|
; Suona 5 note leggendo i dati dalla tabella tabr3
|
|
;-----------------------------------------------------
|
|
pl3 movlw 5
|
|
movwf NCONT ;5 note da suonare
|
|
clrf PTAB ;Indice tabella a zero
|
|
|
|
play3 call tabr3 ;Leggi valore
|
|
movwf RITAR ;Low byte ritardo onda
|
|
incf PTAB,f ;Punta all'elemento seguente
|
|
|
|
call tabr3
|
|
movwf RITAR+1 ;High byte ritardo onda
|
|
incf PTAB,f
|
|
|
|
call tabr3
|
|
movwf RIPET ;Low byte ripetiz.
|
|
incf PTAB,f
|
|
|
|
call tabr3
|
|
movwf RIPET+1 ;High byte ripetiz.
|
|
incf PTAB,f
|
|
|
|
call qemit ;Emissione onda quadra
|
|
|
|
decfsz NCONT,f
|
|
goto play3
|
|
return
|
|
|
|
;-----------------------------------------------------
|
|
; Suona 56 note leggendo i dati dalla tabella tabr4
|
|
;-----------------------------------------------------
|
|
pl4 movlw 56
|
|
movwf NCONT
|
|
clrf PTAB ;Indice tabella a zero
|
|
|
|
play4 call tabr4 ;Leggi valore
|
|
movwf RITAR ;Low byte ritardo onda
|
|
incf PTAB,f ;Punta all'elemento seguente
|
|
|
|
call tabr4
|
|
movwf RITAR+1 ;High byte ritardo onda
|
|
incf PTAB,f
|
|
|
|
call tabr4
|
|
movwf RIPET ;Low byte ripetiz.
|
|
incf PTAB,f
|
|
|
|
call tabr4
|
|
movwf RIPET+1 ;High byte ripetiz.
|
|
incf PTAB,f
|
|
|
|
call qemit ;Emissione onda quadra
|
|
|
|
decfsz NCONT,f
|
|
goto play4
|
|
return
|
|
|
|
;-----------------------------------------------------
|
|
; Suona 9 note leggendo i dati dalla tabella tabr5
|
|
;-----------------------------------------------------
|
|
pl5 movlw 9
|
|
movwf NCONT
|
|
clrf PTAB ;Indice tabella a zero
|
|
|
|
play5 call tabr5 ;Leggi valore
|
|
movwf RITAR ;Low byte ritardo onda
|
|
incf PTAB,f ;Punta all'elemento seguente
|
|
|
|
call tabr5
|
|
movwf RITAR+1 ;High byte ritardo onda
|
|
incf PTAB,f
|
|
|
|
call tabr5
|
|
movwf RIPET ;Low byte ripetiz.
|
|
incf PTAB,f
|
|
|
|
call tabr5
|
|
movwf RIPET+1 ;High byte ripetiz.
|
|
incf PTAB,f
|
|
|
|
call qemit ;Emissione onda quadra
|
|
|
|
decfsz NCONT,f
|
|
goto play5
|
|
return
|
|
|
|
;-----------------------------------------------------
|
|
; Suona 50 note leggendo i dati dalla tabella tabr6
|
|
;-----------------------------------------------------
|
|
pl6 movlw 50
|
|
movwf NCONT
|
|
clrf PTAB ;Indice tabella a zero
|
|
|
|
play6 call tabr6 ;Leggi valore
|
|
movwf RITAR ;Low byte ritardo onda
|
|
incf PTAB,f ;Punta all'elemento seguente
|
|
|
|
call tabr6
|
|
movwf RITAR+1 ;High byte ritardo onda
|
|
incf PTAB,f
|
|
|
|
call tabr6
|
|
movwf RIPET ;Low byte ripetiz.
|
|
incf PTAB,f
|
|
|
|
call tabr6
|
|
movwf RIPET+1 ;High byte ripetiz.
|
|
incf PTAB,f
|
|
|
|
call qemit ;Emissione onda quadra
|
|
|
|
decfsz NCONT,f
|
|
goto play6
|
|
return
|
|
|
|
;-----------------------------------------------------
|
|
; Emissione onda quadra da pin RB0.
|
|
; Input: RITAR ritardo onda quadra
|
|
; RIPET ripetizioni onda quadra
|
|
; Si calcola DRITAR che e' il valore di RITAR
|
|
; diminuito di 1 (per avere un duty cycle 50%)
|
|
;-----------------------------------------------------
|
|
qemit movf RITAR+1,w ;Trasferisce RITAR in
|
|
movwf DRITAR+1 ;DRITAR e decrementa
|
|
decf RITAR,w ;di 1
|
|
movwf DRITAR
|
|
incf DRITAR,w
|
|
btfsc STATUS,z
|
|
decf DRITAR+1,f
|
|
|
|
qemit1 bsf PORTB,0 ;Bit out a 1
|
|
movf RITAR,w
|
|
movwf RDEL
|
|
movf RITAR+1,w
|
|
movwf RDEL+1
|
|
|
|
call delay ;Ritardo on
|
|
|
|
bcf PORTB,0 ;Bit out a 0
|
|
movf DRITAR,w
|
|
movwf RDEL
|
|
movf DRITAR+1,w
|
|
movwf RDEL+1
|
|
|
|
call delay ;Ritardo off
|
|
|
|
decf RIPET,f
|
|
incf RIPET,w
|
|
btfsc STATUS,z
|
|
decf RIPET+1,f
|
|
movf RIPET,w
|
|
iorwf RIPET+1,w
|
|
btfss STATUS,z
|
|
goto qemit1
|
|
return
|
|
|
|
;-----------------------------------------------------
|
|
; Routine di ritardo per onda quadra
|
|
; Input RDEL (valore a 16 bit formato low/high)
|
|
;-----------------------------------------------------
|
|
delay decf RDEL,f
|
|
incf RDEL,w
|
|
btfsc STATUS,z
|
|
decf RDEL+1,f
|
|
movf RDEL,w
|
|
iorwf RDEL+1,w
|
|
btfss STATUS,z
|
|
goto delay
|
|
return
|
|
;-----------------------------------------------------
|
|
END
|