Прошивка МК PIC
|
|
| Сообщение # 51
|
[)еНиС
Постов: 3074
Друзья |
Хээлп! Короче чуть чуть с microPascal'ем разобрался, начал писать простую программу. Вбиваю к примкру:
Quote PORTA0 := 0xff; // Delay_ms (3000); // PortA0:= 0x00 ; // delay_ms (100); //
И когда нажимаю типа проверить правильность программы, он мне подчеркивает строчку
Если я в этой строчке просто прописываю порт, без указания бита (portA), то он читает программу дальше и опять тормозит где у меня написано portA1
Теперь вопрос как всетаки правильно написать нужный мне бит? В интернете пытался найти типа обучалки- такая фигня или просто написано как включить и создать проект, или только начальные конфигурации (без основной программы). Даже подсмотреть негде
|
|
| Сообщение # 52
|
SssaHeKkk
Постов: 2291
Друзья |
ну чисто логически порт А там один и бит который ты устанавливаешь пишется здесь 0xff ...например 0b00000001 (токо ты это сам понимаешь в двоичной)...не думаю что для пиков и аврок есть разница в этом месте
|
|
| Сообщение # 53
|
[)еНиС
Постов: 3074
Друзья |
На всякий случай вот вся программа, может еще косяки будут
Quote {кварц 4МГц МК pic16F628 }
program светофор;
begin CMCON := CMCON or 0x07; // turn off comparators
TRISA := 0; // set direction to be output TRISB := 0; // set direction to be output
while TRUE do begin зеленый горит PORTA0 := 0xff; // горит зеленый СД Delay_ms (3000); // задержка 3с PortA0 := 0x00 ; // потух зеленый СД delay_ms (100); // задержка 100мс
Зеленый мигает PortA0 :=0xff ; // горит delay_ms(500) ; // задержка PortA0 := 0x00 ; // потух delay_ms (500) ; // задержка PortA0 :=0xff ; // горит delay_ms(500) ; // задержка PortA0 := 0x00 ; // потух delay_ms (500) ; // задержка PortA0 :=0xff ; // горит delay_ms(500) ; // задержка PortA0 := 0x00 ; // потух delay_ms (100) ; // здержка
желтый горит PORTA1 := 0xff; // горит желтый Delay_ms (3000); // задержка 3с PortA1 := 0x00 ; // потух delay_ms (100); // задержка горит красный PortA2 := 0xff; // горит delay-ms(3000) ; // задержка 3с portA2 := 0x00 ; // потух горит желтый PORTA1 := 0xff; // Delay_ms (3000); PortA1 := 0x00 ; delay_ms (100);
end; // Endless loop end.
все начало до слова begin это все я использовал по умолчанию, заисключением верхних комментариевДобавлено (18.09.2012, 21:01) --------------------------------------------- SssaHeKkk, т.е. вот этой самой 0хFF можно здавать бит? Я то думал это просто лог 1 для всего порта) Добавлено (18.09.2012, 21:03) --------------------------------------------- Только я чего не догоняю опять, помню гдето в какойто теме было написано как)
это какой бит получается 0b00000001 ?
|
|
| Сообщение # 54
|
SssaHeKkk
Постов: 2291
Друзья |
ну ясен пень...ты забыл чему тебя учили...что мы сначала устанавливали определенные порты на входы/выходы а потом выдавали туда логич 1/0...все это мы сначала писали в рабочий регистр R16 а потом отправляли куда надо....для пиков знаю что там все напрямую пишетсяДобавлено (18.09.2012, 21:07) --------------------------------------------- отчет идет справа начиная с 0... блин ден какие проги если ты основы не помнишь??? Добавлено (18.09.2012, 21:07) --------------------------------------------- пройдись по записям...или Серега зря время тратил что ли?
|
|
| Сообщение # 55
|
skateman
Постов: 2201
Друзья |
Anton-Ukraine, ищи на сайте - есть аж 2 штуки проверенныхДобавлено (18.09.2012, 21:14) --------------------------------------------- SssaHeKkk, в пиках немного по другому все устроено Добавлено (18.09.2012, 21:15) --------------------------------------------- Порты надо сначала настроить, вроде как регистр TRISx, а потом уже и выдавать в них данные
|
|
| Сообщение # 56
|
SssaHeKkk
Постов: 2291
Друзья |
skateman, и че там с установкой тож по другому?...ну тада ден извини...я накосячилДобавлено (18.09.2012, 21:17) --------------------------------------------- илипро цифры я правильно ему сказал?...меня интересует цифры 0x00...то что с остальным я не прав т.к. не учил и не знаю насчет этого
|
|
| Сообщение # 57
|
skateman
Постов: 2201
Друзья |
0x00 - это тупо 00000000, 0xFF - это 11111111
|
|
| Сообщение # 58
|
[)еНиС
Постов: 3074
Друзья |
Quote (skateman) 0x00 - это тупо 00000000, 0xFF - это 11111111
ну это понятно. Но до меня не доходит какой это бит? И как определить какой бит дает лог 1
Quote (SssaHeKkk) ну тада ден извини...я накосячил да ладно ниче страншного
Quote (skateman) Порты надо сначала настроить, вроде как регистр TRISx, а потом уже и выдавать в них данные
в микропаскале по моему не надо ниче настраивать. Там при запуске программы выводится пример прошивки, там светододы подключенные ковсем портам мигают. Там только шапка:
begin CMCON := CMCON or 0x07; // turn off comparators
TRISA := 0; // set direction to be output TRISB := 0; // set direction to be output
while TRUE do
и ниже программа, у меня также только программа другаяДобавлено (18.09.2012, 21:29) --------------------------------------------- насколько я понимаю в этой записи портА и портВ настраиваются на выход (set direction to be output)
|
|
| Сообщение # 59
|
SssaHeKkk
Постов: 2291
Друзья |
[)еНиС, а может и не накосячил...попробуй выдать 1 на бит который те нуженДобавлено (18.09.2012, 21:32) --------------------------------------------- 0b00000000 это никакие биты а точнее все на входы настроены...0b00000011...это настроены на выходы 0 и 1 биты Добавлено (18.09.2012, 22:00) --------------------------------------------- и у меня вопрос...а че ты забросил аврки...уже написал бы свой светофор
|
|
| Сообщение # 60
|
[)еНиС
Постов: 3074
Друзья |
я не знаю) Я запутался( А на паскаль перешел потому что он более понятен. Щас попробую переписать и проверить...
Т.е. 0b00000000 это на всех битах ноль тогда 0b00000001 это 0 бит 0b00000010 это первый бит. Так? Добавлено (19.09.2012, 13:52) --------------------------------------------- 0х00 это 00000000 тогда как перевести к примеру 0b00000001 в такую же запись в шестнацитиричной системе типа как 0х00 или 0xFF
|
|