Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Чт янв 19, 2017 11:29:21

Этот вопрос про наличие софта касался jenia_ov.
8)

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Чт янв 19, 2017 13:33:53

А-а-а, ясно.

Посмотрел схему, предсказуемо и логично.

Ногодрыг в зависимости от уровня входного сигнала и заданной кнопками программы.

Добавлено after 1 hour 16 minutes 23 seconds:
А это видео работы.

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Пн янв 23, 2017 15:08:47

От нечего делать (вернее от нежелания побороть лень) накидал показательный вариант индикатора уровня по последнему обсуждению. Это только заготовка, болванка. К сожалению дальнейшее написание требует наличия железа, т.к. Протеус почему-то не хочет симулировать обе линейки светодиодов, ошибку выдает. Плюс отсутствие АЦП и в 12 раз медленнее по сравнению с STC15 (АТ89С51 все-таки старик), приходится в программе константы подделывать.

Может автор вопроса пожелает дополнить самостоятельно. Или кто-то другой допишет привязку уровней входных сигналов (они уже измеряются) к индексу матрицы. Ну и кнопку еще надо обработать.

Архив для желающих поковыряться прилагаю.
STC_Level.zip
(212.54 KiB) Скачиваний: 226

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Ср фев 01, 2017 19:52:39

Здравствуйте. Помогите с решением задачи.
Считать с параллельного порта байт данных (двоично-десятичный
код), на одноразрядный семисегментный индикатор вывести сумму тетрад, если
результат больше числа 9, на индикатор вывести "0".
Заранее спасибо.

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Ср фев 01, 2017 21:43:58

Асм или С?

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Чт фев 02, 2017 16:35:13

Ассемблер

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Чт фев 02, 2017 19:30:21

СТУДЕНТ...
давненько я с 51-й не практиковал...
примерно так:
Код:
mov r7,port_n ; читаем порт в буфер
mov a,#0x0F ; маска младшей тетрады в АСС
anl a,r7 ; выделяем младшую тетраду
xch a,r7 ; исходный код в АСС, мл. тетрада в r7
anl a,#0xF0 ; выделяем старшую тетраду
swap a ; разворот тетрад
add a,r7 ; сложили
da a ; десятичная коррекция при сложении (поставит АС=1 при переносе
     ; в старшую тетраду
jnb AC,pt_0 ; анализ результата
clr a ; если результат более 9 сброс АСС в 0
pt_0: inc a
movc a,@a+pc ; позиция +1 байт - обход команды ret
ret ; возврат из подпрограммы обработки
segment_table:
 .db ....... ; генератор сегментной комбинации

ежли где не обшибси...
:dont_know:

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Чт фев 02, 2017 20:20:52

Спасибо

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Вс фев 12, 2017 00:04:42

Всем привет!
Начинаю осваивать AT89C51 (заставляют в институте :))) )
Программирую на C, установил Keil.

Подскажите пожалуйста, как мне запустить таймер, длительностью скажем, 1мс (кварц,допустим, 12мгц). И при его переполнении выполнять какой-то код?
Годной инфы не нашел, а где нашел - как-то слишком мудрено все расписано и сделать мне это не получается.

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Вс фев 12, 2017 00:30:46

WaL97 писал(а):.. (заставляют в институте )
..
.. Годной инфы не нашел, а где нашел - как-то слишком мудрено ...
Раз не можете понять, как выполнять подпрограмму по переполнению таймера, и вообще настроить таймер - то лучше увольтесь из института - и никто не будет заставлять.

