[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Преобразование состояния входа в число
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


 
  • Страница 1 из 1
  • 1
Поиск: