Музыкальный звонок

Схема

Ноты и паузы
Beep_C:              ; До: 1.911079 ms.
Beep_C_diez:         ; До#: 1.803824 ms.
Beep_D:              ; Ре: 1.702588 ms.
Beep_D_diez:         ; Ре#: 1.6070334 ms.
Beep_E:              ; Ми: 1.516842 ms.
Beep_F:              ; Фа: 1.431712 ms.
Beep_F_diez:         ; Фа#: 1.351360 ms.
Beep_G:              ; Соль: 1.275518 ms.
Beep_G_diez:         ; Соль#: 1.203932 ms.
Beep_A:              ; Ля: 1.136363 ms.
Beep_A_diez:         ; Ля#: 1.072587 ms.
Beep_B:              ; Си: 1.012391 ms.
Beep_C2:             ; До следующей октавы: 0.955572 ms.
Beep_C2_diez:        ; До# следующей октавы: 0.901943 ms.
Beep_D2:             ; Ре следующей октавы: 0.85132 ms.
Beep_Separator:      ; Разделитель
Beep_Pause:          ; Пауза


Текст программы микроконтроллера


.include "c:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\m8535def.inc"
.def  fCOUNTER        =r16   ;счетчик1
.def  fCOUNTER2       =r17   ;счетчик2
.def  fBEEP_CNT       =r18   ;счетчик пищания
.equ  BEEPER          =7     ;пьезодинамик

;**************************************************************************************
.MACRO outi
    ldi r16,@1
    out @0,r16
.ENDMACRO
;**************************************************************************************
.org 0
RESET:
        outi SPH,HIGH(RAMEND)                               
        outi SPL,LOW(RAMEND)
        outi PORTC,0x00
        outi DDRC,0xFF             ;все линии порта С выходы
MainLoop:
        rcall Ulitka
rjmp MainLoop
;-----------------------------------------------------------------------------
delay:
        mov fCOUNTER,r19
d_loop:
        dec fCOUNTER
        brne d_loop
ret
;--------------------------------------------------------------------------
Big_delay:
        mov     fCOUNTER2,r19
        clr     fCOUNTER
BD_loop:
        dec     fCOUNTER
        brne    BD_loop
        dec     fCOUNTER2
        brne    BD_loop
        ret
;-----------------------------------------------------------------------------
; Музыкальные процедуры.
;-----------------------------------------------------------------------------
Beep_C: ; До: 1.911079 ms. 1911 cycles.
        ldi     fBEEP_CNT,52
BC_BeepLoop:
        sbi     PORTC,BEEPER
        ldi     r19,2
        rcall   Big_delay
        ldi     r19,117
        rcall   delay
        cbi     PORTC,BEEPER
        ldi     r19,2
        rcall   Big_delay
        ldi     r19,116
        rcall   delay
        dec     fBEEP_CNT
        brne    BC_BeepLoop
        ret
;-----------------------------------------------------------------------------
Beep_C_diez: ; До#: 1.803824 ms. 1805 cycles.
        ldi     fBEEP_CNT,55
BCd_BeepLoop:
        sbi     PORTC,BEEPER
        ldi     r19,2
        rcall   Big_delay
        ldi     r19,82
        rcall   delay
        cbi     PORTC,BEEPER
        ldi     r19,2
        rcall   Big_delay
        ldi     r19,81
        rcall   delay
        dec     fBEEP_CNT
        brne    BCd_BeepLoop
        ret
;-----------------------------------------------------------------------------
Beep_D: ; Ре: 1.702588 ms. 1703 cycles.
        ldi     fBEEP_CNT,59
BD_BeepLoop:
        sbi     PORTC,BEEPER
        ldi     r19,2
        rcall   Big_delay
        ldi     r19,48
        rcall   delay
        cbi     PORTC,BEEPER
        ldi     r19,2
        rcall   Big_delay
        ldi     r19,47
        rcall   delay
        dec     fBEEP_CNT
        brne    BD_BeepLoop
        ret
