Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2013, 12:46   #1
Eshik v tumane
Пользователь
 
Регистрация: 14.10.2012
Сообщений: 10
По умолчанию Звук разной частоты, assembler, atmega16

Здравствуйте. Есть задание: 7. Написать программу для циклического отображения на семисегментном индикаторе цифр по возрастанию от 0 до F. Каждый счет должен сопровождаться звуковым сигналом с увеличивающейся частотой. Перебор цифр мне удалось реализовать, также есть звуковой сигнал, но его частота не меняется при счёте. Прошу помочь реализовать это. Вот код:

Код:

.include "m16def.inc"

jmp Reset
.ORG 0x08
jmp TIM2_OVF
.ORG 0x10
jmp TIM1_OVF



Reset:
ldi R16,0xFF 
out DDRD, R16
ldi R16, low(RAMEND)
out SPL, R16
ldi R16, high(RAMEND)
out SPH, R16





ldi R16, 2; 
out TCCR1B, R16
ldi R16, 2
out TCCR2 , R16
ldi R16, 0b01000110
out TIMSK,R16 
ldi R20, 0b0000001

ldi R16,0xFF
out DDRD,R16
out DDRC,R16

;ldi R16, 3
;out TCCR2 , R16
;ldi R16,0b11000000
;out TIMSK,R1;


ldi R26, 0

ldi R18,0
ldi R17,0
;caienuaaai a y?aeee
ldi R16,0b10000001 ;0
Call EEPROM_write
inc R17
ldi R16,0b11110011 ;1
Call EEPROM_write
inc R17
ldi R16,0b01001001 ;2
Call EEPROM_write
inc R17
ldi R16,0b01100001 ;3
Call EEPROM_write
inc R17
ldi R16,0b00110011 ;4
Call EEPROM_write
inc R17
ldi R16,0b00100101 ;5
Call EEPROM_write
inc R17
ldi R16,0b00000101 ;6
Call EEPROM_write
inc R17
ldi R16,0b11110001 ;7
Call EEPROM_write
inc R17
ldi R16,0b00000001 ;8
Call EEPROM_write
inc R17
ldi R16,0b00100001 ;9
Call EEPROM_write
inc R17
ldi R16,0b00010001 ;A
Call EEPROM_write
inc R17
ldi R16,0b00000001 ;B
Call EEPROM_write
inc R17
ldi R16,0b10001101 ;C
Call EEPROM_write
inc R17
ldi R16,0b10000001 ;D
Call EEPROM_write
inc R17
ldi R16,0b00001101 ;E
Call EEPROM_write
inc R17
ldi R16,0b00011101 ;F
Call EEPROM_write
inc R17
ldi R21,1

ldi R29, 170
sei ;?

main:
MOV R17, R26
CALL EEPROM_read

out PortD, R16

ldi R28, 0
ldi r29,0
jmp main



Tim1_OVF: ; таймер для отображения цифр
out PortD,R16
cpi R21, 16
brne m
dec R26 
jmp m2

m:
inc R26
m2:
cpi R26, 16
brne m3
ldi R26 , 0
jmp m4
m3:
cpi R26, 0xFF
brne m4
ldi R26,16
m4:
reti

TIM2_OVF: таймер для звука

out PortC, R20
com R20

ldi R23, 0x01

m1: ; Здесь, изменяя R29, я могу изменить частоту звука. Но как увеличить частоту звука на каждый счёт ума не приложу
mov R22, R29
mw:
dec R22
brne mw
dec R23
brne m1
reti

EEPROM_write:
sbic EECR, EEWE
rjmp EEPROM_write
out EEARH, r18
out EEARL, r17
out EEDR, r16
sbi EECR, EEMWE
sbi EECR, EEWE
ret

EEPROM_read:
sbic EECR, EEWE
rjmp EEPROM_read
out EEARH, r18
out EEARL, r17
sbi EECR, EERE
in r16, EEDR
ret
Eshik v tumane вне форума Ответить с цитированием
Старый 08.01.2013, 22:07   #2
GVA
Пользователь
 
Аватар для GVA
 
Регистрация: 15.12.2012
Сообщений: 13
По умолчанию

А где у тебя интервал задается!?
GVA вне форума Ответить с цитированием
Старый 09.01.2013, 02:49   #3
Eshik v tumane
Пользователь
 
Регистрация: 14.10.2012
Сообщений: 10
По умолчанию

ldi R23, 0x01 в TIM2_OVF
Eshik v tumane вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разложить звук на частоты Биллер Роман Win Api 2 12.02.2012 17:29
ATMega16(Timer T0) AlexeyR23 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 03.12.2011 01:44
avr atmega16 Defunate Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 23.09.2011 14:46
Звук Звууууук Звук ... не рабоает звук.. Zvuuuuk Компьютерное железо 2 22.01.2011 17:53
Тюнер для гитары в делфи. (Считывать с микрофона звук и выводить какой частоты этот звук). Серего Мультимедиа в Delphi 8 12.01.2011 14:39