MCS51, вопросы перехода с "классики" на SiLabs...

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: MCS51, вопросы перехода с "классики" на SiLabs...

Сообщение Gudd-Head »

Chip115 писал(а):да. вылечен. мне больше 2 к не давал :(

Вы точно не путаете флэш с ОЗУ?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: MCS51, вопросы перехода с "классики" на SiLabs...

Сообщение Chip115 »

я уже не знаю что с чем путать. Окончательно запутался
1.3. Встроенная память
CIP-51 имеет стандартную (8051) структуру адресного пространства памяти программ и данных. В
состав памяти входит ОЗУ данных объемом 256 байт, старшие 128 байт которого имеют двойную
конфигурацию. В режиме косвенной адресации осуществляется доступ к старшим 128 байтам ОЗУ общего
назначения, а в режиме прямой адресации осуществляется доступ к 128 байтам адресного пространства
регистров специального назначения (SFR). Младшие 128 байт ОЗУ доступны как для прямой, так и для
косвенной адресации. Из них первые 32 байта адресуются как четыре банка регистров общего назначения, а
следующие 16 байт могут адресоваться как побайтно, так и побитно.
Память программ МК состоит из 32 Кбайт (‘F410/1) или 16 Кбайт (‘F412/3) Flash-памяти. Эта память
может перепрограммироваться внутрисистемно секторами по 512 байт, не требуя при этом специального
внешнего напряжения программирования.
Вложения
настройка.JPG
скрин настройки кейла
(59.23 КБ) 620 скачиваний
озу.JPG
память
(110.42 КБ) 362 скачивания
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: MCS51, вопросы перехода с "классики" на SiLabs...

Сообщение Gudd-Head »

Ух ты... Где это такое окошечко настроек?
И что выдаёт компилятор?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: MCS51, вопросы перехода с "классики" на SiLabs...

Сообщение Chip115 »

нужна помощь в асме. я там колом.
имеется стартап

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

$NOMOD51
;----------
;  This file is part of the C51 Compiler package
;  Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc.
;  Version 8.01
;
;  *** <<< Use Configuration Wizard in Context Menu >>> ***
;----------
;  STARTUP.A51:  This code is executed after processor reset.
;
;  To translate this file use A51 with the following invocation:
;
;     A51 STARTUP.A51
;
;  To link the modified STARTUP.OBJ file to your application use the following
;  Lx51 invocation:
;
;     Lx51 your object file list, STARTUP.OBJ  controls
;
;----------
;
;  User-defined <h> Power-On Initialization of Memory
;
;  With the following EQU statements the initialization of memory
;  at processor reset can be defined:
;
; <o> IDATALEN: IDATA memory size <0x0-0x100>
;     <i> Note: The absolute start-address of IDATA memory is always 0
;     <i>       The IDATA space overlaps physically the DATA and BIT areas.
IDATALEN        EQU     80H
;
; <o> XDATASTART: XDATA memory start address <0x0-0xFFFF>
;     <i> The absolute start address of XDATA memory
XDATASTART      EQU     0     
;
; <o> XDATALEN: XDATA memory size <0x0-0xFFFF>
;     <i> The length of XDATA memory in bytes.
XDATALEN        EQU     0     
;
; <o> PDATASTART: PDATA memory start address <0x0-0xFFFF>
;     <i> The absolute start address of PDATA memory
PDATASTART      EQU     0H
;
; <o> PDATALEN: PDATA memory size <0x0-0xFF>
;     <i> The length of PDATA memory in bytes.
PDATALEN        EQU     0H
;
;</h>
;----------
;
;<h> Reentrant Stack Initialization
;
;  The following EQU statements define the stack pointer for reentrant
;  functions and initialized it:
;
; <h> Stack Space for reentrant functions in the SMALL model.
;  <q> IBPSTACK: Enable SMALL model reentrant stack
;     <i> Stack space for reentrant functions in the SMALL model.
IBPSTACK        EQU     0       ; set to 1 if small reentrant is used.
;  <o> IBPSTACKTOP: End address of SMALL model stack <0x0-0xFF>
;     <i> Set the top of the stack to the highest location.
IBPSTACKTOP     EQU     0xFF +1     ; default 0FFH+1 
; </h>
;
; <h> Stack Space for reentrant functions in the LARGE model.     
;  <q> XBPSTACK: Enable LARGE model reentrant stack
;     <i> Stack space for reentrant functions in the LARGE model.
XBPSTACK        EQU     0       ; set to 1 if large reentrant is used.
;  <o> XBPSTACKTOP: End address of LARGE model stack <0x0-0xFFFF>
;     <i> Set the top of the stack to the highest location.
XBPSTACKTOP     EQU     0xFFFF +1   ; default 0FFFFH+1
; </h>
;
; <h> Stack Space for reentrant functions in the COMPACT model.   
;  <q> PBPSTACK: Enable COMPACT model reentrant stack
;     <i> Stack space for reentrant functions in the COMPACT model.
PBPSTACK        EQU     0       ; set to 1 if compact reentrant is used.
;
;   <o> PBPSTACKTOP: End address of COMPACT model stack <0x0-0xFFFF>
;     <i> Set the top of the stack to the highest location.
PBPSTACKTOP     EQU     0xFF +1     ; default 0FFH+1 
; </h>
;</h>
;----------
;
;  Memory Page for Using the Compact Model with 64 KByte xdata RAM
;  <e>Compact Model Page Definition
;
;  <i>Define the XDATA page used for PDATA variables.
;  <i>PPAGE must conform with the PPAGE set in the linker invocation.
;
; Enable pdata memory page initalization
PPAGEENABLE     EQU     0       ; set to 1 if pdata object are used.
;
; <o> PPAGE number <0x0-0xFF>
; <i> uppermost 256-byte address of the page used for PDATA variables.
PPAGE           EQU     0
;
; <o> SFR address which supplies uppermost address byte <0x0-0xFF>
; <i> most 8051 variants use P2 as uppermost address byte
PPAGE_SFR       DATA    0A0H
;
; </e>
;----------

; Standard SFR Symbols
ACC     DATA    0E0H
B       DATA    0F0H
SP      DATA    81H
DPL     DATA    82H
DPH     DATA    83H

                NAME    ?C_STARTUP


?C_C51STARTUP   SEGMENT   CODE
?STACK          SEGMENT   IDATA
            
                RSEG    ?STACK
                DS      1

                EXTRN CODE (?C_START)
                PUBLIC  ?C_STARTUP

                CSEG    AT      0
?C_STARTUP:     LJMP    STARTUP1

                RSEG    ?C_C51STARTUP

STARTUP1:   
               
IF IDATALEN <> 0
            
            
                MOV     R0,#IDATALEN - 1
                CLR     A
IDATALOOP:      MOV     @R0,A
                DJNZ    R0,IDATALOOP
ENDIF

IF XDATALEN <> 0
                MOV     DPTR,#XDATASTART
                MOV     R7,#LOW (XDATALEN)
  IF (LOW (XDATALEN)) <> 0
                MOV     R6,#(HIGH (XDATALEN)) +1
  ELSE
                MOV     R6,#HIGH (XDATALEN)
  ENDIF
                CLR     A
XDATALOOP:      MOVX    @DPTR,A
                INC     DPTR
                DJNZ    R7,XDATALOOP
                DJNZ    R6,XDATALOOP
ENDIF

IF PPAGEENABLE <> 0
                MOV     PPAGE_SFR,#PPAGE
ENDIF

IF PDATALEN <> 0
                MOV     R0,#LOW (PDATASTART)
                MOV     R7,#LOW (PDATALEN)
                CLR     A
PDATALOOP:      MOVX    @R0,A
                INC     R0
                DJNZ    R7,PDATALOOP
ENDIF

IF IBPSTACK <> 0
EXTRN DATA (?C_IBP)

                MOV     ?C_IBP,#LOW IBPSTACKTOP
ENDIF

IF XBPSTACK <> 0
EXTRN DATA (?C_XBP)

                MOV     ?C_XBP,#HIGH XBPSTACKTOP
                MOV     ?C_XBP+1,#LOW XBPSTACKTOP
ENDIF

IF PBPSTACK <> 0
EXTRN DATA (?C_PBP)
                MOV     ?C_PBP,#LOW PBPSTACKTOP
ENDIF

                MOV     SP,#?STACK-1

; This code is required if you use L51_BANK.A51 with Banking Mode 4
;<h> Code Banking
; <q> Select Bank 0 for L51_BANK.A51 Mode 4
#if 0   
;     <i> Initialize bank mechanism to code bank 0 when using L51_BANK.A51 with Banking Mode 4.
EXTRN CODE (?B_SWITCH0)
                CALL    ?B_SWITCH0      ; init bank mechanism to code bank 0
#endif
;</h>
                LJMP    ?C_START

                END


нужно куда нить воткнуть что бы работало вот это

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

ANL  PCA0MD,    #0BFh
MOV  PCA0MD,    #000h

Это типа отключается вочдог таймер.
А на счет того окна это Flash/Configure flash tolls.../Tagerts
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: MCS51, вопросы перехода с "классики" на SiLabs...

Сообщение Gudd-Head »

Ё-моё, что это за жесть? Что за стартап такой?
"Flash/Configure flash tolls.../Tagerts" что-то у меня нет такого... :dont_know:
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: MCS51, вопросы перехода с "классики" на SiLabs...

Сообщение Chip115 »

как нет? у меня кеил микровижн 4. можно еще через targets options
а этот старт ап сгенерирован кейлом при создании нового проекта.
Вложения
2.JPG
(27 КБ) 550 скачиваний
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: MCS51, вопросы перехода с "классики" на SiLabs...

Сообщение Chip115 »

Все. проблема решена. Дело было в том что массивы долго забивались и вочдог срабатывал. При сбросе воча в стартапе проблема исчезла. Буду мучить микру дальше :)
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Аватара пользователя
Paguo-86PK
Опытный кот
Сообщения: 811
Зарегистрирован: Чт авг 19, 2010 23:49:19
Откуда: Ташкент
Контактная информация:

Re: MCS51, вопросы перехода с "классики" на SiLabs...

Сообщение Paguo-86PK »

А какая DemoBoard с PIC+ADC+DAC мне подойдёт, чтобы всё дёшего, сердито, но хватало на организацию линии задержки видеокадра через магазинное ОЗУ? АЦП/ЦАП подойдёт и с малой (4-8) разрядностью. Главное, чтобы можно было задержать поток от 1/512 строки до 625 строк?
Это необходимо к теме OSD/OSM.
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: MCS51, вопросы перехода с "классики" на SiLabs...

Сообщение Chip115 »

Можете взглянуть на настройки таймера 3?
По плану должен каждые 10мс вызывать прерывания
Интересует место, где сбрасываются флаги в подпрограмме обработки прерывания.
C8051

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

void Timer3_Init(void)
{
  TMR3CN    = 0x04;               // òàéìåð3 â 16 áèò. ðåæèìå âêëþ÷åí. ïðåääåëèòåëü ÷àñòîòû 1:12
  EIE1      = 0x80;               // Âêëþ÷èòü ïðåðûâàíèå îò òàéìåðà3
  TMR3L     = 0x3F;            // 06         10 ms
  TMR3H     = 0xB0;            // f8 1 ìñ

}
void Timer3_ISR (void) interrupt 14
{
   TMR3CN=TMR3CN^0xC0;          // сбрасываем флаги TF3H TF3L
   
   if (test2==1)
   {   
      MC3PHAC_Send(cmd_FORW,sizeof(cmd_FORW));  // start
      test2=0;
   }
   
   
       
}
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: MCS51, вопросы перехода с "классики" на SiLabs...