;-----------------------------------------------------------------------------
Beep_D_diez: ; Ре#: 1.6070334 ms. 1607 cycles.
        ldi     fBEEP_CNT,62
BDd_BeepLoop:
        sbi     PORTC,BEEPER
        ldi     r19,2
        rcall   Big_delay
        ldi     r19,16
        rcall   delay
        cbi     PORTC,BEEPER
        ldi     r19,2
        rcall   Big_delay
        ldi     r19,15
        rcall   delay
        dec     fBEEP_CNT
        brne    BDd_BeepLoop
        ret
;-----------------------------------------------------------------------------
Beep_E: ; Ми: 1.516842 ms. 1517 cycles.
        ldi     fBEEP_CNT,66
BE_BeepLoop:
        sbi     PORTC,BEEPER
        ldi     r19,0
        rcall   delay
        ldi     r19,244
        rcall   delay
        cbi     PORTC,BEEPER
        ldi     r19,0
        rcall   delay
        ldi     r19,243
        rcall   delay
        dec     fBEEP_CNT
        brne    BE_BeepLoop
        ret
;-----------------------------------------------------------------------------
Beep_F: ; Фа: 1.431712 ms. 1432 cycles.
        ldi     fBEEP_CNT,70
BF_BeepLoop:
        sbi     PORTC,BEEPER
        ldi     r19,0
        rcall   delay
        ldi     r19,215
        rcall   delay
        cbi     PORTC,BEEPER
        ldi     r19,0
        rcall   delay
        ldi     r19,214
        rcall   delay
        dec     fBEEP_CNT
        brne    BF_BeepLoop
        ret
;-----------------------------------------------------------------------------
Beep_F_diez: ; Фа#: 1.351360 ms. 1351 cycles.
        ldi     fBEEP_CNT,74
BFd_BeepLoop:
        sbi     PORTC,BEEPER
        ldi     r19,0
        rcall   delay
        ldi     r19,188
        rcall   delay
        cbi     PORTC,BEEPER
        ldi     r19,0
        rcall   delay
        ldi     r19,187
        rcall   delay
        dec     fBEEP_CNT
        brne    BFd_BeepLoop
        ret
;-----------------------------------------------------------------------------
Beep_G: ; Соль: 1.275518 ms. 1275 cycles.
        ldi     fBEEP_CNT,78
BG_BeepLoop:
        sbi     PORTC,BEEPER
        ldi     r19,0
        rcall   delay
        ldi     r19,163
        rcall   delay
        cbi     PORTC,BEEPER
        ldi     r19,0
        rcall   delay
        ldi     r19,162
        rcall   delay
        dec     fBEEP_CNT
        brne    BG_BeepLoop
        ret
;-----------------------------------------------------------------------------
Beep_G_diez: ; Соль#: 1.203932 ms. 1204 cycles.
        ldi     fBEEP_CNT,83
BGd_BeepLoop:
        sbi     PORTC,BEEPER
        ldi     r19,0
        rcall   delay
        ldi     r19,139
        rcall   delay
        cbi     PORTC,BEEPER
        ldi     r19,0
        rcall   delay
        ldi     r19,138
        rcall   delay
        dec     fBEEP_CNT
        brne    BGd_BeepLoop
        ret
;-----------------------------------------------------------------------------
Beep_A: ; Ля: 1.136363 ms. 1136 cycles.
        ldi     fBEEP_CNT,88
BA_BeepLoop:
        sbi     PORTC,BEEPER
        ldi     r19,0
        rcall   delay
        ldi     r19,117
        rcall   delay
        cbi     PORTC,BEEPER
        ldi     r19,0
        rcall   delay
        ldi     r19,116
        rcall   delay
        dec     fBEEP_CNT
        brne    BA_BeepLoop
        ret
