В Баскоме есть команда initlcd, она заставляет контроллер инициализировать дисплей.
Где, или как баском хранит эти строки инициализации для дисплея, или как их редактировать.
Суть вопроса такова - к МК был подключен дисплей на контроллере hd44780, потом заменен на winstar oled в которого немного другая инициализация и дополнительные функции. Он то работает, но хочется задействовать как надо и штатными средствами баскома.
_Init_LCD:
*BASIC: waitms 10
Ldi R24, &B11111111 ; all outputs
Out LCDDDR,R24 ; write to Data direction
Ldi R24, &B00110000 ; set logic level
Out LCDPORT,R24 ; write to output pins
Ldi r16,3 ; repeat 3 times
_Init_LCD1:
SBi LCDPORT, 2 ; E high
Cbi LCDPORT, 2 ; E low
*BASIC: waitms 1
Dec R16
Brne _Init_LCD1 ; until we are ready
Cbi LCDPORT, 4 ; DB4 must be set low now
SBi LCDPORT, 2 ; E high
Cbi LCDPORT, 2 ; E low
*BASIC: waitms 1
Ldi R24, 40 ; 4 bit mode
Rcall _Lcd_control
Ldi _temp1,14 ; Display on, Cursor on, Noblink
Rcall _Lcd_control
Ldi _temp1,6 ; Cursor moves right, text doesn't move
RJmp _Lcd_control ; return will come from _lcd_control
[END]
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Добрый день, уважаемые коты. Смастерил себе часы на ИВ-18 и мега 32. (Переделал немного схему польских часов под мегу 32). Код перелопатил под себя. Добавил, работу трех кнопок "+" "-" "setup"; индикацию при обрыве датчиков температуры; индикацию дня недели; корректировку на +1сек в сутки (без нее отстают), регулировку яркости. Прошу вашей помощи впилить в программу будильник простой и надежный . Не могу понять как на всяких там ice tube clock реализована одновременная работа будильника и обновление даты времени для динамической индикации во время проигрывания мелодии например(если поставить ее в основном цикле). Код и проект в протеусе во вложении, помогите впилить будильник или поделитесь куском кода в котором реализован будильник с индикацией времени при проигрывании мелодии например командой sound.
Есть код, который обрабатывает нажатие кнопки. при нажатии кнопки начинает работать программа, точнее сказать, нажал кнопку и пока ее держишь в цикле работает программа, отпускаешь кнопку погромамма работать перестает.
Так вопрос, мне нужно чтобы пока кнопка нажата, программа сработала лишь один раз, а она работает до тех пор пока кнопка нажата.... Тоесть бегает в цикле.
Если ее убрать из цикла то программа не работает.
Как при нажатии кнопки заставить программу работать лишь один раз,
Мне нужно: нажал держишь кнопку, программа проработала и встала. Чтобы перезапустить программу, отпускаем кнопку и нажимаем снова.
можно ставить флаг
когда кнопка не нажата-флаг=0
когда нажимаем кнопку флаг=1,потом-если флаг=1 срабатывает программа,в ее конце прописываем флаг=2
кнопка нажата,но программа сработала один раз,так как флаг=2
отпускаем кнопку-флаг=0,ждем нажатия кнопки
а можно в той программе сделать чтоб она сработала и стояла на месте пока не отпустим кнопку
label1:
waitms 10
if button=0 then goto label1 'если кнопка еще нажата идет на метку
dim flag as bit
flag=0
..........
if button=0 then если кнопка нажата
if flag=0 then gosub prog и флаг=0 то идем на программу
else
flag=0 если кнопка не нажата флаг=0
end if
...........
prog:
наша программа
flag=1
return
доброго времени подскажите пожалуйста есть жки wh2004a YGH-CT при подключении к атмеге 16 (внутр генератор 4мгц )тупо показывает 1 и 3 строку прямоугольники. я так понимаю что инициализация дисплея не прошла вот код посмотрите может что подскажете (если нужно могу в протеусе 8 скинутьсхему) в протеусе все работает ,
Dim Signtemperatura As String * 1 , Celsium As String * 5
Dim Byte0 As Byte , Byte1 As Byte , T As Byte
Dim Dsid1(8) As Byte , Dsid2(8) As Byte
Dim Temp As Byte , X As Byte
Dim W As Word
Dim M As Word
W = 1wirecount()
Dsid1(1) = 1wsearchfirst()
Do
Dsid2(1) = 1wsearchnext()
Loop Until Err = 1
да все подключено в протеусе у меня у самого все работает а в железе ступор
мне кажется с инициализацией косяк потому что счас добавил initlcd 2 раза с по подряд и появилась верхняя часть 3 и 4 строчки
не знаю,гдето косяк скорее всего,может попробовать временно впаять 1602 и проверить-работает ли программа?ее придется подправить...
вопрос на засыпку-можно ли к одной меге16 подключить два индикатора нокиа1110 и как это примерно будет выглядеть?показывать будут разную информацию(не одно и то же на обоих жк)
Дисплеи, имеющие вывод CS (Chip Select) можно подключить параллельно. Управляя этими выводами мы и выбираем, для кого предназначена та или иная информация. А инициализировать их можно разом, выбрав сразу оба дисплея.
pavel1979 писал(а):вообще-в теле программы можно переназначать порты?
Разумеется. Но в Вашем случае нужно просто настроить выводы CS для двух дисплеев, и дергать ими когда нужно.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Подскажите а для BASCOM есть готовые библиотеки для работы с USB? Есть задача - принять с USB байт и выдать его на один из портов. Может кто подскажет примеры?