Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15553
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

Вообще-то макросы принято отдельным файлом в начале исходника размещать...
:wink:
Да... вот еще неплохая статья по работе с ассемблером (правда под ПИКи - но правила применимы и к другим семействам) от Виктора Тимофеева:
http://www.pic24.ru/doku.php/osa/articl ... formatting
в частности http://www.pic24.ru/lib/exe/fetch.php/o ... atting.pdf
:beer:
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Пока_без_кота »

Спасибо, очень познавательный ресурс, накопировал себе оттуда кучу статей. Вообще стал за собой замечать "синдром плюшкина", где что нахожу интересное по программированию МК, тяну в спец папку. Уже 4 Гб книжек и образцов кода насобирал. Читать не успеваю, в сутках времени не хватает((
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Пока_без_кота »

Доброго времени суток. Чтобы лучше понять работу шины I2C, решил попробовать сам нацарапать простейшую ее реализацию. После чтения апноутов заметил, что байты передаются старшими битами вперед (через rlc). Это приниципиально, или просто исторически сложилось, и реальной роли не играет ? Понимаю, что вопрос не имеет прямого отношения к MCS-51, просто раз буду писать под него, решил спросить здесь.
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Ser60 »

Если будете разрабатывать связь между своими устройствами, то передавайте как хотите. Однако, подавляющее большинство сенсоров и других промышленные изделий посылают данные и ожидают команды старшим битом вперед в соответствии со стандартом, т.е. под них следует подстроиться.
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Пока_без_кота »

Спасибо, учту. Теперь такой вопрос. Спецификация шины I²C разрешает изменения на линии SDA только при НИЗКОМ уровне сигнала на линии SCL (исключая старт- и стоп-последовательности). Открываю апноуту Интела и вижу:
Спойлер

Код: Выделить всё

Send_byte:                              ; Send 1 bytes of informarion located in Accumulator
   mov     Bit_CNT,#8              ; Set bit count value
SB_Loop:
   rlc     A                       ; Send 1 data bit
   mov     SDA_pin,C               ; Put data bit on pin
   Release_SCL_High                ; Drive SCL HIGH
   Delay_3_Cycles                  ; Delay
   
   clr     SCL_pin                 ; Clear SCL
   Delay_3_Cycles                  ; Delay
   djnz    Bit_CNT,SB_Loop         ; Repeat until all bits sent
   
   setb    SDA_pin                 ; Release data line for acknowledge
   Release_SCL_High                ; Send clock for acknowledge
   Delay_4_Cycles                  ; Delay
   jnb     SDA_pin,SB_ex           ; Check for valid acknowledge bit
   setb    No_ACK                  ; Set status for no acknowledge
SB_ex:
   clr     SCL_pin                 ; Finish acknowledge bit
   Delay_3_Cycles         ; Delay
   ret

Эта подпрограмма предполагает, что до ее вызова SCL будет опущена. Может лучше в самой подпрограмме предварительно (перед rlc A) опускать SCL, чтобы наверняка ?
И второе, при неподтверждении передатчиком принятия байта там просто выставляется флаг ошибки, и выполняется выход из подпрограммы. Не лучше ли было еще хотя бы раз или 2 (по счетчику) попытатся передать байт повторно, и только тогда, уже с чистой совестью валить из подпрограммы с флагом "Ахтунг, не принялось!!!" ? Чем мой вариант хуже ?
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Ser60 »

Первое: можете и опустить, однако не во всех случаях это гарантирует отсутствие ошибки если перед передачей забыли сформировать сигнал START. Поскольку, если он не сформирован, то интерфейс регламентирует определенную задержку после START до первого фронта на линии SCL. И если она будет меньше чем нужно при быстром процессоре, то устройство на другом конце может не понять. Обычно, задержка эта мала и если проц не шибко шустрый то сработает. Можно, конечно, задержку поставить. Для "быдлопрограмм", как здесь говорят, сойдет. Однако, стремитесь задействовать аппаратные драйверы по возможности. Или если таковой нет, то формировать запросы правильно. Это исключит надобность в "а что если" случаях.

Второе: Если произошла ошибка чтения и ведомое устройство получило NAK, то оно обычно прекращает передачу до появления на линии сигналов STOP и START/RESTART, и Вы это изменить не можете. Поэтому без этого попытку передать байт ещё раз не воспримет. Если-же программируете master и slave девайсы сами, можете и отступить от стандарта. Кроме того, многие устройства автоматически инкрементируют адрес в собственной памяти данных и при попытке повторной передачи байта не могут его декрементировать. Короче, зачем Вам изобретать что-то нестандартное? На стандарты следует реагировать словами типа "ja wohl" и стиснув зубы следовать им, даже если они Вам не нравятся. Поверьте, люди думали много прежде чем их выработать и даже если еони пошли на какие-то компромиссы, то в большинстве случаев они имеют смысл и работают на Ваше-же благо.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15553
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

I2C исходно рождена Philips Semiconductors (ныне NXP) посему они и являются законодателями в данной области.
Простейшая шпора для "самопалки" с одним - парой ведомых на шине:
shpora_I2C_1.pdf
(135.75 КБ) 169 скачиваний

8)
Аватара пользователя
paskal
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Пн сен 05, 2011 10:03:06
Откуда: Тула

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение paskal »

Вопрос как имитировать внешнюю память в keil.
Очень понадобилось вспомнить старый проект. Проект на отечественном аналоге 8051, на ассемблере. Схема самого устройства на рассыпной логике серии 1533, а МК взаимодействует с внешней периферией как с регистрами с 8-битным адресом. То есть командами типа "movx @r0,a". Проект я перевел в keil, но отлаживаться без имитации регистров совершенно невозможно!
Поэтому вопрос как мне эту память сымитировать.
Имитацию памяти по 16-разрядному адресу (через movx @dptr), я нашел. В отладке View->Memory Windows, далее в окошке с адресом ввести x:0. А как делать то же с памятью по movx a,@r0?
Если бы на станции "Мир" стояли Винды, она бы еще висела и висела...
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение ARV »

почему-то мне кажется, то PROTEUS ISIS отлично сможет имитировать любую периферию классического варианта 51-го семейства
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
paskal
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Пн сен 05, 2011 10:03:06
Откуда: Тула

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение paskal »

Я уже провел огромную работу чтобы завести эту схему в Протеус. Работает жутко медленно. Из-за сложной периферии наверно. Но даже не в этом дело. Мне нужно дебажить проект написанный в кейле. А протеус только запускать скомпилированный hex файл позволит, imho.
И еще что существенно, Протеус не все корректно имитирует. В частности в этом проекте он неправильно читает флеш.
Если бы на станции "Мир" стояли Винды, она бы еще висела и висела...
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15553
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

paskal писал(а):Вопрос как имитировать внешнюю память в keil.
...


Правильно указать размещение данных в исходнике проекта и параметры применяемого МК в инклуде, прилагаемом изготовителем компилятора (может и без оного - описание читать надо).
У меня не Кейл, а атмелевский с51аsm, но по синтаксису подобен.
Данные оперативки внутрикристальной dseg (data)
внешнее ОЗУ данных - xseg (xdata)
таблицы в области code или xdata
ну и так далее ( косвенноадресуемое внутреннее ОЗУ, расширенная ОЗУ, флеш еепромка и битовая область) - рекомендую перечитать юзерс гвиде по кейлу для конкретных решений.
:beer:

Пы.Сы.
Для симуляции подобного проекта и старой доброй DOSовской fd51 достаточно.
8)
Аватара пользователя
paskal
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Пн сен 05, 2011 10:03:06
Откуда: Тула

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение paskal »

