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

[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]

brre

Off5

PORTB.5

; Отключение канала 5

Off5; cpi

tem,$80

brne

PORTB,5

; Включение канала 5

On5: cpi

teni,$CO

brne

0ff6

andi

Flags, $FE

; Отключение канала 6 (используется как будильник)

0ff6: cpi

tem,$D0

brne

Flags.1

, Включение канала 6

0n7. cpi

tem.$E0

breq

TimeReset

: Обнуление счетчика времени

tem.$F0

brne

NoMath

TimeReset:

; Если биты 4-7 равны 1, то сбрасываем счетчик времени

TimeO

Timel

Time2

NoMath:

r30,END DATA AREA

breq

Loop Check

rjinp

LoopCheck

Loop Check.

; Включение секундного светодиода

TimeB

PORTB,7

SREG,SSREG

reti

Reset:

; Установка указателя стека на наксинальный адрес SRAM

r30,$DF

SPL,гЗО

; Настройка направления работы линий порта В

гЗО,$FF

DDRB,гЗО

гЗО.$7Е

DDRD,гЗО

Режим работы таймера 1 со сбросом и прерыванием при совпадении Частота прерываний равна 8 ООО ООО / 256 / 31250 (7А12) = 1 Гц

r30,12

TCCR1B, гЗО

гЗО,$7А

0CR1AH, гЗО

г30.$12

0CR1AL.гЗО

г30.$С0

TIMSK.гЗО

Настройка WDT на 2 секунды



гЗО,$05

$60,гЗО

г30,$00

$61,г30

г30,$10

$62.гЗО

гЗО,$07

$63.г30

г30.$00

$64,гЗО

гЗО,$00

$65,гЗО

г30,$0Р

$66,гЗО

гЗО,$00

$67,гЗО

г30,$10

$68.гЗО

Flags

UnlessLoop:

rcall GetByte ; Прием сообщения говорящего о начале данных

cpi TheByte, Т

brne UnlessLoop

rcall GetByte

cpi TheByte,i

brne UnlessLoop

rcall GetByte

cpi TheByte,m

brne UnlessLoop

rcall GetByte

cpi TheByte,e

brne UnlessLoop

rcall GetByte

cpi TheByte, r

Idi гЗО,$0F out WDTCR. гЗО

; Настройка UART на прием с параметрами 9600 8N1

Idi гЗО,$18

out UCR,гЗО

Idi гЗО,$33

out UBRR,r30

; Обнуление счетчика времени

clr TimeO

clr Timel

clr Time2

; Задание тестовых точек включения (после отладки схемы убрать)



brne UnlessLoop

clr TimeO

clr Tlmel

clr Time2

Idi r28.$60

Idi Г29.0 LoopRX:

rcall GetByte

St Y+,TheByte

cpi r28,END DATA AREA

brio LoopRX

rjmp UnlessLoop

ser TimeO

ser Timel

ser Time2 Idi r28,$10 out TCNT1L,r28 Idl r28,$7A out TCNT1H, r28

Обнуление счетчиков времени

Чтение байта данных

Сохранение считанного байта в памяти

; Обнуление счетчиков времени

; Процедура ; Программа GetByte:

чтения байта с UART

все свое свободное время находится внутри нее

; Сброс сторожевого таймера

TimeA

; Увеличение асинхронного счетчика времени

brne

Early

TimeB

brne

Early

PORTB.7

; Выключение секундного светодиода

sbrs

Flags,0

rjmp

NoBell

temp,TimeB

; Звуковой сигнал включен

andi

temp.$E7

breq

NoBell

sbis

PORTB,6

; Инвертирование состояния вывода РВ.6

rjmp

NoCBI

PORTB,6

rjmp

NoBell

sbi PORTB,6

NoBell:

sbis rjmp in ret

USR,RXC GetByte TheByte,UDR

Протокол управления таймером

Формат загрузки расписания управления каналами от компьютера

• Настройки порта 9600 8N1

• Загрузка производится одним блоком, состоящим из 41-й записи



[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.0021