Подсказывают тем, кто сам хоть что-нибудь пытается понять и сделать - Вы пытались ?
Если утверждаете, что пытались, то поведайте нам, что Вы уже знаете о таймерах м.к. и прерываниях
(, а пустословию место или в "МЯУ!" или в "Сделайте за меня задание" - там за $ помогают .. ) :(

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Вс фев 12, 2017 06:30:46

WaL97 писал(а):слишком мудрено все расписано
вроде несложно

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Вс фев 12, 2017 08:45:28

salang писал(а):
WaL97 писал(а):слишком мудрено все расписано
вроде несложно

Ну опять же, там в основном теория, принцип работы - это я примерно знаю. А примеры кода на асме.

Добавлено after 11 minutes 11 seconds:
petrenko писал(а):Раз не можете понять, как выполнять подпрограмму по переполнению таймера, и вообще настроить таймер - то лучше увольтесь из института - и никто не будет заставлять.

Подсказывают тем, кто сам хоть что-нибудь пытается понять и сделать - Вы пытались ?
Если утверждаете, что пытались, то поведайте нам, что Вы уже знаете о таймерах м.к. и прерываниях
(, а пустословию место или в "МЯУ!" или в "Сделайте за меня задание" - там за $ помогают .. ) :(


Да ладно вам. задание куда сложнее, а учить этому меня будут только ближе к лету. Имел небольшой опыт с авр, вот и взялся попробовать. ладно, не буду разглагольствовать.

вот инициализация прерывающей процедуры:
Код:
void mProcIntT0 () interrupt TF0_VECTOR {
TR0 = 0; // Останов таймера.
TH0 = ~mKodTime >>8;  // Загрузка на отсчет
TL0 = ~mKodTime;//  заданного времени.
TR0 = 1; // Пуск таймера.
mFlagTik =1; // Установка флажка тиков.
mCountTik++; // Счет системных“тиков”.
// Здесь при необходимости можно выполнять и другие действия.
}


Процедуру нужно вызывать в самом начале программы, ведь так?

Код:
void main(void)
{
    mProcIntT0();
...
}


Но тогда Keil не компилирует код, выдавая мне ошибку

Код:
kursach.c(52): error C205: can't call an interrupt function


Добавлено after 6 minutes 10 seconds:
еще небольшой вопрос по кейлу. учитывая, что процессор выполняет каждую команду за 12 тактов, то на частоте в 12 мгц каждая команда выполняется за 1мкс.

в книге предлагается такой макрос:
#definemDelay1mks {_asm nop _endasm;}
кейл _asm не понимает. понимает он #pragma asm, но таким макаром макрос с нопами не написать. Это можно реализовать как-то иначе?
Последний раз редактировалось WaL97 Вс фев 12, 2017 10:09:36, всего редактировалось 1 раз.

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Вс фев 12, 2017 08:49:06

С ассемблером подсказать можно.
8)
Под Си - это СИшника поискать надо...
:roll:
В принципе... примеры можно подчерпнуть из документации к китайским STC15xxxxxxx...
В отношении примеров для программирования это своеобразные учебники.
То же касается и описания синтаксиса и директив компиляторов ассемблера и СИ в спецразделе в конце каждого даташита.
К примеру вот тут:
STC15F204EA-series-english.pdf
(3.46 MiB) Скачиваний: 247

:beer:

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Вс фев 12, 2017 10:15:45

Я не знаю особенности AT89C51, но STC по сравнению с классическим 8051 работает несколько иначе, начиная от однотактных команд, и заканчивая иным режимом 0 таймера (16 бит), если ограничиться тактированием.

В часах я делал инициализацию Т0 так:

А прерывание вообще никаких остановок и перезагрузок не требует. Таймер при переполнении сам загружает начальные значения из "зеркальных" регистров в основные и начинает считать.


Это работает в Keil.
Пересчитайте под свои потребности. С такими комментариями и наличии ДШ разобраться будет легко.

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Вс фев 12, 2017 10:51:07

Zhuk72
Спасибо!
Сейчас глупый вопрос конечно же, но...
вот я объявляю эти две функции

Код:
void  t0set(void)
{

}


Код:
void timer0_isr (void) interrupt 1 using 1
{

}


затем идет основная

Код:
void main(void)
{
   while(1)
      {
         
      }
}

в какой части и как мы их должны вызвать?
Спрашиваю, чтоб знать, что хотя бы в этом не накосячить и разбираться только с инициализацией таймера\прерываний

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Вс фев 12, 2017 12:12:13

Объявлять нужно только одну в виде
Код:
void  t0set(void);

Прерывания в теле программы не вызывают, поэтому и объявлять не требуется.
Вызвать настройку таймера нужно тогда, когда он должен начать работу, например в main, так:
Код:
t0set();

Кроме того, чтобы работали прерывания, их нужно глобально разрешить.

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Вс фев 12, 2017 12:30:02

WaL97 писал(а):А примеры кода на асме
в asm нет ничего плохого, особенно в условиях ограниченных ресурсов. А 89С51 поддерживается Вашим компилятором?

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Вс фев 12, 2017 12:44:04

salang писал(а):
WaL97 писал(а):А примеры кода на асме
в asm нет ничего плохого, особенно в условиях ограниченных ресурсов. А 89С51 поддерживается Вашим компилятором?

Дело в том, что хотелось бы понимать, что делает каждая строка в коде. А всю программу написать на ассемблере уж точно не смогу.
Поэтому использую си. Мой любимый cvAVR х51 контроллеры не поддерживает, после гуглений нашел Keil C51.
подключаю at89x51.h, затем портами управлять у меня получается. Так что наверное да, поддерживается :)))

Update
Всем спасибо! Удалось реализовать! Наконец порт "замигал". Дальше уже все что нужно сделаем.

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Вс фев 12, 2017 15:05:09

мне казалось, что 128байт для организации стека мало и требуется мин. 1Кб. Видимо, был неправ

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Вс фев 12, 2017 17:31:13

Для 51-й или кейл или SDCC где-то отсюда ссыль была:
http://stcmicro.com/rjxz.html
есть правда еще производители софта... да уж там больно "платные" IDE... :cry:
Ответить