xseg адресуется через @dptr, и я нашел как его смотреть/редактировать в отладчике. А как @r0 смотреть? В документации уже искал.
Если бы на станции "Мир" стояли Винды, она бы еще висела и висела...
Rtmip
Держит паяльник хвостом
Сообщения: 963
Зарегистрирован: Чт апр 03, 2014 23:16:55
Откуда: Россия

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Rtmip »

Согласен с ARV и BOB51.
paskal писал(а):...А как @r0 смотреть? В документации уже искал.
Точно так же смотреть, посмотрите внимательней на документацию 51-х
Скорее всего у вас порт P2 в "FF" или там что-то отличное от нуля :idea:
Просто, допишите в программу такие строчки и все увидите в симуляции "Keil":

Код: Выделить всё

MOV  R0, A    ;адрес младшего байта
MOV  P2, #0    ;обнулить старший байт адреса
MOVX @R0, A  ;запись во внешнее ОЗУ
....
MOV  R0, A      ;адрес младшего байта
MOV  P2, #0    ;обнулить старший байт адреса
MOVX A, @R0  ;чтение внешнего ОЗУ
....
Надеюсь, понятно объяснил? :beer:
Аватара пользователя
musor
Друг Кота
Сообщения: 39197
Зарегистрирован: Сб сен 13, 2014 16:27:32
Откуда: СпиртоГонск созвездия Омега

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение musor »