;-----------------------------------------------------------------------------
Beep_A_diez: ; Ля#: 1.072587 ms. 1073 cycles.
        ldi     fBEEP_CNT,93
BAd_BeepLoop:
        sbi     PORTC,BEEPER
        ldi     r19,0
        rcall   delay
        ldi     r19,96
        rcall   delay
        cbi     PORTC,BEEPER
        ldi     r19,0
        rcall   delay
        ldi     r19,95
        rcall   delay
        dec     fBEEP_CNT
        brne    BAd_BeepLoop
        ret
;-----------------------------------------------------------------------------
Beep_B: ; Си: 1.012391 ms. 1012 cycles.
        ldi     fBEEP_CNT,99
BB_BeepLoop:
        sbi     PORTC,BEEPER
        ldi     r19,0
        rcall   delay
        ldi     r19,75
        rcall   delay
        cbi     PORTC,BEEPER
        ldi     r19,0
        rcall   delay
        ldi     r19,74
        rcall   delay
        dec     fBEEP_CNT
        brne    BB_BeepLoop
        ret
;-----------------------------------------------------------------------------
Beep_C2: ; До следующей октавы: 0.955572 ms. 956 cycles.
        ldi     fBEEP_CNT,105
BC2_BeepLoop:
        sbi     PORTC,BEEPER
        ldi     r19,0
        rcall   delay
        ldi     r19,57
        rcall   delay
        cbi     PORTC,BEEPER
        ldi     r19,0
        rcall   delay
        ldi     r19,56
        rcall   delay
        dec     fBEEP_CNT
        brne    BC2_BeepLoop
        ret
;-----------------------------------------------------------------------------
Beep_C2_diez: ; До# следующей октавы: 0.901943 ms. 902 cycles.
        ldi     fBEEP_CNT,111
BC2d_BeepLoop:
        sbi     PORTC,BEEPER
        ldi     r19,0
        rcall   delay
        ldi     r19,39
        rcall   delay
        cbi     PORTC,BEEPER
        ldi     r19,0
        rcall   delay
        ldi     r19,38
        rcall   delay
        dec     fBEEP_CNT
        brne    BC2d_BeepLoop
        ret
;-----------------------------------------------------------------------------
Beep_D2: ; Ре следующей октавы: 0.85132 ms. 851 cycles.
        ldi     fBEEP_CNT,118
BD2_BeepLoop:
        sbi     PORTC,BEEPER
        ldi     r19,0
        rcall   delay
        ldi     r19,22
        rcall   delay
        cbi     PORTC,BEEPER
        ldi     r19,0
        rcall   delay
        ldi     r19,21
        rcall   delay
        dec     fBEEP_CNT
        brne    BD2_BeepLoop
        ret
;-----------------------------------------------------------------------------
Beep_Separator:
        ldi     r19,10
        rcall   Big_delay
        ret
;-----------------------------------------------------------------------------
Beep_Pause:
        ldi     fBEEP_CNT,118
BP_BeepLoop:
        ldi     r19,0
        rcall   delay
        ldi     r19,22
        rcall   delay
        ldi     r19,0
        rcall   delay
        ldi     r19,21
        rcall   delay
        dec     fBEEP_CNT
        brne    BP_BeepLoop
        ret