Сообщение Gudd-Head »

Chip115 писал(а):Можете взглянуть на настройки таймера 3?
Интересует место, где сбрасываются флаги в подпрограмме обработки прерывания.

И?...
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: MCS51, вопросы перехода с "классики" на SiLabs...

Сообщение Chip115 »

В подпрограмму обработки не переходит (
Есть еще одна проблема.
МК С8051F410 и имеется клавиатура. Проводники меж платой с МК и клавиатурой длинные,да еще собраны все в кучу. + рядом проходят импульсные высоковольтные цепи и аналогичные низковольтные.
Клава тупит в общем. Вероятнее всего наводки. т.к раньше клава срабатывала при подносе руки к шлейфу от клавиатуры. Как можно побороть зло? Перекомпоновка не получится. уж сильно маленький корпус,что бы размахнуться. И проводники короче сделать нельзя.
Хотел побороть программно.
Ввести цикл. Счетчик отсчитывает в так с мк скажем 100. И если этот счетчик дойдет до ста, значит срабатывание истинное,иначе наводка пришла. Ведь если дело в ней,то она не сможет довести этот счетчик до 100. По любому где нить просядет и заново цикл начнется.
Но почему то на практике все остается без изменений . Что не так?
Схема прилагается. Так же кусок кода опроса клавы.
массивы , которые тут юзаю и функции

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

xdata unsigned char mas[]={0x36,0x2E,0x1E,0x35,0x2D,0x1D,0x33,0x2B,0x1B};    // массив состояний клавиатуры
char check_noise ()
{
   unsigned char nCounter=0;                               // переменная для хранения инкремента    
   for (nCounter=0; nCounter < NCOUNTER; nCounter++) {}
   return nCounter;
}



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

//----------
// Function for scan of keyboard
//----------
void Scan (void)
{   
   P1=0x3E;                                                       // выберем столбик для опроса на порту P 1.2
   if(P1==mas[0])                     // если нажата Dn_1
   {
     while (P1==mas[0]) {cnoise=check_noise ();}   // проверяем на истинность срабатывания
     if (cnoise==NCOUNTER)                                 /* если check_noise () вернула значение равное NCOUNTER, то                                            срабатывание истинное*/
     {
      
     }    
   }
   if (P1==mas[1] )                     // если нажата up_1
   {
     while (P1==mas[1]) {cnoise=check_noise ();}
     if (cnoise==NCOUNTER)
     {
      
     }   
   }   
   if (P1==mas[2])                         // если нажат сброс "Штанга"
   {
       while (P1==mas[2]) {cnoise=check_noise ();}
     if (cnoise==NCOUNTER)
     {
      
      }
   }   

   P1=0x3D;                                                       // выберем столбик для опроса на порту P 1.1
   if(P1==mas[3] )                     // если нажата Dn_0
   {
     while (P1==mas[3]) {cnoise=check_noise ();}
     if (cnoise==NCOUNTER)
     {
            
      } }
   }
   if (P1==mas[4])                     // If press  up_0   .
   {
      while (P1==mas[4]) {cnoise=check_noise ();}
     if (cnoise==NCOUNTER)
     {
      
      }
   }
   if (P1==mas[5]&flag_1==0)                     // если нажата res_t         .
   {
      while (P1==mas[5]) {cnoise=check_noise ();}
     if (cnoise==NCOUNTER)
     {
      
     }
   }   

   P1=0x3B;                                                       // выберем столбик для опроса на порту P 1.0
   if(P1==mas[6])                     //  если нажат стоп
   {
      while (P1==mas[6]) {cnoise=check_noise ();}
     if (cnoise==NCOUNTER)
     {
      
     }                     
   }
   if (P1==mas[7] )                     //  если нажат старт
   {
     while (P1==mas[7]) {cnoise=check_noise ();}
     if (cnoise==NCOUNTER)
     {
      
      }   
   }
   if (P1==mas[8])                     // если нажат  s/l
   {
      while (P1==mas[8]) {cnoise=check_noise ();}
      if (cnoise==NCOUNTER)
     {
      
           }      
   
   } 
   
}

