Вы точно не путаете флэш с ОЗУ?Chip115 писал(а):да. вылечен. мне больше 2 к не давал
MCS51, вопросы перехода с "классики" на SiLabs...
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: MCS51, вопросы перехода с "классики" на SiLabs...
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Реклама
- Chip115
- Сверлит текстолит когтями
- Сообщения: 1132
- Зарегистрирован: Пт фев 16, 2007 14:18:20
- Откуда: Новосибирск
- Контактная информация:
Re: MCS51, вопросы перехода с "классики" на SiLabs...
я уже не знаю что с чем путать. Окончательно запутался
1.3. Встроенная память
CIP-51 имеет стандартную (8051) структуру адресного пространства памяти программ и данных. В
состав памяти входит ОЗУ данных объемом 256 байт, старшие 128 байт которого имеют двойную
конфигурацию. В режиме косвенной адресации осуществляется доступ к старшим 128 байтам ОЗУ общего
назначения, а в режиме прямой адресации осуществляется доступ к 128 байтам адресного пространства
регистров специального назначения (SFR). Младшие 128 байт ОЗУ доступны как для прямой, так и для
косвенной адресации. Из них первые 32 байта адресуются как четыре банка регистров общего назначения, а
следующие 16 байт могут адресоваться как побайтно, так и побитно.
Память программ МК состоит из 32 Кбайт (‘F410/1) или 16 Кбайт (‘F412/3) Flash-памяти. Эта память
может перепрограммироваться внутрисистемно секторами по 512 байт, не требуя при этом специального
внешнего напряжения программирования.
1.3. Встроенная память
CIP-51 имеет стандартную (8051) структуру адресного пространства памяти программ и данных. В
состав памяти входит ОЗУ данных объемом 256 байт, старшие 128 байт которого имеют двойную
конфигурацию. В режиме косвенной адресации осуществляется доступ к старшим 128 байтам ОЗУ общего
назначения, а в режиме прямой адресации осуществляется доступ к 128 байтам адресного пространства
регистров специального назначения (SFR). Младшие 128 байт ОЗУ доступны как для прямой, так и для
косвенной адресации. Из них первые 32 байта адресуются как четыре банка регистров общего назначения, а
следующие 16 байт могут адресоваться как побайтно, так и побитно.
Память программ МК состоит из 32 Кбайт (‘F410/1) или 16 Кбайт (‘F412/3) Flash-памяти. Эта память
может перепрограммироваться внутрисистемно секторами по 512 байт, не требуя при этом специального
внешнего напряжения программирования.
- Вложения
-
- настройка.JPG
- скрин настройки кейла
- (59.23 КБ) 622 скачивания
-
- озу.JPG
- память
- (110.42 КБ) 365 скачиваний
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
© Альберт Эйнштейн
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: MCS51, вопросы перехода с "классики" на SiLabs...
Ух ты... Где это такое окошечко настроек?
И что выдаёт компилятор?
И что выдаёт компилятор?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Chip115
- Сверлит текстолит когтями
- Сообщения: 1132
- Зарегистрирован: Пт фев 16, 2007 14:18:20
- Откуда: Новосибирск
- Контактная информация:
Re: MCS51, вопросы перехода с "классики" на SiLabs...
нужна помощь в асме. я там колом.
имеется стартап
нужно куда нить воткнуть что бы работало вот это
Это типа отключается вочдог таймер.
А на счет того окна это Flash/Configure flash tolls.../Tagerts
имеется стартап
Код: Выделить всё
$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...
Ё-моё, что это за жесть? Что за стартап такой?
"Flash/Configure flash tolls.../Tagerts" что-то у меня нет такого...
"Flash/Configure flash tolls.../Tagerts" что-то у меня нет такого...
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Реклама
- Chip115
- Сверлит текстолит когтями
- Сообщения: 1132
- Зарегистрирован: Пт фев 16, 2007 14:18:20
- Откуда: Новосибирск
- Контактная информация:
Re: MCS51, вопросы перехода с "классики" на SiLabs...
как нет? у меня кеил микровижн 4. можно еще через targets options
а этот старт ап сгенерирован кейлом при создании нового проекта.
а этот старт ап сгенерирован кейлом при создании нового проекта.
- Вложения
-
- 2.JPG
- (27 КБ) 553 скачивания
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
© Альберт Эйнштейн
- Chip115
- Сверлит текстолит когтями
- Сообщения: 1132
- Зарегистрирован: Пт фев 16, 2007 14:18:20
- Откуда: Новосибирск
- Контактная информация:
Re: MCS51, вопросы перехода с "классики" на SiLabs...
Все. проблема решена. Дело было в том что массивы долго забивались и вочдог срабатывал. При сбросе воча в стартапе проблема исчезла. Буду мучить микру дальше 
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
© Альберт Эйнштейн
- Paguo-86PK
- Опытный кот
- Сообщения: 811
- Зарегистрирован: Чт авг 19, 2010 23:49:19
- Откуда: Ташкент
- Контактная информация:
Re: MCS51, вопросы перехода с "классики" на SiLabs...
А какая DemoBoard с PIC+ADC+DAC мне подойдёт, чтобы всё дёшего, сердито, но хватало на организацию линии задержки видеокадра через магазинное ОЗУ? АЦП/ЦАП подойдёт и с малой (4-8) разрядностью. Главное, чтобы можно было задержать поток от 1/512 строки до 625 строк?
Это необходимо к теме OSD/OSM.
Это необходимо к теме OSD/OSM.
- Chip115
- Сверлит текстолит когтями
- Сообщения: 1132
- Зарегистрирован: Пт фев 16, 2007 14:18:20
- Откуда: Новосибирск
- Контактная информация:
Re: MCS51, вопросы перехода с "классики" на SiLabs...
Можете взглянуть на настройки таймера 3?
По плану должен каждые 10мс вызывать прерывания
Интересует место, где сбрасываются флаги в подпрограмме обработки прерывания.
C8051
По плану должен каждые 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...
И?...Chip115 писал(а):Можете взглянуть на настройки таймера 3?
Интересует место, где сбрасываются флаги в подпрограмме обработки прерывания.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Chip115
- Сверлит текстолит когтями
- Сообщения: 1132
- Зарегистрирован: Пт фев 16, 2007 14:18:20
- Откуда: Новосибирск
- Контактная информация:
Re: MCS51, вопросы перехода с "классики" на SiLabs...
В подпрограмму обработки не переходит (
Есть еще одна проблема.
МК С8051F410 и имеется клавиатура. Проводники меж платой с МК и клавиатурой длинные,да еще собраны все в кучу. + рядом проходят импульсные высоковольтные цепи и аналогичные низковольтные.
Клава тупит в общем. Вероятнее всего наводки. т.к раньше клава срабатывала при подносе руки к шлейфу от клавиатуры. Как можно побороть зло? Перекомпоновка не получится. уж сильно маленький корпус,что бы размахнуться. И проводники короче сделать нельзя.
Хотел побороть программно.
Ввести цикл. Счетчик отсчитывает в так с мк скажем 100. И если этот счетчик дойдет до ста, значит срабатывание истинное,иначе наводка пришла. Ведь если дело в ней,то она не сможет довести этот счетчик до 100. По любому где нить просядет и заново цикл начнется.
Но почему то на практике все остается без изменений . Что не так?
Схема прилагается. Так же кусок кода опроса клавы.
массивы , которые тут юзаю и функции
схема

Есть еще одна проблема.
МК С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...
Экранирование, витая пара, сдвоенные дроссели и т.п.. В общем, наверняка можно что-то придумать.Chip115 писал(а):Проводники меж платой с МК и клавиатурой длинные,да еще собраны все в кучу. + рядом проходят импульсные высоковольтные цепи и аналогичные низковольтные.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: MCS51, вопросы перехода с "классики" на SiLabs...
Ты пробовал, как мя те посоветовал сканировать единицей и повесить на обратные линии по 2.4кОм на землю?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...
нет. я тока перенес тему сюда. Сча от универа отойду и за паяльник сяду ) Попробую )МитяРа писал(а):Ты пробовал, как мя те посоветовал сканировать единицей и повесить на обратные линии по 2.4кОм на землю?Chip115 писал(а):Есть еще одна проблема.
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
© Альберт Эйнштейн
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 писал(а):Попробую )
Если не найдёшь, могу прислать по почте...
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
© Альберт Эйнштейн
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...
Буду внимателен ) И еще... Единицами не получится опрашивать...у меня диоды стоят,а выпаивать их не благодарное дело. Не факт что поможет, а возни куча. много времени убью. Монтаж через опу. пол установки надо разобрать (((
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
© Альберт Эйнштейн
Re: MCS51, вопросы перехода с "классики" на SiLabs...
Мя про диоды те ничего не говорил. Почему ты решил, что их выпаивать надо..Chip115 писал(а):у меня диоды стоят,
Надо поставить три сопротивления на корпус и изменить алгоритм на сканирование единицей..
P.S А диоды стоят для того, что-бы порты не вышибло при нажатии нескольких клавиш..
Вот посмотри, это страничка из этой книги:
- Вложения
-
- skn.png
- (63.5 КБ) 338 скачиваний
[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...
Блин. я нуб . У меня (по моей проге) нули перебираю по 0 1 2, а считываю состояние с 3 4 5... это же не верно? Должно быть на оборот...с диодов считывать . так?
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
© Альберт Эйнштейн


