![]() |
Главная Микроконтроллеры [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] 6.14. Таймер 1. Краткое описание и назначение прибора Таймер представляет собой электронное устройство для включения и выключения в заданное время в соответствии с расписанием подключенных к нему электроприборов. Расписание набирается с помощью специальной программы на компьютере, а затем загружается в таймер через последовательный порт. В качестве корпуса лучше всего подходит удлинитель с несколькими розетками. 2. Схема конструкции показана на рис. 6.16. 3. Программа Для компилирования программы использовался AVR macro assembler version 1.21 и файл 2313def.inc с описанием периферии микроконтроллера, оба они доступны на сайте Atmel. Программа может быть перенесена для работы с другими микроконтроллерами семейства AVR. Для этого замените файл.1пс, а константе ENDDATAAREA присвойте новое значение в соответствии с размером доступной памяти. Текст программы: .INCLUDE ••2313def.inc" ; © 8 МГц . DEF tmp=rO .DEF SSREG=r1 .DEF tem=r25 .DEF temp=r26 .DEF TheByte=r27 .DEF TimeO=r16 .DEF Time1=r17 .DEF Tine2=r18 При работающей программе микроконтроллера на выводе 17 должны быть импульсы с частотой около мегагерца - это сделано для упрощения отладки. После включения питания все порты переводятся в третье состояние. Комплект программ для этой конструкции находится на компакт диске, прилагаемом к книге. Автор: Сафонников В. В. (E-mail: sw@ufanet.ru). ![]() D3 AT90S2313 Нафуэха 1
![]() Рис. 6.16. Электрическая принципиальная схема .DEF TimeA=r19 .DEF TimeB=r20 .DEF Flags=r21 .EOU END DATA AREA=$DB ; 41 запись общей длиной 123 байта .CSEG .ORG О rjmp Reset .ORG OCIaddr ORG OVFIaddr in SSREG.SREG ; $0004 : $0005 inc TimeO brne NoOvf inc Timel brne NoOvf inc Time2 NoOvf: Idi r30,$60 LoopCheck: Г31.0
Loop of verify time for all records Флаг T указывает на совпадение текущего и заданного времени Чтение младшего байта времени Чтение среднего байта времени Чтение последней тетрады времени (биты 0-3) и типа события (биты 4-7) Время совпало, выполняем заданное действие Отключение канала О Включение канала О Отключение канала 1 [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.001 |