ктонить в курссе как так работают эти весы там совместимый 51МК и тензомос и 2 плат многоразрядных(15р=сгрупированы из 3х 5разрядов клякса общая ) 7 сегментны с встоеным контром каплей и шиной из 7 проводков на индюки в момент самотеста выдает сначала все 8 потом 1234567890ABCDFпотом напряг батареи потом 0 веса и уставки цен....
хотелось б понять можно ли из всего этого хлама сделать Шкалу цифровую для БП ибо лежит платы без дела
хорощоб чтоб щина к индюку не менялась(там 2 авболютно одинаковых плат индюка(одна для продавана втораядля вас) но на одном еще паян светик на заряд АКБ-платы на шлейф сидят впаралели
мож у кого исходники этих весов есть-посмотреть как там написан вывод на индюки
Изображение
или готовую переделку платы весов под БП тоже можно
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение ARV »

Впервые слышу, что протеус работает жутко медленно.
Если периферия у вас цифровая, то крайне рекомендую все резисторы так же сделать цифровыми. Лишние конденсаторы из схемы исключить. И вообще, по максимуму отказаться от аналоговых компонентов. Если периферия аналоговая, то, конечно, советовать сложно, но для отладки программы вполне можно заменить какой-то сложный усилитель сигнала на генератор сигнала уже нужной амплитуды, а в некоторых случаях вообще обойтись переменным резистором. И так далее: вместо моделирования правильной схемы для отладки программы достаточно имитировать сигналы. Не нужно фанатично создавать 100% полную схему в протеусе.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
paskal
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Пн сен 05, 2011 10:03:06
Откуда: Тула

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение paskal »

Rtmip писал(а):Скорее всего у вас порт P2 в "FF" или там что-то отличное от нуля :idea:
Надеюсь, понятно объяснил? :beer:

Точно! Во вкладку Memory в окошко адреса вбил x:0xFF00 и увидел циферки которые можно ввести. :))
Не догадался я что старшие 8 бит в единицах!

ARV писал(а):Впервые слышу, что протеус работает жутко медленно.
Если периферия у вас цифровая, то крайне рекомендую все резисторы так же сделать цифровыми. Лишние конденсаторы из схемы исключить.

Схема вся цифровая. Но она большая. Правда резисторы на подтяжку я и правда аналоговые замутил, надо будет поменять.
И еще там 7-сегментные индикаторы, может они влияют?
Если бы на станции "Мир" стояли Винды, она бы еще висела и висела...
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Пока_без_кота »

Доброго времени суток. Прошу помощи по доведению до ума работы с дисплеем HD44780 как с внешней памятью. Значит написал я так, чтобы обращаться к дисплею через косвенную адресацию регистром R0, потому что как выяснилось, при использовании DPTR 6 линий потеряется. Так что что линии RS и R/W я дергаю вручную, Е дергается автоматически через 74НС04. И оно не работает, дисплей показывает 1 черную строку. Порядок инициализации взят из даташита на мой дисплей
Изображение
Главный цикл
Спойлер

Код: Выделить всё

WriteData_copy   equ     3h      ; R3

dseg    at      7h                      ; Первые 8 регистров под свои нужды

Stack:                                  ; А дальше пойдет стек

cseg    at      0
   jmp     Main

include 'LCD_on_P0.asm'

Main:
   mov     SP,#Stack               ; Инициализируем стек
        call   Ini_LCD                 ; Инициализация LCD
          mov     WriteData_copy,#41h     ; Запишем в видеобуффер код выводимого символа
   call    Write_LCD_Data          ; И выведем его на дисплей
   jmp     $                       ; Зациклимся
end


Файл библиотеки HD44780 - 'LCD_on_P0.asm'
Спойлер

Код: Выделить всё

