реклама на сайте
подробности

 
 
> Пару вопросов по Си для MCS51, от начинающего...
Lotor
сообщение Jul 8 2007, 15:32
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866



Доброе время суток. Начал тут изучать C для 51-х и возникли глупые вопросы:
1) Как Вы отсчитываете (формируете) боле-мене точные временные интервалы? Допустим надо сформировать задержку в 1 секунду, стандартной функции у Keil'a нет, надо писать самим. Есть ли стандартные приемы? Или надо написать какую-нить простенькую конструкцию аля for (i=40;i>0;i--), посмотреть какой ассемблеровский код ей соответствует после компиляции и затем прикинуть? Или в программном симуляторе засечь? Но это же так тоскливо... Можно ли решить задачу не методом такого подбора?
2) Как массив помещается в память програм? Keil пихает в драгоценное ОЗУ даже при объявлении со спецификатором const.
Буду благодарен за ответы)


--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
alcosar
сообщение Jul 8 2007, 19:51
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 30-03-06
Пользователь №: 15 598



Цитата(Lotor @ Jul 8 2007, 18:32) *
Доброе время суток. Начал тут изучать C для 51-х и возникли глупые вопросы:
1) Как Вы отсчитываете (формируете) боле-мене точные временные интервалы? Допустим надо сформировать задержку в 1 секунду, стандартной функции у Keil'a нет, надо писать самим. Есть ли стандартные приемы? Или надо написать какую-нить простенькую конструкцию аля for (i=40;i>0;i--), посмотреть какой ассемблеровский код ей соответствует после компиляции и затем прикинуть? Или в программном симуляторе засечь? Но это же так тоскливо... Можно ли решить задачу не методом такого подбора?
2) Как массив помещается в память програм? Keil пихает в драгоценное ОЗУ даже при объявлении со спецификатором const.
Буду благодарен за ответы)


const и не должен помещать в ОЗУ. Вам нужен code. Пример:
unsigned char code password[] = "65535";

Сообщение отредактировал alcosar - Jul 8 2007, 19:51
Go to the top of the page
 
+Quote Post
Lotor
сообщение Jul 9 2007, 16:18
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866



Цитата(alcosar @ Jul 8 2007, 23:51) *
const и не должен помещать в ОЗУ. Вам нужен code. Пример:
unsigned char code password[] = "65535";

Спасибо, именно то, что надо.
Цитата(SALOME @ Jul 9 2007, 07:46) *
Временные интервалы лучше формировать встроенными в МК51 таймерами...

Это-то понятно, но есть вагон и маленькая тележка ситуаций, когда таймер занят, например опрос АЦП каждую секунду, а при этом I2C формируется программно и нужны боле-мене точные задержки...


--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
Go to the top of the page
 
+Quote Post
Sir Jon
сообщение Sep 7 2007, 10:51
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 45
Регистрация: 28-10-05
Из: Челябинск
Пользователь №: 10 198



Цитата(Lotor @ Jul 9 2007, 19:18) *
Это-то понятно, но есть вагон и маленькая тележка ситуаций, когда таймер занят, например опрос АЦП каждую секунду, а при этом I2C формируется программно и нужны боле-мене точные задержки...


ну в общем то правильные идеи уже прозвучали. Вы успешно подберете контроллер с количеством таймеров равным количеству необходимых задач (по одной на каждый таймер), если таких задач одна-две. Хорошим тоном в программе средней сложности является организация "службы времени" которая в большинстве случаев базируется на одном из таймеров прерыванию на переполнение. В обработке прерывания анализируется количество переполнений (необходимые Вам периоды времени). В зависимости от свободных ресурсов либо расставляются "флажки" действий, которые можно обработать в основном цикле Main, либо эти действия отрабатываются прямо в прерывании.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Lotor   Пару вопросов по Си для MCS51   Jul 8 2007, 15:32
|- - msn   Цитата(Lotor @ Jul 9 2007, 19:18) Это-то ...   Jul 10 2007, 21:25
||- - zltigo   Цитата(msn @ Jul 11 2007, 00:25) пишем......   Jul 10 2007, 22:57
|- - kolobok0   Цитата(Sir Jon @ Sep 7 2007, 14:51) ..Хор...   Sep 7 2007, 11:18
- - SALOME   Цитата(Lotor @ Jul 8 2007, 22:32) Доброе ...   Jul 9 2007, 03:46
- - oran-be   ЦитатаЭто-то понятно, но есть вагон и маленькая те...   Jul 9 2007, 18:17
|- - Lotor   Цитата(oran-be @ Jul 9 2007, 22:17) ...   Jul 9 2007, 19:21
|- - Sergu   Цитата(Lotor @ Jul 9 2007, 22:21) Еще воз...   Jul 10 2007, 03:51
|- - Lotor   Цитата(Sergu @ Jul 10 2007, 07:51) удобно...   Jul 10 2007, 16:53
- - silc   alcosar: const и не должен помещать в ОЗУ. Вам нуж...   Aug 10 2007, 14:57
- - Василий_Безкатегорийный   Насчет побитового обращения к портам. Я пытаюсь ра...   Sep 25 2007, 08:45
- - AndreyS   Добрый день. Не стал создавать новую тему. Вопро...   Dec 10 2008, 08:56
|- - barabek   Цитата(AndreyS @ Dec 10 2008, 18:56) Суть...   Dec 10 2008, 14:18
|- - AndreyS   Цитата(barabek @ Dec 10 2008, 17:18) Как ...   Dec 10 2008, 16:08
|- - barabek   Цитата(AndreyS @ Dec 11 2008, 02:08) Прав...   Dec 11 2008, 00:31
|- - tag   Цитата(barabek @ Dec 11 2008, 04:31) В эт...   Dec 11 2008, 10:05
||- - barabek   Цитата(tag @ Dec 11 2008, 20:05) Уверяю в...   Dec 11 2008, 10:53
|- - AndreyS   Цитата(barabek @ Dec 11 2008, 03:31) Если...   Dec 11 2008, 12:00
|- - barabek   Цитата(AndreyS @ Dec 11 2008, 22:00) Комп...   Dec 11 2008, 14:00
|- - AndreyS   Цитата(barabek @ Dec 11 2008, 17:00) Здес...   Dec 11 2008, 14:37
- - AndreyS   Люди!!! Помогите. Пока перебросил пере...   Dec 10 2008, 10:57
- - Axel   Если функция не написана, как реентерабельная (сло...   Dec 10 2008, 17:37
- - AndreyS   Добрый день. Написал для прерывания специальную ф...   Dec 12 2008, 10:38
- - Сергей Борщ   Цитата(AndreyS @ Dec 12 2008, 12:38) И пе...   Dec 12 2008, 12:03
- - c8051   Цитата(Сергей Борщ @ Dec 12 2008, 15:03) ...   Dec 12 2008, 16:52
- - Сергей Борщ   Цитата(c8051 @ Dec 12 2008, 18:52) c51.pd...   Dec 12 2008, 18:37
- - AndreyS   Цитата(Сергей Борщ @ Dec 12 2008, 21:37) ...   Dec 13 2008, 20:34


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 09:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01404 секунд с 7
ELECTRONIX ©2004-2016