схема
Изображение
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: MCS51, вопросы перехода с "классики" на SiLabs...

Сообщение Gudd-Head »

Chip115 писал(а):Проводники меж платой с МК и клавиатурой длинные,да еще собраны все в кучу. + рядом проходят импульсные высоковольтные цепи и аналогичные низковольтные.

Экранирование, витая пара, сдвоенные дроссели и т.п.. В общем, наверняка можно что-то придумать.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: MCS51, вопросы перехода с "классики" на SiLabs...

Сообщение МитяРа »

Chip115 писал(а):Есть еще одна проблема.

Ты пробовал, как мя те посоветовал сканировать единицей и повесить на обратные линии по 2.4кОм на землю?
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: MCS51, вопросы перехода с "классики" на SiLabs...

Сообщение Chip115 »

МитяРа писал(а):
Chip115 писал(а):Есть еще одна проблема.

Ты пробовал, как мя те посоветовал сканировать единицей и повесить на обратные линии по 2.4кОм на землю?

нет. я тока перенес тему сюда. Сча от универа отойду и за паяльник сяду ) Попробую )
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: MCS51, вопросы перехода с "классики" на SiLabs...

Сообщение МитяРа »

Chip115 писал(а):Попробую )

Была у мя классная книжка издательства Бином "Справочник по ОМЭВМ", там очень хорошо описано со схемами сканирование клавиатуры..
Если не найдёшь, могу прислать по почте...
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: MCS51, вопросы перехода с "классики" на SiLabs...

Сообщение Chip115 »

МитяРа писал(а):
Chip115 писал(а):Попробую )

Была у мя классная книжка издательства Бином "Справочник по ОМЭВМ", там очень хорошо описано со схемами сканирование клавиатуры..
Если не найдёшь, могу прислать по почте...

она?
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: MCS51, вопросы перехода с "классики" на SiLabs...

Сообщение МитяРа »

Chip115 писал(а):она?

Угу.. Хорошая книжка про классику..
Только сразу предупрежу, там очепятки встречаются..
Из-за одной такой, мя неделю не мог понять, почему прога неправильно работает..
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: MCS51, вопросы перехода с "классики" на SiLabs...

Сообщение Chip115 »

Буду внимателен ) И еще... Единицами не получится опрашивать...у меня диоды стоят,а выпаивать их не благодарное дело. Не факт что поможет, а возни куча. много времени убью. Монтаж через опу. пол установки надо разобрать (((
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: MCS51, вопросы перехода с "классики" на SiLabs...

Сообщение МитяРа »

Chip115 писал(а):у меня диоды стоят,

Мя про диоды те ничего не говорил. Почему ты решил, что их выпаивать надо..
Надо поставить три сопротивления на корпус и изменить алгоритм на сканирование единицей..

P.S А диоды стоят для того, что-бы порты не вышибло при нажатии нескольких клавиш.. :wink:

Вот посмотри, это страничка из этой книги:
Вложения
skn.png
(63.5 КБ) 334 скачивания
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: MCS51, вопросы перехода с "классики" на SiLabs...

Сообщение Chip115 »

Блин. я нуб . У меня (по моей проге) нули перебираю по 0 1 2, а считываю состояние с 3 4 5... это же не верно? Должно быть на оборот...с диодов считывать . так?
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»