Преобразование состояния входа в число
|
|
marss70 | Дата: Вторник, 15.01.2013, 22:31 | Сообщение # 1 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| Помогите, пожалуйста, с кодом, который преобразует состояние на ножках порта в число. Например, на ножках порта "В" состояние 10010010, а в недрах МК 146... Наборот делается в одно мгновение- PortB = 146 и на ножках порта B выставится двоичный код, а вот наоборот, что-то никак недотумкаю.
|
|
| |
AlekS | Дата: Вторник, 15.01.2013, 22:44 | Сообщение # 2 |
Группа: Проверенные
Сообщений: 247
Статус: Offline
| Для вывода на LCD индикатор:
Lcd "D=" ; Bin(portf) 'смотрим входы датчиков на порту "F" - 00000000 Bin(portf)- выводит в бинарнике.
|
|
| |
marss70 | Дата: Вторник, 15.01.2013, 22:59 | Сообщение # 3 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| Спасибо, сейчас попробую.
|
|
| |
Aleks8383 | Дата: Вторник, 15.01.2013, 23:05 | Сообщение # 4 |
Группа: Проверенные
Сообщений: 104
Статус: Offline
| Цитата (marss70) Помогите, пожалуйста, с кодом Посмотрите здесь,очень толковый перевод обучалки по Барсику,сразу много вопросов отпадёт.
Сообщение отредактировал Aleks8383 - Вторник, 15.01.2013, 23:06 |
|
| |
marss70 | Дата: Вторник, 15.01.2013, 23:07 | Сообщение # 5 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| Что-то не работает. Привожу мой код, что не так?
$regfile = "m8def.dat" $crystal = 20000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0 Cls Cursor Off Lcd "D=" ; Bin(portd) 'выводим результат преобразования на ЖК Waitms 100 ' зедержка 0,1 секунды End
|
|
| |
marss70 | Дата: Вторник, 15.01.2013, 23:10 | Сообщение # 6 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| Я оттуда и брал инфу.
|
|
| |
marss70 | Дата: Вторник, 15.01.2013, 23:31 | Сообщение # 7 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| И так что-то не работает...
$regfile = "m8def.dat" $crystal = 20000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0 Dim B As String * 8 Do B = Bin(portd) Cls Cursor Off Lcd B Waitms 100 Loop End
Сообщение отредактировал marss70 - Вторник, 15.01.2013, 23:42 |
|
| |
kip96 | Дата: Среда, 16.01.2013, 23:20 | Сообщение # 8 |
Группа: Свой человек
Сообщений: 170
Статус: Offline
| А так? $regfile = "m8def.dat" $crystal = 20000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0 Dim B As String * 8 Do B = Bin(pind) Cls Cursor Off Lcd B Waitms 100 Loop End
|
|
| |
pchela5 | Дата: Четверг, 17.01.2013, 13:15 | Сообщение # 9 |
Группа: Свой человек
Сообщений: 85
Статус: Offline
| 1. Официально Мега8 работает до 16 мегагерц. 2. Порт d надо настроить на вход командой DDRD = &B00000000 3. Ну и не мешало бы вставить несколько строчек такого рода: $hwstack = 8 $swstack = 16 $framesize = 16
|
|
| |
kip96 | Дата: Четверг, 17.01.2013, 13:50 | Сообщение # 10 |
Группа: Свой человек
Сообщений: 170
Статус: Offline
| Если внимательно посмотрите код, то они отличаются всего лишь одной строчкой B = Bin(pind) вместо B = Bin(portd) которая и решает всю проблему. Типичная ошибка. Куча обучалок, а всё те-же грабли Остальное всё, конечно, справедливо, но по умолчанию, порты в АВР настроены на вход.
|
|
| |
marss70 | Дата: Четверг, 17.01.2013, 21:28 | Сообщение # 11 |
Группа: Проверенные
Сообщений: 80
Статус: Offline
| Спасибо kip96! Всё работает. Грабли на самом деле одни и те же! Я ж про это знал. Хотя на дисплее не совсем то, что хотелось бы, а именно набор нулей и единиц. Остальное дотумкаем. Про 16 мгц тоже факт, но и 20 мгц по зубам. У меня частотомер на таком кристалле работает.
Сообщение отредактировал marss70 - Четверг, 17.01.2013, 21:46 |
|
| |
pchela5 | Дата: Четверг, 17.01.2013, 23:49 | Сообщение # 12 |
Группа: Свой человек
Сообщений: 85
Статус: Offline
| Three I/O memory address locations are allocated for each port, one each for the Data Register – PORTx, Data Direction Register – DDRx, and the Port Input Pins – PINx. The Port Input Pins I/O location is read only, while the Data Register and the Data Direction Register are read/write. In addition, the Pull-up Disable – PUD bit in SFIOR disables the pull-up function for all pins in all ports when set. Это из даташита. Читать надо из pin
|
|
| |