BF_Flag      equ   ACC.7
RS      equ     P3.5
RW      equ   P3.4
;E              equ     P3.6(WR) и 3.7(RD) через 74НС04, взводится автоматически, при выполнении команды работы с внешней памятью
LCD_Port        equ     P0

WriteData       equ     3h              ; R3

; Не использовать для своих целей R0,R1,R2 они используются для формирования задержек
; Флаг занятости BF, пока 1 - LCD занят, когда 0 - LCD свободен, можно слать команды

cseg

Ini_LCD:                           ; Инициализация LCD
   call   Del_30ms      ; Стартовая задержка на 30 мс по даташиту
        mov   LCD_Port,#00111100b   ; DL=1, N=1, F=1
   call   Write_LCD_Ini           ; Запись инициализирующей команды
   call   Del_39mks               ; Задержка на 39 мкс по даташиту
   mov   LCD_Port,#00001100b   ; D=1, C=0, B=0
   call   Write_LCD_Ini           ; Запись инициализирующей команды
   call   Del_39mks               ; Задержка на 39 мкс по даташиту
   mov   LCD_Port,#00000001b   ; Очистим дисплей
   call   Write_LCD_Ini           ; Запись инициализирующей команды
   call   Del_1_53ms              ; Задержка на 1,53 мс по даташиту
   mov   LCD_Port,#00000110b   ; I/D=1, SH=0
        call   Write_LCD_Ini           ; Запись инициализирующей команды
   ret

Write_LCD_Data:            ; Запись данных из ACC в дисплей
   clr     RS                      ; Подаем команды, поетому опускаем RS
   setb   RW         ; Будем читать флаг BF, поетому поднимаем RW
   push   ACC
Wait_Write_Data:
   movx   A,@R0              ; Считываем состояние линий в аккумулятор, при этом дергаем Е дисплея пином Р3.7 (RD) через 74НС04
   jb   BF_Flag,Wait_Write_Data ; И проверяем флаг BF
   clr   RW         ; Проверили флаг BF, можно опустить RW
   setb   RS                      ; Передаем данные, поетому поднимаем RS   
   mov   A,#WriteData
   movx   @R0,A                   ; Собственно запись данных, при этом дергаем Е дисплея пином Р3.6 (WR) через 74НС04
   pop   ACC
   ret

Write_LCD_Comm:                    ; Запись команды из ACC в дисплей
   clr     RS                      ; Подаем команды, поетому опускаем RS
   setb   RW         ; Будем читать флаг BF, поетому поднимаем RW
   push   ACC
Wait_Write_Comm:
   movx   A,@R0         ; Считываем состояние линий в аккумулятор, при этом дергаем Е дисплея пином Р3.7 (RD) через 74НС04
   jb   BF_Flag,Wait_Write_Comm ; И проверяем флаг BF
   clr   RW         ; Проверили флаг BF, можно опустить RW    
   mov   A,#WriteData
   movx   @R0,A                   ; Собственно запись команды, при этом дергаем Е дисплея пином Р3.6 (WR) через 74НС04
   pop   ACC
   ret
   
Write_LCD_Ini:            ; Запись инициализируещих команд в дисплей, здесь не анализируется флаг BF
   clr     RS                      ; Подаем команды, поетому опускаем RS
   clr   RW                      ; Чтения флага BF не будет, поетому опускаем RW
   push   ACC
   mov   A,#LCD_Port      ; Закинем иницализирующую команду в А
   movx   @R0,A                   ; Собственно запись команды, при этом дергаем Е дисплея пином Р3.6 (WR) через 74НС04
   pop   ACC
   setb   RS                      ; Поднимем назад RS
   setb   RW                      ; Поднимем назад RW
   ret

Del_30ms:
   mov   R2, #2h
   mov   R1, #8Dh
   mov   R0, #33h
   djnz   R0, $
   djnz   R1, $-4
   djnz   R2, $-8
   mov   R0, #32h
   djnz   R0, $
        ret
       
Del_1_53ms:
   mov   R1, #6h
   mov   R0, #7Fh
   djnz   R0, $
   djnz   R1, $-4
        ret
       
Del_39mks:
        mov   R0,#20
   djnz   R0,$
   ret
   
