Главная Микроконтроллеры [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [ 68 ] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] Idi BeepDuration,2*DURAriON/NoTe mi1 rcall Beep Del ;1 m 1/8 Idi FreqConst,Note mi1 Idi BeepDuration,2.DURATI0N/Note mi1 rcall Beep Del : 1 фа 3/8 Idi FreqConst,Note fa1 Idi BeepDuration,6-DURAT10N/Note fa1 rcall Beep Del ;1 ии 1/8 Idi FreqConst,Note mi1 Idi BeepDuration,2«DURATI0N/Note mi1 rcall Beep Del : 1 фа 3/8 Idi FreqConst,Note fa1 Idi BeepDuration,6.DURATI0N/Note fa1 rcall Beep Del ;1 ми 1/16 (1/8) Idi FreqConst,Note mi1 Idi BeepDuration,2*DURATI0N/Note mi1 rcall Beep Del :1 pe 1/8 Idi FreqConst.Note re1 Idi BeepDuration,2.DURATI0N/Note re1 rcall Beep Del -.1 до 1/8 Idi FreqConst,Note do1 Idi BeepDuration,2*DURATI0N/Note do1 rcall Beep Del ;1 си 1/4 Idi FreqConst,Note ciO Idi BeepDuration,4.DURATI0N/Note ci0 rcall Beep Del ;1 соль 1/4 Idi FreqConst,Note sol1 Idi BeepDuration.4*DURATI0N/Note sol1 rcall Beep Del ; 1 фа 3/8 Idi FreqConst.Note fal Idi BeepDuration.6*DURAT10N/Note fa1 rcall Beep Del ;1 фа 1/8 Idi FreqConst.Note fa1 Idi BeepDuration.2.DURATI0N/Note fa1 rcall Beep Del ; 1 ми 3/8 Idi FreqConst.Note mi1 Idi BeepDuration,6«DURATI0N/Note mi1 rcall Beep Del ; 1 ми 1/6 Idi FreqConst.Note mi1 Idi BeepDuration,3«DURATI0N/Note mi1 rcall Beep Del :1 ми 1/8 Idi FreqConst,Note mi1 Idi BeepDuration,2.DURATI0N/Note mi1 rcall Beep Del ;1 фа 1/8 Idi FreqConst,Note fal Idi BeepDuration,2.DURATI0N/Note fa1 rcall Beep Del ;1 ми 1/8 Idi FreqConst.Note.mil Idi BeepDuration,2.DURATI0N/Note mi1 rcall Beep 0el ;0 си 1/8 Idi FreqConst.Note.ciO Idi BeepDuration, 2.DURATI0N/Note ci0 rcall Beep Del ;1 pe 1/8 Idi FreqConst.Note.rel Idi BeepDuration,2.DURATI0N/Note re1 rcall Beep Del :1 фа 1/8 Idi FreqConst,Note fa1 Idi BeepDuration,2«DURATI0N/Note fa1 rcall Beep.Del ;1 ми 5/8 Idi FreqConst, Note mi1 Idi BeepDuration,10*DURATI0N/Note mi1 rcall Beep Del rjmp EndRing SimpleRing: ; Проигрываем простую мелодию Idi FreqConst,Note 7 Idi BeepDuration, 1 rcall Beep Idi FreqConst.Note 5 Idi BeepDuration, 1 rcall Beep Idi FreqConst, Note 3 Idi BeepDuration, 1 rcall Beep Idi FreqConst,Note 5 Idi BeepDuration, 1 rcall Beep EndRing: clt ; Сбрасываем флаг нажатия клавиши NoRing: ret Beep Del: Idi Del2: clr Dell: dec brne dec brne cli rjmp ; Короткая пауза перед нотой и сама нота BeepVar,50 DelayVar DelayVar Dell BeepVar Del2 Beep Сканирование клавиатуры: установка на выходных линиях заданного кода и прием ответа вызывается из функции GetKey GetKeyAnswer: mov Key,г31 andi Key, $0F out PORTB,Key clr DelayVar Delayl: dec DelayVar brne Delayl in Key,PINB com Key andi Key,$70 ; Если что-то было найдено, флаг Z не нулевой ; Запись события EventType в текущую ячейку EEPROM памяти и обнуление времени WrireEEPROM: Поиск последней записи clr Idi FindNextAdr: EEadr,2
Пока не сработал таймер, читающий из EEPROM (через 300 мс), все операции должны быть завершены Если дошли до 64-го адреса, начинаем с начала Ждем обнуления бита EEWE Подготавпиваем адрес Устанавливаем бит для синхронизации Дважды Читаем данные Если было 256 неудачных попыток найти бит -признак последней записи, значит, его нет вообще, значит, пишем по любому адресу [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [ 68 ] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] 0.0019 |