;-----------------------------------------------------------------------------
Ulitka:
        rcall   Beep_G
        rcall   Beep_E
        rcall   Beep_A
        rcall   Beep_A
        rcall   Beep_G
        rcall   Beep_G
        rcall   Beep_D
        rcall   Beep_F
        rcall   Beep_E
        rcall   Beep_D
        rcall   Beep_C
        rcall   Beep_C
        rcall   Beep_C
        rcall   Beep_C
        rcall   Beep_Pause
        rcall   Beep_Pause
        rcall   Beep_E
        rcall   Beep_G
        rcall   Beep_A
        rcall   Beep_Separator
        rcall   Beep_A
        rcall   Beep_Separator
        rcall   Beep_A
        rcall   Beep_Separator
        rcall   Beep_B
        rcall   Beep_D2
        rcall   Beep_C2
        rcall   Beep_B
        rcall   Beep_A
        rcall   Beep_C2
        rcall   Beep_C2
        rcall   Beep_G
        rcall   Beep_G
        rcall   Beep_Pause
        rcall   Beep_Pause
        rcall   Beep_A
        rcall   Beep_B
        rcall   Beep_C2
        rcall   Beep_C2
        rcall   Beep_C2
        rcall   Beep_B
        rcall   Beep_A
        rcall   Beep_E
        rcall   Beep_G
        rcall   Beep_F
        rcall   Beep_A
        rcall   Beep_A
        rcall   Beep_A
        rcall   Beep_A
        rcall   Beep_Pause
        rcall   Beep_Pause
        rcall   Beep_B
        rcall   Beep_A
        rcall   Beep_C2
        rcall   Beep_G
        rcall   Beep_B
        rcall   Beep_A
        rcall   Beep_Separator
        rcall   Beep_A
        rcall   Beep_G
        rcall   Beep_D
        rcall   Beep_E
        rcall   Beep_D
        rcall   Beep_D
        rcall   Beep_C
        rcall   Beep_C
        rcall   Beep_Pause
        rcall   Beep_Pause
        rcall   Beep_Separator
        rcall   Beep_C
        rcall   Beep_D_diez
        rcall   Beep_G
        rcall   Beep_Separator
        rcall   Beep_G
        rcall   Beep_Separator
        rcall   Beep_G
        rcall   Beep_Separator
        rcall   Beep_G
        rcall   Beep_Separator
        rcall   Beep_G
        rcall   Beep_Pause
        rcall   Beep_C2
        rcall   Beep_C
        rcall   Beep_D_diez
        rcall   Beep_D
        rcall   Beep_Separator
        rcall   Beep_D
        rcall   Beep_Separator
        rcall   Beep_D
        rcall   Beep_Separator
        rcall   Beep_D
        rcall   Beep_Pause
        rcall   Beep_D
        rcall   Beep_D_diez
        rcall   Beep_G
        rcall   Beep_F
        rcall   Beep_G
        rcall   Beep_G_diez
        rcall   Beep_G
        rcall   Beep_F
        rcall   Beep_G
        rcall   Beep_G_diez
        rcall   Beep_C2
        rcall   Beep_C2
        rcall   Beep_A_diez
        rcall   Beep_A_diez
        rcall   Beep_A_diez
        rcall   Beep_A_diez
        rcall   Beep_C2
        rcall   Beep_G
        rcall   Beep_A_diez
        rcall   Beep_G_diez
        rcall   Beep_Separator
        rcall   Beep_G_diez
        rcall   Beep_Separator
        rcall   Beep_G_diez
        rcall   Beep_Separator
        rcall   Beep_G_diez
        rcall   Beep_Pause
        rcall   Beep_C2
        rcall   Beep_F
        rcall   Beep_G_diez
        rcall   Beep_G
        rcall   Beep_Separator
        rcall   Beep_G
        rcall   Beep_Separator
        rcall   Beep_G
        rcall   Beep_Separator
        rcall   Beep_G
        rcall   Beep_Pause
        rcall   Beep_C2
        rcall   Beep_D_diez
        rcall   Beep_D
        rcall   Beep_D_diez
        rcall   Beep_F
        rcall   Beep_G_diez
        rcall   Beep_G
        rcall   Beep_F
        rcall   Beep_D_diez
        rcall   Beep_F
        rcall   Beep_G
        rcall   Beep_G
        rcall   Beep_C
        rcall   Beep_C
        rcall   Beep_Pause
        rcall   Beep_Pause
ret


Скачать файлы проекта для AVR Studio 4 и модель для Proteus 7.6 (40,0 КБ)