end
Rtmip
Держит паяльник хвостом
Сообщения: 963
Зарегистрирован: Чт апр 03, 2014 23:16:55
Откуда: Россия

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Rtmip »

Пока_без_кота, здравствуйте!
Думаю это опечатка: 74HC04, ведь это 6 инверторов. 74HC00 - это вы имели ввиду, похоже.
По программе. Когда вы пишите так:

Код: Выделить всё

....mov   A,#WriteData....
...   mov   A,#LCD_Port      ; Закинем иницализирующую команду в А....
, то на самом деле вы в аккумулятор загружаете не данные, которые бы хотели там видеть, а адреса!
То есть, 03h и 80h, соответственно. Напишите так:

Код: Выделить всё

mov   A, WriteData
mov   A, LCD_Port
и все заработает с 74HC00 :)
Правда, в некоторых ДШ утверждают, что линии данных надо переводить в Z состояние после чтения дисплея, иначе конфликт на линиях.
Протеус согласен с этим. В случае с портом Р0, не помню надо это или нет, посмотрите сами внимательнее.
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Пока_без_кота »

Rtmip писал(а): Думаю это опечатка: 74HC04, ведь это 6 инверторов. 74HC00 - это вы имели ввиду, похоже...

Доброе утро, уважаемый.
Нет, я использовал 74НС04 сознательно. У меня WR и RD подключены каждый через свой инвертирующий буфер на вход Е дисплея. Просто оставшиеся 4 буфера я хочу использовать для инвертирования сигналов с разнообразных датчиков, так как у них в основном активный высокий логический уровень, а внешние прерывания у MCS-51 только по спаду (или просто низкому уровню). А вот с # я как всегда налажал)) Спасибо за подсказку.
И вообще, я удалил 1 сущность, заменив mov A, LCD_Port на уже существующую mov A, WriteData. Ведь действительно, за счет чего там будет устанавливаться высокий логический уровень, если подтягивающих резисторов нет)) Что-то отличное от 0 мы можем выдать туда только с помощью команд работы с внешней памятью.
Но оно все равно не взлетело, я где-то еще ошибся.
Rtmip
Держит паяльник хвостом
Сообщения: 963
Зарегистрирован: Чт апр 03, 2014 23:16:55
Откуда: Россия

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Rtmip »

Доброе утро!
Пока_без_кота писал(а):Но оно все равно не взлетело, я где-то еще ошибся.
Было бы очень удивительно, если бы "оно" заработало! :))
Давайте разберемся в чем тут дело. По программе, нет вопросов, если учесть мои замечания, которые были ранее. Программа рабочая.
Пока_без_кота писал(а):Нет, я использовал 74НС04 сознательно. У меня WR и RD подключены каждый через свой инвертирующий буфер на вход Е дисплея.
А вот это никуда не годится! Я же уже отмечал эту ошибку. У вас сейчас там выходы ваших инверторов соединены вместе и подключены на "Е" дисплея.
В результате конфликт уровней! Пока на одном выходе лог. 0, на другом возникает лог. 1 при чтении или записи дисплея.
Если не хотите использовать дополнительный элемент И-НЕ, то уберите один из инверторов вообще. Выход оставшегося как и был к "Е" дисплея.
А выводы МК "WR" и "RD" подключите через диоды к входу оставшегося инвертора. Катоды к МК, аноды к инвертору.
Вход ивертора через резистор 7-15 кОм к плюсу питания (подтяжка). Получится элемент И-НЕ :idea:
Пока_без_кота писал(а):Ведь действительно, за счет чего там будет устанавливаться высокий логический уровень, если подтягивающих резисторов нет))
А вот действительно, за счет чего? Думаю - подтягивающие резисторы нужны. Поэтому, меняйте схему подключения и все "взлетит" :beer:
По поводу программы, если надумаете ее модернизировать, то я бы посоветовал это сделать так:
в основном цикле работать с дисплеем (как сейчас), по прерываниям, таймерам, вызывать подпрограммы обработки датчиков и прочее.
В них сохранять и восстанавливать аккумулятор, а вот при работе с дисплеем можно уже не делать этого, просто закинули в аккумулятор данные,
затем вызвали подпрограмму вывода на дисплей и не волнуемся, что содержимое аккумулятора изменится. Ну это уже на вкус и цвет... :)
Ответить

Вернуться в «Разные вопросы по МК»