Консультация № 184824
17.12.2011, 14:27
62.27 руб.
0 7 1
Здравствуйте! Прошу помощи в следующем вопросе::Нужно написать программу для учебного лабораторного комплекса SDK-1.1. Необходимо написать программу, которая управляет процессами, с заданной
периодичностью. Основной процесс моделируется включением и выключением линейки светодиодов по заданному алгоритму
Управление производится циклически от внутреннего таймера МК и асинхронно с помощью двух внешних сигналов. Для решения задачи необходимо задействовать три источника прерывания.
Процессор 8051.Буду очень вам благодарен,если вы сумеете мне помочь.

Обсуждение

Неизвестный
17.12.2011, 14:28
общий
Методичка. Лабораторная 30 из этой методички
Прикрепленные файлы:
8b33f32a816216c451867ae7aece827a.pdf
Неизвестный
17.12.2011, 14:30
общий
и само задание
точка ввода для всех установлена одна и она 2100h
Прикрепленные файлы:
8d201da4e3d0e10e8601160b04a3f7b6.docx
Неизвестный
19.12.2011, 23:39
общий
ну помогите=)
давно
Посетитель
7438
7205
21.12.2011, 03:11
общий
Постараюсь завтра на работе помочь Вам.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
21.12.2011, 13:42
общий
Как реагировать на внешние прерывания?
По одному включать, по второму выключать?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
21.12.2011, 17:23
общий
это ответ
Здравствуйте, Дмитрий!
Вот Вам программа, решающая Вашу задача.
Комментарии не писал, Вы их можете посмотреть в руководстве, там все расписано от и до...
Отличия:
1) Точка входа
2) Yx = 135 для доступа к светодиодам
3) Используем страницу 1fh
4) На индикацию отправляется байт 10011011b
5) Чтобы timer2 срабатывал каждые 40 мсек, загружаем регистры числом 36864 = 921600/25 (25Гц ~ 40мс)
6) Чтобы изменения были каждые 2 сек, загружаем в регистр t2OF = R0 число 50 (50 * 40мс = 2сек)
Все остальное целиком и полностью взято из руководства.

[code h=207]#include "aduc812.h"

Wr_byte equ R1
Tochka_Vhoda equ 44e0h
t2OF equ R0
Reg1 equ 1

Write MACRO Wr_byte,reg_addr,page_num
mov DPP,#page_num
mov DPTR,#reg_addr
mov a,Wr_byte
movx @DPTR,a
mov DPP,#0
ENDM

CSEG at 0
jmp Tochka_Vhoda

ORG 2003h
jmp Ext0_int

ORG 2013h
jmp Ext1_int

ORG 202bh
jmp T2_int

ORG Tochka_Vhoda
main:
call Init_Timer2
mov Wr_byte,#10011011b
_8:
jmp _8

Init_Timer2:
mov t2OF,#100 ;50*40ms = 2 sec
mov RCAP2H,#HIGH((not 36864)+1) ;36864 = 921600/25 (25Гц ~ 40мс)
mov RCAP2L,#LOW((not 36864)+1)
mov TH2,#HIGH((not 36864)+1)
mov TL2,#LOW((not 36864)+1)
setb ET2
setb TR2
setb ET1
setb IT1
SETb ET0
setb IT0
setb EA
ret

T2_int:
clr TF2
djnz t2OF,vyhod
mov t2OF,#100
Write Wr_byte,135,1fh
xrl Reg1,#0ffh
vyhod:
reti

Ext0_int:
mov Wr_byte,#0aah
reti

Ext1_int:
clr TR2
reti

END
[/code]
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
21.12.2011, 17:25
общий
Вы вообще рукодство читали?
Там же все сделано и разжевано! Осталось только подставить свои значения и все!
Неужели так сложно?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа