Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Обработка прерываний по совпадению для отсчета интервала времени

в 1 секунду. Пороговое число: 43200; коэффициент делителя clk/256; число совпадений 1


.include "m128def.inc"

.equ CS_clk256 = 0x04; коэф.делителя

.equ cycles = 1; число переполнений

.equ presetup = 0; предварительная уст.сч.

.equ comp_value = 43200

.def temp = R16; рег.временного хранения

.def key_code = R17; код нажатой кл.

.def ovf_count = r18; счетчик совпадений

jmp RESET

.org $0018

jmp T1_COMPA; вектор прер.по совп. АТ1

.org $0046

RESET:

; инициализация стека

ldi temp,high(RAMEND)

out SPH,temp

ldi temp, low(RAMEND)

out SPL,temp

; инициализация порта В(кнопки В0-В2)

ldi temp,0xE0

out PORTB, temp; подтяжка 11100000

ldi temp, 0x00

out DDRB,temp; все выводы приемники

;инициализация порта Д

ldi temp,0xFF

out PORTD,temp; все диоды погашены

out DDRD,temp

; инициализация переменных

ldi ovf_count,0

ldi key_code,0

;инициализация таймера счетчика Т1

ldi temp,high(presetup)

out TCNT1H,temp

ldi temp,low(presetup)

out TCNT1L,temp

;инициализация регистра сравнения

ldi temp,high(comp_value)

out OCR1AH,temp

ldi temp,low(comp_value)

out OCR1AL,temp

ldi temp, (1<<OCIE1A)

out TIMSK,temp; разрешение прер.по совп.

Sei

ldi temp, (1<<CS12); clk /256

out TCCR1B,temp

Main:

in temp,PINB

andi temp,0xE0

sbrs temp,7

ldi key_code,4

sbrs temp,6

ldi key_code,2

sbrs temp,5

ldi key_code,1

rjmp Main

T1_COMPA:

inc ovf_count

sbrc ovf_count,5

rjmp bit_is_set

sbi PORTD,6

rjmp go_on

bit_is_set:

cbi PORTD,6

go_on:

cpi ovf_count,cycles

brne exit_int

com key_code

out PORTD,key_code

clr key_code

clr ovf_count

exit_int:

reti


 

 

Алгоритм работы программы:

 

Алгоритм обработки прерываний:

2) Программа по обнулению:


.include "m128def.inc"

.equ cycles = 42;chislo perepolneniya do 2 sek.

.equ presetup = 0;nachalo yst. t\ch=1

.def temp = R16

.def key_code = R17;kod nawatoyi clavishi

.def ovf_count = R18;chetchit perepolnen

; segment vectorov prerivaniya

jmp RESET

.org $001C

jmp T1_OVF

.org $0046; segment osnovnogo koda

RESET:

; initcializ steka

ldi temp, high(RAMEND)

out SPH, temp

ldi temp, low(RAMEND)

out SPL, temp

;iniz porta B

ldi temp, 0xE0

out PORTB, temp

ldi temp, 0x00

out DDRB, temp

;inizializatciya porta D(diodi)

ldi temp, 0xFF

out PORTD, temp

out DDRD, temp

;iniz global. peremennix

ldi ovf_count, 0

ldi key_code, 0

;iniz t\ch 1

ldi temp, high (presetup)

out TCNT1H, temp

ldi temp, low (presetup)

out TCNT1L, temp

;clk/8: CS1(2:0) = {010}

ldi temp, (1<<TOIE1)

out TIMSK, temp

sei

ldi temp, (1<<CS11)

out TCCR1B, temp

MAIN:

;chitivanie i fikcaciya koda nawatoi klavishi

in temp, PINB

andi temp, 0xE0

sbrs temp, 7

ldi key_code, 4

sbrs temp, 6

ldi key_code, 2

sbrs temp, 5

ldi key_code, 1

rjmp MAIN

;obrabotka preriv po perepopl T1

T1_OVF:

; indicator raboti t/ch 1

inc ovf_count

sbrc ovf_count, 5

rjmp go_on

bit_is_set:

cbi PORTD, 7

go_on:

cpi ovf_count, cycles

brne exit_int

com key_code

out PORTD,key_code

clr key_code

clr ovf_count

exit_int:

reti



Программа №3:

 


.include "m128def.inc"

.equ CS_clk256 = 0x04

.equ cycles = 1

.equ presetup = 43936

.equ comp_value = 43200

.def temp = R16

.def key_code = R17

.def ovf_count = r18

jmp RESET

.org $001c

jmp T1_OVF

.org $0046

RESET:

ldi temp,high(RAMEND)

out SPH,temp

ldi temp, low(RAMEND)

out SPL,temp

ldi temp,0xE0

out PORTB, temp

ldi temp, 0x00

out DDRB,temp

ldi temp,0xFF

out PORTD,temp

out DDRD,temp

ldi ovf_count,0

ldi key_code,0

ldi temp,high(presetup)

out TCNT1H,temp

ldi temp,low(presetup)

out TCNT1L,temp

;ldi temp,high(comp_value)

;out OCR1AH,temp

;ldi temp,low(comp_value)

;out OCR1AL,temp

ldi temp, (1<<TOIE1)

out TIMSK,temp

sei

ldi temp, (1<<CS12|1<<CS10)

out TCCR1B,temp

Main:

in temp,PINB

andi temp,0xE0

sbrs temp,7

ldi key_code,4

sbrs temp,6

ldi key_code,2

sbrs temp,5

ldi key_code,1

rjmp Main

T1_OVF:

inc ovf_count

sbrc ovf_count,5

rjmp bit_is_set

sbi PORTD,6

rjmp go_on

bit_is_set:

cbi PORTD,6

go_on:

cpi ovf_count,cycles

brne exit_int

com key_code

out PORTD,key_code

clr key_code

clr ovf_count

exit_int:

ldi R19,high(presetup)

out TCNT1H,R19

ldi R19,low(presetup)

out TCNT1L,R19

reti


 

 

Вывод: входе лабораторной работы были изучены основные принципы программирования таймера /счетчика Т1 в различных режимах его работы, а так же построен алгоритм работы программы прерывания по совпадению.

 

 



<== предыдущая лекция | следующая лекция ==>
Міжнародна передача технологій: вплив науково технічного прогресу на розвиток світового господарства, світовий ринок технологій, державне регулювання передачі технологій | Тереза Ракен» (1867) – манифест натурализма
Поделиться с друзьями:


Дата добавления: 2017-02-28; Мы поможем в написании ваших работ!; просмотров: 258 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Начинать всегда стоит с того, что сеет сомнения. © Борис Стругацкий
==> читать все изречения...

2359 - | 2118 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.014 с.