Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 01.06.2014
Сообщений: 2
1

Программа формирования прерывистого звукового сигнала частотой 1 кГц на МК-51

01.06.2014, 23:12. Просмотров 1299. Ответов 3
Метки нет (Все метки)

Есть лабораторная работа. Задание звучит так: Программа формирования прерывистого звукового сигнала частотой 1 кГц с длительностью звучания 200 мс и паузой 100 мс. Сигнал запускается от внешнего прерывания.

Она выполнена не мной, но кажется разобрался.
Кликните здесь для просмотра всего текста
Assembler
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
org 0
jmp Setting
org 0003h ;адрес подпрограммы внешнего прерывания NT0
jmp Start
 
Start: ;подпрограмма обработки прерывания и фомирования звукового сигнала
mov R3,#2
L2:
mov R2,#200
L1:
mov tmod,#00000001b ;режим таймера 1
 
call delay_0_5ms
cpl P3.0
djnz R2,L1
djnz R3,L2
clr P3.0 ;инверсия значения P3.0
call Delay_65ms ;инкримент R2 и ветвления по адресу L1 если результат не равен 0
call Delay_35ms;инкримент R3 и ветвление по адресу L2 если результат не равен 0
jmp Start
RETI ;установка сигнала в 0, формирование пазу длительности 100мс
 
Setting: ;подпрограмма настройки прерывания
setb EA ;разрешение прерывания
setb EX0 ;разрешение прерывания от INT0
SJMP $ ;ождиания запуска по прерыванию
 
Delay_0_5ms: ;загрузка таймера формирования 1кГц
mov TH0,#high(-484)
mov TL0,#low(-484)
setb TR0
JNB TF0,$
clr TF0
clr TR0
ret
 
Delay_65ms: ;загрузка таймера формирование паущы 65мс
mov TH0,#0
mov TL0,#0
setb TR0
jnb TF0,$
clr TF0
clr TR0
ret
 
Delay_35ms: ;загрузка таймера формирование паущы 35мс
mov TH0,#high(-34464)
mov TL0,#low(-34464)
SETB TR0
jnb TF0,$
clr TF0
clr TR0
ret
 
end


Преподавателю не понравилось то, что генерация сигнала была выполнена через переполнение счётчика и он потребовал выполнить его с прерыванием.

Кликните здесь для просмотра всего текста
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
delay   equ -50 ;Длительность половины периода
    org 0   
    jmp start   
    org 000bh   
    cpl p3.0    ;Подпрограмма обработки
;прерывания от t0
    reti        
start:  mov TH0,#delay  
    mov TL0,#delay  
    mov TMOD,#2 ;Режим 2 таймера 0
    setb    EA  ;Разрешить прерывания
    setb    ET0 ;Разрешить прерывание от t0
    setb    TR0 ;Запустить таймер
    sjmp    $   ;Фоновая задача


Попытался объединить две программы

Кликните здесь для просмотра всего текста
Assembler
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
org 0
jmp Setting
org 0003h ;адрес подпрограммы внешнего прерывания NT0
jmp Start
 
Start: ;подпрограмма обработки прерывания и фомирования звукового сигнала
mov R3,#2
L2:
mov R2,#200
L1:
mov tmod,#00000001b ;режим таймера 1
 
call delay_0_5ms
cpl P3.0
djnz R2,L1
djnz R3,L2
clr P3.0 ;инверсия значения P3.0
call Delay_65ms ;инкримент R2 и ветвления по адресу L1 если результат не равен 0
call Delay_35ms;инкримент R3 и ветвление по адресу L2 если результат не равен 0
jmp Start
RETI ;установка сигнала в 0, формирование пазу длительности 100мс
 
Setting: ;подпрограмма настройки прерывания
setb EA ;разрешение прерывания
setb EX0 ;разрешение прерывания от INT0
SJMP $ ;ождиания запуска по прерыванию
 
Delay_0_5ms: ;загрузка таймера формирования 1кГц
jmp start2
org 000bh
cpl p3.0
reti
start2:
      mov TH0,#-50
      mov TL0,#-50
      mov TMOD,#2
      setb EA
      setb ET0
      setb TR0
      sjmp $
 
Delay_65ms: ;загрузка таймера формирование паущы 65мс
mov TH0,#0
mov TL0,#0
setb TR0
jnb TF0,$
clr TF0
clr TR0
ret
 
Delay_35ms: ;загрузка таймера формирование паущы 35мс
mov TH0,#high(-34464)
mov TL0,#low(-34464)
SETB TR0
jnb TF0,$
clr TF0
clr TR0
ret
 
end


И всё пошло в разнос. Подозреваю что это из за PC и векторов прерывания, но понять что не так и как это исправить не могу.

Кто нибудь может подсказать в чём дело и как это исправить?

Добавлено через 9 часов 50 минут
Ну кто нибудь подскажет?Хоть бы пример прерывания на мк51 с разъяснениями.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.06.2014, 23:12
Ответы с готовыми решениями:

Формирователь меандра с частотой 36 кГц (8051, Proteus, ASM)
Задача мне была задана такая: на выходе порта P1.1 сформировать меандр с частотой 36 кГц, тактовая...

Две одинаковые звуковые волны частотой 1 кГц распространяются навстречу друг другу
Две одинаковые звуковые волны частотой 1 кГц распространяются навстречу друг другу. Расстояние...

Написать 4-х полосный эквалайзер для wav файла частотой 4 Кгц на ассемблере с использованием матлаб
Добрый день. Есть задание написать 4-х полосный эквалайзер для wav файла частотой 4 Кгц на...

Генератор звукового сигнала
Здравствуйте, кто может помочь написать простенький генератор сигнала, синус. Важна любая помощь....

3
903 / 543 / 81
Регистрация: 15.05.2012
Сообщений: 3,181
02.06.2014, 09:26 2
Я могу.
0
0 / 0 / 0
Регистрация: 01.06.2014
Сообщений: 2
02.06.2014, 11:20  [ТС] 3
Цитата Сообщение от pyzhman Посмотреть сообщение
Я могу.
Ну? Мне бы по больше информации, дай ссылку на ресурс где это информация в годном виде или напиши своё разъяснение или же на примере моей проги объясни.
0
903 / 543 / 81
Регистрация: 15.05.2012
Сообщений: 3,181
02.06.2014, 15:36 4
С удовольствием дам, аккуратно напишу, подробно объясню.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.06.2014, 15:36

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

ВЧ фильтрация звукового сигнала
Добрый день! Подскажите, пожалуйста, какой фильтр лучше использовать для ВЧ фильтрации звукового...

Воспроизведение звукового сигнала
Здравствуйте, меня интересует вопрос как в командной строке воспроизвести короткий звуковой сигнал,...

Фильтрация звукового сигнала
Здравствуйте друзья, пишу работу по фильтрации звуковых сигналов (от шумов). В матлабе я недавно,...

Распознавание звукового сигнала
Здравствуйте, прошу прощения если немного не в тот раздел. Изучаю Data Science, заинтересовался...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.