Главная  Микроконтроллеры 

[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

PBO/AINO

PB1/AIN1

PD2/INTO РВ2

Р04ЯО

PB5/MOSI

PB6/MISO

PB7/SCK

XTAL1

XTAL2 reset


Рис. 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

tmp,Z+

tmp,TimeO

breq

tmp.Z+

tmp.Timel

breq

tmp,Z+

brtc

NoMath

tem,tmp

tem,Time2

andi

tem,15

brne

NoHath

tem,tmp

endi

tem.$F0

tem,$00

brne

OffO

PORTB,0

OffO:

tem,$10

brne

PORTB,0

OnO:

tem,$20

brne

Offi

PORTB,1

Offi:

tem,$30

brne

PORTB,1

Oni:

tem.$40

brne

0ff2

PORTB. 2

0ff2:

tem,$50

brne

PORTB,2

0n2:

tem.$60

brne

0ff3

PORTB. 3

0ff3:

tem,$70

brne

PORTB,3

ОпЗ:

tem,$80

brne

0ff4

PORTB.4

0ff4:

tem,$90

brne

PORTB,4

0n4:

tem,$A0

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.144