Описание: Помогите составить функцию |
Поиск в теме | Версия для печати |
Artem |
Отправлено: 04 Августа, 2012 - 14:47:23
|
Главнокомандующий
Сообщений всего: 347
Дата рег-ции: Май 2012
|
Я написал программу мигания светодиодом и зашил в мк, всё работает
Решил усовершенствовать, поставив два светодиода и две кнопки, но сначала решил попробовать на одном, сделал всё как вы писали:
$regfile = «m8def.dat»
$crystal = 1000000
Config Portb.1 = Output
Config Portc.1 = Input
Do
If Pinc.1 = 0 Then
Set Portb.1
Waitms 100
Reset Portb.1
Waitms 100
End If
Loop
Но компилятор выдаёт ошибку. Пробовал убрать End If не вышло
Затем попробовал заменить порт С на D всё работает, странно, почему так?
(Добавление)
И ещё, при включение микроконтроллера с этой программой светодиод мигает один раз, не по команде, ат потом всё отлично, почему так? |
|
|
mihail |
Отправлено: 04 Августа, 2012 - 20:11:56
|
Гуру
Сообщений всего: 1065
Дата рег-ции: Март 2010
|
Artem пишет:в бейсике можно производить опрос двух кнопок одновременно и совершать действие если нажаты обе кнопки Если это можно сделать на basic, то на C и подавно.
CODE:if( (PIND & (1<<0)) && (PIND & (1<<1)) )
{
/* код */
}
CODE:if( 0b00000011 == (PIND & 0b00000011) )
{
/* код */
}
+ over9000 вариантов записи
Код, который внутри скобок, выполняется только если на PD1 и PD0 логическая единица.
(Добавление)
По С есть неплохой учебный курс на http://chipenable.ru/ По ассемблеру и С посмотрите учебный курс на http://easyelectronics.ru/ Посмотрите http://easyelectronics.ru/shpak-...ontrollerov.html |
|
|
Artem |
Отправлено: 06 Августа, 2012 - 21:18:37
|
Главнокомандующий
Сообщений всего: 347
Дата рег-ции: Май 2012
|
anar, здравствуйте, можно ещё один вопрос
наткнулся на код:
Config Timer1 = Counter , Edge = Rising , Prescale = 8 , Compare A = Toggle
Compare1a = 222
Я понял что это настройка таймера, но больше ничего.
Я понял что Config Timer1-это начало строки в которой мы конфигурируем таймер.
Затем я так понял что-то присваевается: = Counter , но непонятно что, в одной из ссылок которую вы мне дали, есть настройка таймера для шим, так вот там в место = Counter стоит = Pwm, Pwm = 8-это разрядность шим, но порывшись в интернете, я наткнулся на ещё один пример использования таймера так вот там вобще стоит = Timer, я не могу понять что такое присваивается
Затем строка Edge = Rising, я вобще не знаю что это такое, но я понял что Rising это не переменная так как она ранее не объявлялась.
Prescale = 8 -это мы выбираем предделитель таймера, здесь всё понятно.
Compare A = Toggle-эта строка тоже не понятна так как в том курсе что вы мне посоветовали в место Toggle было Pwm = Clear Down, было написанно что это конфигурация активного состояния для шим с этим понятнее, а вот что такое Toggle-это тоже не переменная так как нигде не употреблялась. Однако смущает последняя строчка в которой вычсчитывается значение Compare1a, можете объяснить что здесь к чему?
И ещё я так понимаю что всё здесь настраивается регистрами, не могли бы вы дать какую нибудь ссылку в которой все эти регистры бы ли бы упорядоченны?
Заранее спасибо? |
|
|
|
Поиск в теме | Версия для печати |
Страниц (3): [1] 2 3 » |
« Делимся опытом » |
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
|
|
|
|