Форум программистов, компьютерный форум, киберфорум
Измерительная техника
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/117: Рейтинг темы: голосов - 117, средняя оценка - 4.56
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536

Замена микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК

31.08.2019, 07:43. Показов 30692. Ответов 229
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как заменить 1827ВЕ1-0000000 (аналог 586ВЕ1, система команд в книжке Гамкрелидзе, кажется, отрицательная логика на мультиплексированной шине адреса-данных , нестандартный UART ) в Г4-164 на AVR -МК ATMEGA8A, ATMEGA48, ATMEGA8535, используя , например, маскированные прерывания от одного из портов, битвайсовую эмуляцию пинов (шину ПЗУ можно не использовать ), подпрограммы задержки , используя С++, ассемблерные вставки ? Предусмотреть частоты , а которых переключаются фильтры, увеличение девиации в n раз в коэффициентах АЦП при включении делителей на n, таблицу коэффициентов в ЦАП в децибелах (с учетом , например, того , что 31,7-100 мВ , на 31,6 переключается аттенюатор и включается верх напряжения ЦАП ОН ), обработку прерывания от КОП и другие функции , как по инструкции (https://www.astena.ru/teh_3.html ) ?
Миниатюры
Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК  
Вложения
Тип файла: zip img012.zip (1.35 Мб, 38 просмотров)
Тип файла: zip g4-164_shems.zip (5.48 Мб, 35 просмотров)
Тип файла: zip g4-164_teh.zip (5.28 Мб, 35 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.08.2019, 07:43
Ответы с готовыми решениями:

Замена микросборок 2.030.036 ,2.030.034 в Г4-164, Г4-176
Замена микросборок 2.030.036 в Г4-164, 2.030.034 в Г4-176 : на какие транзисторы в современных условиях лучше заменить...

замена микросхемы
Нужно заменить микросхему драйвер двигателя на HDD Smooth 100369972 . На али есть такие схемки но смущает то что цифробуквы на моей схемке...

Замена микросхемы AT49F002NT
Господа! Если кто знает ,какая микросхема может заменить AT49F002NT?

229
0 / 0 / 0
Регистрация: 21.10.2019
Сообщений: 13
28.10.2019, 16:02
Студворк — интернет-сервис помощи студентам
Читайте про 15 ногу 588ИР1
Миниатюры
Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК   Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК  
0
0 / 0 / 0
Регистрация: 21.10.2019
Сообщений: 13
28.10.2019, 16:04
В картинке из МПСиС-1988-4 15 нога ИР1 висит на земле
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
28.10.2019, 16:50  [ТС]
Значит , коды ША для МШАД в режиме адреса инверсные , то есть это неИ-шина ,у нас триггеры в схеме без инверсии, значит особенности мэппинга памяти, а ПЗУ прошивается инверсными кодами (в сравнении с кодами по системе команд МК ), так ? И адреса у нас нестандартные (на случай виртуалки ). Снэпшоты - это снэпшоты, просто коды , а не особенности ассемблера этого МК .

Добавлено через 4 минуты
В 564ТМ3 у нас выходы без инверсии https://www.microshemca.ru/M.K561TM3/ (аналогично, для 564 -й) .Информация на случай изобретения ассемблера и виртуалки .

Добавлено через 2 минуты
Значит шьется данными такими , как из снепшота (там осциллографическое представление, положительная логика ) , являющимися инверсными в сравнении с системой команд, записанной для отрицательной логики для неИ-шины ?

Добавлено через 2 минуты
В адресах в генераторе 2,11,1,10 а не 3,9,12,15 , важно при членении на субПЗУ для 4* 573РФ1 и их номеров .

Добавлено через 2 минуты
А как Г4-165-м флэшку вместо ОЗУ приделать на память коэффициентов ЧМ ( батарейка подпитки ОЗУ уже села)?

Добавлено через 9 минут
В статье , кажется не надо шить адресами задом наперед (там инверсия в регистре-защелке стоит, без нее бы 0x0000 ОЛ->0xFFFF ПЛ ПЗУ ) , у нас вообще лукап-табличное соответствие для удобной разработчику топологии , шифрованности и простоты монтажа .
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
28.10.2019, 18:07  [ТС]
Немного не по теме, но при этом же процессоре : у кого есть схема включения 561КТ3 в Г4-165, связанной с "ЗЗ" ? Фото взял с www.mantrid.ru/forum/
Миниатюры
Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК   Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК   Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК  

0
0 / 0 / 0
Регистрация: 21.10.2019
Сообщений: 13
28.10.2019, 20:18
Система микропроцессорная Электроника МС 2703. Техническое описание 1.700.038 ТО (1990), Там, где применяется 1827ВЕ1 000044
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
28.10.2019, 23:06  [ТС]
В "Электроника МС 2703 " он с внутренним масочным ПЗУ работает , у нас с INT8 (5) на SEA (22) (про прерівания, включающие внешнее ПЗУ).

Добавлено через 26 минут
Сведения про И# -шину 586ВМ1 (правда , это как в девиометрах , но у 586РЕ1, С5 , 586ВЕ1 есть нечто аналогичное по архитектуре и обращению к ЗУ с отр. логикой ) http://www.nedopc.org/forum/vi... 39&t=10619
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
28.10.2019, 23:28  [ТС]
Сведения про уровни лог 0 и лог 1 И-шины указаны в документе, в 586РЕ1 над битами И0 ...И15 инверсия
Вложения
Тип файла: zip ussr-586.djvu.zip (1.65 Мб, 19 просмотров)
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
28.10.2019, 23:35  [ТС]
но для А5-А14, в режиме адреса
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
28.10.2019, 23:41  [ТС]
Еще инфоромация про И-шину
Вложения
Тип файла: zip Electronica-S5-21.djvu.zip (15.21 Мб, 23 просмотров)
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
28.10.2019, 23:53  [ТС]
В нашей ЭВМ используется AД4 -АД14

Добавлено через 2 минуты
Ну , с MCS-51 теоретически с внешним ОЗУ получается и без шины ЗУ, но с переходной платой , а вот на случай моделирования в виртуалке работы МК и сравнения с нашим стоит подумать.
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
29.10.2019, 00:04  [ТС]
Еще сведения про !И-шину (про ОЗУ,ПЗУ)
Вложения
Тип файла: zip s5-21_teh.zip (1.16 Мб, 26 просмотров)
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
29.10.2019, 16:21  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
#include <stdio.h>
#include <conio.h>
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
 
 
#define A0_ADPIN 5
#define A1_ADPIN 7
#define A2_ADPIN 6
#define A3_ADPIN 13
#define A4_ADPIN 10
#define A5_ADPIN 8
#define A6_ADPIN 11
#define A7_ADPIN 9
#define A8_ADPIN 14
#define A9_ADPIN 12
#define A10_ADPIN 4
 
#define A0_ROM_BIT 0
#define A1_ROM_BIT 1
#define A2_ROM_BIT 2
#define A3_ROM_BIT 3
#define A4_ROM_BIT 4
#define A5_ROM_BIT 5
#define A6_ROM_BIT 6
#define A7_ROM_BIT 7
#define A8_ROM_BIT 8
#define A9_ROM_BIT 9
#define A10_ROM_BIT 10
 
 
 
 
#define  ROM1_DB0_bit 0
#define  ROM1_DB1_bit 1
#define  ROM1_DB2_bit 2
#define  ROM1_DB3_bit 3
#define  ROM1_DB4_bit 4
#define  ROM1_DB5_bit 5
#define  ROM1_DB6_bit 6
#define  ROM1_DB7_bit 7
 
 
#define  ROM1_DB0_bit_pin 0
#define  ROM1_DB1_bit_pin 1
#define  ROM1_DB2_bit_pin 2
#define  ROM1_DB3_bit_pin 3
#define  ROM1_DB4_bit_pin 4
#define  ROM1_DB5_bit_pin  5
#define  ROM1_DB6_bit_pin 6
#define  ROM1_DB7_bit_pin 7
 
 
 
 
#define  ROM2_DB0_bit 0
#define  ROM2_DB1_bit 1
#define  ROM2_DB2_bit 2
#define  ROM2_DB3_bit 3
#define  ROM2_DB4_bit 4
#define  ROM2_DB5_bit 5
#define  ROM2_DB6_bit 6
#define  ROM2_DB7_bit 7
 
#define  ROM2_DB0_bit_pin 0
#define  ROM2_DB1_bit_pin 1
#define  ROM2_DB2_bit_pin 2
#define  ROM2_DB3_bit_pin 3
#define  ROM2_DB4_bit_pin 4
#define  ROM2_DB5_bit_pin  5
#define  ROM2_DB6_bit_pin 6
#define  ROM2_DB7_bit_pin 7
 
#define   ADB0_bit 0
#define   ADB1_bit  1
#define   ADB2_bit  2
#define   ADB3_bit  3
#define   ADB4_bit  4
#define   ADB5_bit   5
#define   ADB6_bit  6
#define   ADB7_bit  7
#define   ADB8_bit 8
#define   ADB9_bit  9
#define   ADB10_bit  10
#define   ADB11_bit  11
#define   ADB12_bit  12
#define   ADB13_bit   13
#define   ADB14_bit  14
#define   ADB15_bit  15
 
 
 
uint8_t GetByteRom0(uint16_t Addr1) 
{
FILE * pFile1;
 char  buffer1;
pFile1 = fopen ( "G4-164_DD9.bin" , "rb" );
 if (pFile1 == NULL) 
  {
  perror ("Error opening file 1");
  return 0;
   } 
   else 
 {
 
 rewind (pFile1);
fseek ( pFile1 , (long ) Addr1 , SEEK_SET );
 // fgets (buffer  , 1 , pFile1);
  // fread (buffer1,1,1,pFile1);
 fscanf(pFile1,"%c",&buffer1 );  
 fclose (pFile1);
 //puts(buffer1);
return (uint8_t) buffer1 ;
}
 
}
 
uint8_t GetByteRom1(uint16_t Addr2) 
{
FILE * pFile2;
 char  buffer2;
pFile2 = fopen ( "G4-164_DD10.bin" , "rb" );
 if (pFile2 == NULL) 
  {
  perror ("Error opening file 2");
  return 0;
   } 
   else 
 {
 
 rewind (pFile2);
fseek ( pFile2 , (long ) Addr2 , SEEK_SET );
 // fgets (buffer  , 1 , pFile1);
  // fread (buffer2,1,1,pFile2);
  fscanf(pFile2,"%c",&buffer2);
 fclose (pFile2);
  //puts(buffer2);
return (uint8_t) buffer2 ;
}
}
 
uint16_t  remapAddress(uint16_t ADDR1 )
{
uint16_t ADDR2;
 
 ADDR1=~ADDR1;//fix
 
ADDR2=0;
ADDR2|=(((ADDR1&(1<<A0_ADPIN)) >> A0_ADPIN )   <<A0_ROM_BIT);
ADDR2|=(((ADDR1&(1<<A1_ADPIN)) >> A1_ADPIN )   <<A1_ROM_BIT);
ADDR2|=(((ADDR1&(1<<A2_ADPIN)) >> A2_ADPIN )   <<A2_ROM_BIT);
ADDR2|=(((ADDR1&(1<<A3_ADPIN)) >> A3_ADPIN )   <<A3_ROM_BIT);
ADDR2|=(((ADDR1&(1<<A4_ADPIN)) >> A4_ADPIN )   <<A4_ROM_BIT);
ADDR2|=(((ADDR1&(1<<A5_ADPIN)) >> A5_ADPIN )   <<A5_ROM_BIT);
ADDR2|=(((ADDR1&(1<<A6_ADPIN)) >> A6_ADPIN )   <<A6_ROM_BIT);
ADDR2|=(((ADDR1&(1<<A7_ADPIN)) >> A7_ADPIN )   <<A7_ROM_BIT);
ADDR2|=(((ADDR1&(1<<A8_ADPIN)) >> A8_ADPIN )   <<A8_ROM_BIT);
ADDR2|=(((ADDR1&(1<<A9_ADPIN)) >> A9_ADPIN )   <<A9_ROM_BIT);
ADDR2|=(((ADDR1&(1<<A10_ADPIN)) >> A10_ADPIN )   <<A10_ROM_BIT);
 
//ADDR2|=(((ADDR1&(1<<A11_ADPIN)) >> A11_ADPIN )   <<A11_ROM_BIT);
//ADDR2|=(((ADDR1&(1<<A12_ADPIN)) >> A12_ADPIN )   <<A12_ROM_BIT);
//ADDR2|=(((ADDR1&(1<<A13_ADPIN)) >> A13_ADPIN )   <<A13_ROM_BIT);
//ADDR2|=(((ADDR1&(1<<A14_ADPIN)) >> A14_ADPIN )   <<A14_ROM_BIT);
//ADDR2|=(((ADDR1&(1<<A15_ADPIN)) >> A15_ADPIN )   <<A15_ROM_BIT);
return ADDR2 ;
 
}
 
 
 
 
 
 
uint16_t decode_rom_data (uint8_t data0 , uint8_t data1)
{
uint16_t ADB_CODE;
 
ADB_CODE=0;
 
data0=~data0;
data1=~data1;
 
ADB_CODE|=((( data0&(1<<ROM1_DB0_bit))>>ROM1_DB0_bit ) << ADB0_bit);
ADB_CODE|=((( data0&(1<<ROM1_DB1_bit))>>ROM1_DB1_bit ) << ADB1_bit);
ADB_CODE|=((( data0&(1<<ROM1_DB2_bit))>>ROM1_DB2_bit ) << ADB2_bit);
ADB_CODE|=((( data0&(1<<ROM1_DB3_bit))>>ROM1_DB3_bit ) << ADB3_bit);
ADB_CODE|=((( data0&(1<<ROM1_DB4_bit))>>ROM1_DB4_bit ) << ADB4_bit);
ADB_CODE|=((( data0&(1<<ROM1_DB5_bit))>>ROM1_DB5_bit ) << ADB5_bit);
ADB_CODE|=((( data0&(1<<ROM1_DB6_bit))>>ROM1_DB6_bit ) << ADB6_bit);
ADB_CODE|=((( data0&(1<<ROM1_DB7_bit))>>ROM1_DB7_bit ) << ADB7_bit);
 
ADB_CODE|=((( data1&(1<<ROM2_DB0_bit))>>ROM2_DB0_bit ) << ADB8_bit);
ADB_CODE|=((( data1&(1<<ROM2_DB1_bit))>>ROM2_DB1_bit ) << ADB9_bit);
ADB_CODE|=((( data1&(1<<ROM2_DB2_bit))>>ROM2_DB2_bit ) << ADB10_bit);
ADB_CODE|=((( data1&(1<<ROM2_DB3_bit))>>ROM2_DB3_bit ) << ADB11_bit);
ADB_CODE|=((( data1&(1<<ROM2_DB4_bit))>>ROM2_DB4_bit ) << ADB12_bit);
ADB_CODE|=((( data1&(1<<ROM2_DB5_bit))>>ROM2_DB5_bit ) << ADB13_bit);
ADB_CODE|=((( data1&(1<<ROM2_DB6_bit))>>ROM2_DB6_bit ) << ADB14_bit);
ADB_CODE|=((( data1&(1<<ROM2_DB7_bit))>>ROM2_DB7_bit ) << ADB15_bit);
 
return ADB_CODE;
}
 
 
 
 
 
 
 
 
 
//nA4-nA14 , inv code
uint16_t IMIN =0x0000|(  0b00000000000<<4); //fix
uint16_t IMAX=0x0000|(   0b11111111111<<4);;  //fix
 
void print_addr_data()
{
 
uint16_t Addr1,Addr;
  FILE * pFile3;
  pFile3 = fopen ("myfile3.txt","w");
for (int Addr=IMIN; Addr<=IMAX ; Addr+=(1<<4))
{
    
    
Addr1= remapAddress((uint16_t)Addr );
uint8_t data_0=GetByteRom0(Addr1 );
uint8_t data_1=GetByteRom1(Addr1 );
 
 
uint16_t DB= decode_rom_data (data_0 , data_1);
printf("\n nADB ADDR =%.4X H ; ROM ADDR TTL=  %.4X H  :   nData=%.4X  ; ROM data=%0.4X" ,(uint16_t)Addr ,    Addr1, DB,(uint16_t(~DB))) ;
fprintf(pFile3 ,"\n ADB ADDR =%.4X H ; ROM ADDR=  %.4X H  :   Data=%.4X",Addr ,    Addr1, DB) ;
 
}
 fclose (pFile3);
getch();
} 
 
 
 
int main()
 
{
print_addr_data();  
    
    return 0;
}
Добавлено через 49 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
#include <stdio.h>
#include <conio.h>
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
 
 
#define A0_ADPIN 5
#define A1_ADPIN 7
#define A2_ADPIN 6
#define A3_ADPIN 13
#define A4_ADPIN 10
#define A5_ADPIN 8
#define A6_ADPIN 11
#define A7_ADPIN 9
#define A8_ADPIN 14
#define A9_ADPIN 12
#define A10_ADPIN 4
 
#define A0_ROM_BIT 0
#define A1_ROM_BIT 1
#define A2_ROM_BIT 2
#define A3_ROM_BIT 3
#define A4_ROM_BIT 4
#define A5_ROM_BIT 5
#define A6_ROM_BIT 6
#define A7_ROM_BIT 7
#define A8_ROM_BIT 8
#define A9_ROM_BIT 9
#define A10_ROM_BIT 10
 
 
 
 
#define  ROM1_DB0_bit 0
#define  ROM1_DB1_bit 1
#define  ROM1_DB2_bit 2
#define  ROM1_DB3_bit 3
#define  ROM1_DB4_bit 4
#define  ROM1_DB5_bit 5
#define  ROM1_DB6_bit 6
#define  ROM1_DB7_bit 7
 
 
#define  ROM1_DB0_bit_pin 0
#define  ROM1_DB1_bit_pin 1
#define  ROM1_DB2_bit_pin 2
#define  ROM1_DB3_bit_pin 3
#define  ROM1_DB4_bit_pin 4
#define  ROM1_DB5_bit_pin  5
#define  ROM1_DB6_bit_pin 6
#define  ROM1_DB7_bit_pin 7
 
 
 
 
#define  ROM2_DB0_bit 0
#define  ROM2_DB1_bit 1
#define  ROM2_DB2_bit 2
#define  ROM2_DB3_bit 3
#define  ROM2_DB4_bit 4
#define  ROM2_DB5_bit 5
#define  ROM2_DB6_bit 6
#define  ROM2_DB7_bit 7
 
#define  ROM2_DB0_bit_pin 0
#define  ROM2_DB1_bit_pin 1
#define  ROM2_DB2_bit_pin 2
#define  ROM2_DB3_bit_pin 3
#define  ROM2_DB4_bit_pin 4
#define  ROM2_DB5_bit_pin  5
#define  ROM2_DB6_bit_pin 6
#define  ROM2_DB7_bit_pin 7
 
#define   ADB0_bit 0
#define   ADB1_bit  1
#define   ADB2_bit  2
#define   ADB3_bit  3
#define   ADB4_bit  4
#define   ADB5_bit   5
#define   ADB6_bit  6
#define   ADB7_bit  7
#define   ADB8_bit 8
#define   ADB9_bit  9
#define   ADB10_bit  10
#define   ADB11_bit  11
#define   ADB12_bit  12
#define   ADB13_bit   13
#define   ADB14_bit  14
#define   ADB15_bit  15
 
 
 
uint8_t GetByteRom0(uint16_t Addr1) 
{
FILE * pFile1;
 char  buffer1;
pFile1 = fopen ( "G4-164_DD9.bin" , "rb" );
 if (pFile1 == NULL) 
  {
  perror ("Error opening file 1");
  return 0;
   } 
   else 
 {
 
 rewind (pFile1);
fseek ( pFile1 , (long ) Addr1 , SEEK_SET );
 // fgets (buffer  , 1 , pFile1);
  // fread (buffer1,1,1,pFile1);
 fscanf(pFile1,"%c",&buffer1 );  
 fclose (pFile1);
 //puts(buffer1);
return (uint8_t) buffer1 ;
}
 
}
 
uint8_t GetByteRom1(uint16_t Addr2) 
{
FILE * pFile2;
 char  buffer2;
pFile2 = fopen ( "G4-164_DD10.bin" , "rb" );
 if (pFile2 == NULL) 
  {
  perror ("Error opening file 2");
  return 0;
   } 
   else 
 {
 
 rewind (pFile2);
fseek ( pFile2 , (long ) Addr2 , SEEK_SET );
 // fgets (buffer  , 1 , pFile1);
  // fread (buffer2,1,1,pFile2);
  fscanf(pFile2,"%c",&buffer2);
 fclose (pFile2);
  //puts(buffer2);
return (uint8_t) buffer2 ;
}
}
 
uint16_t  remapAddress(uint16_t ADDR1 )
{
uint16_t ADDR2;
 
 ADDR1=~ADDR1;//fix
 
ADDR2=0;
ADDR2|=(((ADDR1&(1<<A0_ADPIN)) >> A0_ADPIN )   <<A0_ROM_BIT);
ADDR2|=(((ADDR1&(1<<A1_ADPIN)) >> A1_ADPIN )   <<A1_ROM_BIT);
ADDR2|=(((ADDR1&(1<<A2_ADPIN)) >> A2_ADPIN )   <<A2_ROM_BIT);
ADDR2|=(((ADDR1&(1<<A3_ADPIN)) >> A3_ADPIN )   <<A3_ROM_BIT);
ADDR2|=(((ADDR1&(1<<A4_ADPIN)) >> A4_ADPIN )   <<A4_ROM_BIT);
ADDR2|=(((ADDR1&(1<<A5_ADPIN)) >> A5_ADPIN )   <<A5_ROM_BIT);
ADDR2|=(((ADDR1&(1<<A6_ADPIN)) >> A6_ADPIN )   <<A6_ROM_BIT);
ADDR2|=(((ADDR1&(1<<A7_ADPIN)) >> A7_ADPIN )   <<A7_ROM_BIT);
ADDR2|=(((ADDR1&(1<<A8_ADPIN)) >> A8_ADPIN )   <<A8_ROM_BIT);
ADDR2|=(((ADDR1&(1<<A9_ADPIN)) >> A9_ADPIN )   <<A9_ROM_BIT);
ADDR2|=(((ADDR1&(1<<A10_ADPIN)) >> A10_ADPIN )   <<A10_ROM_BIT);
 
//ADDR2|=(((ADDR1&(1<<A11_ADPIN)) >> A11_ADPIN )   <<A11_ROM_BIT);
//ADDR2|=(((ADDR1&(1<<A12_ADPIN)) >> A12_ADPIN )   <<A12_ROM_BIT);
//ADDR2|=(((ADDR1&(1<<A13_ADPIN)) >> A13_ADPIN )   <<A13_ROM_BIT);
//ADDR2|=(((ADDR1&(1<<A14_ADPIN)) >> A14_ADPIN )   <<A14_ROM_BIT);
//ADDR2|=(((ADDR1&(1<<A15_ADPIN)) >> A15_ADPIN )   <<A15_ROM_BIT);
return ADDR2 ;
 
}
 
 
 
 
 
 
uint16_t decode_rom_data (uint8_t data0 , uint8_t data1)
{
uint16_t ADB_CODE;
 
ADB_CODE=0;
 
data0=~data0;
data1=~data1;
 
ADB_CODE|=((( data0&(1<<ROM1_DB0_bit))>>ROM1_DB0_bit ) << ADB0_bit);
ADB_CODE|=((( data0&(1<<ROM1_DB1_bit))>>ROM1_DB1_bit ) << ADB1_bit);
ADB_CODE|=((( data0&(1<<ROM1_DB2_bit))>>ROM1_DB2_bit ) << ADB2_bit);
ADB_CODE|=((( data0&(1<<ROM1_DB3_bit))>>ROM1_DB3_bit ) << ADB3_bit);
ADB_CODE|=((( data0&(1<<ROM1_DB4_bit))>>ROM1_DB4_bit ) << ADB4_bit);
ADB_CODE|=((( data0&(1<<ROM1_DB5_bit))>>ROM1_DB5_bit ) << ADB5_bit);
ADB_CODE|=((( data0&(1<<ROM1_DB6_bit))>>ROM1_DB6_bit ) << ADB6_bit);
ADB_CODE|=((( data0&(1<<ROM1_DB7_bit))>>ROM1_DB7_bit ) << ADB7_bit);
 
ADB_CODE|=((( data1&(1<<ROM2_DB0_bit))>>ROM2_DB0_bit ) << ADB8_bit);
ADB_CODE|=((( data1&(1<<ROM2_DB1_bit))>>ROM2_DB1_bit ) << ADB9_bit);
ADB_CODE|=((( data1&(1<<ROM2_DB2_bit))>>ROM2_DB2_bit ) << ADB10_bit);
ADB_CODE|=((( data1&(1<<ROM2_DB3_bit))>>ROM2_DB3_bit ) << ADB11_bit);
ADB_CODE|=((( data1&(1<<ROM2_DB4_bit))>>ROM2_DB4_bit ) << ADB12_bit);
ADB_CODE|=((( data1&(1<<ROM2_DB5_bit))>>ROM2_DB5_bit ) << ADB13_bit);
ADB_CODE|=((( data1&(1<<ROM2_DB6_bit))>>ROM2_DB6_bit ) << ADB14_bit);
ADB_CODE|=((( data1&(1<<ROM2_DB7_bit))>>ROM2_DB7_bit ) << ADB15_bit);
 
return ADB_CODE;
}
 
 
 
 
 
 
//#define nbit0_3  0b0000 
//#define nbit15  0b0 
 
 
#define nbit0_3  0b1111 
#define nbit15  0b1 
 
//nA4-nA14
uint16_t IMIN =0x0000|(  0b00000000000<<4) |(nbit0_3<<0)|(nbit15<<15); //fix
uint16_t IMAX=0x0000|(   0b11111111111<<4)|(nbit0_3<<0)|(nbit15<<15);  //fix
 
void print_addr_data()
{
 
uint16_t Addr1,Addr;
  FILE * pFile3;
  pFile3 = fopen ("myfile3.txt","w");
 for (int Addr=IMIN; Addr<=IMAX ; Addr+=(1<<4))
// for (int Addr=IMAX; Addr>=IMIN; Addr-=(1<<4))
{
    
    
Addr1= remapAddress((uint16_t)Addr );
uint8_t data_0=GetByteRom0(Addr1 );
uint8_t data_1=GetByteRom1(Addr1 );
 
 
uint16_t DB= decode_rom_data (data_0 , data_1);
printf("\n  nAD (inv logic )  =%.4X H ;   nAD  TTL=%.4X H ;  ROM ADDR TTL=  %.4X H  :   nData=%.4X  ; ROM data=%0.4X" ,(uint16_t)Addr ,  (uint16_t)(~Addr ),  Addr1, DB,(uint16_t(~DB))) ;
 
fprintf(  pFile3, "\n  nAD (inv logic )  =%.4X H ;   nAD  TTL=%.4X H ;  ROM ADDR TTL=  %.4X H  :   nData=%.4X  ; ROM data=%0.4X" ,(uint16_t)Addr ,  (uint16_t)(~Addr ),  Addr1, DB,(uint16_t(~DB))) ;
}
 fclose (pFile3);
getch();
} 
 
 
 
int main()
 
{
print_addr_data();  
    
    return 0;
}
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
29.10.2019, 16:30  [ТС]
Вариант ремеппера битов с преобразователем кодов (ошибки исправить )
Вложения
Тип файла: zip bitremapper.zip (1.8 Кб, 7 просмотров)
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
29.10.2019, 16:33  [ТС]
Еще для некоторых схем бывает
C++
1
2
3
(ADDR1^adr_mask)&...
(data0^data0_mask)&...
(data1^data1_mask)&...
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
29.10.2019, 16:44  [ТС]
кодер - ремеппер с расширенной степенью свободы , дефайны , маски и направления счета уточнить (на случай использования аналогичных в виртуалке )
Вложения
Тип файла: zip bitremapper1.zip (1.9 Кб, 7 просмотров)
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
29.10.2019, 19:33  [ТС]
Для 176-го с учетом 15-го вывода на корпусе, (адрес инвертируется в регистре на положительную логику) , отсутствия инвертирующего преобразователя на выходе будет примерно следующее
busdefs1.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
 
 
//0 -inv logic (0- 5V,1-0V)
//1 -positive TTL logic
 
#define ADDR1_mask 0xFFFF
#define data0_mask 0x00;
#define data1_mask 0x00;
 
#define A0_ADPIN 4
#define A1_ADPIN 5
#define A2_ADPIN 6
#define A3_ADPIN 7
#define A4_ADPIN 8
#define A5_ADPIN 9
#define A6_ADPIN 10
#define A7_ADPIN 11
#define A8_ADPIN  3
#define A9_ADPIN  2
#define A10_ADPIN 1
#define A11_ADPIN  12   //D4,D5/D6,D7 select
//#define A12_ADPIN  
//#define A13_ADPIN  
//#define A14_ADPIN  
//#define A15_ADPIN  
//
#define A0_ROM_BIT 0
#define A1_ROM_BIT 1
#define A2_ROM_BIT  2
#define A3_ROM_BIT  3
#define A4_ROM_BIT  4
#define A5_ROM_BIT  5
#define A6_ROM_BIT  6
#define A7_ROM_BIT  7
#define A8_ROM_BIT  8
#define A9_ROM_BIT  9
#define A10_ROM_BIT  10
 #define A11_ROM_BIT 11
// #define A12_ROM_BIT 12
// #define A13_ROM_BIT 13
//#define A14_ROM_BIT 14
//#define A15_ROM_BIT 15
 
 
//low 
#define  ROM1_DB0_bit 0
#define  ROM1_DB1_bit 1
#define  ROM1_DB2_bit 2
#define  ROM1_DB3_bit 3
#define  ROM1_DB4_bit 4
#define  ROM1_DB5_bit 5
#define  ROM1_DB6_bit 6
#define  ROM1_DB7_bit 7
 
 
#define  ROM1_DB0_bit_pin 0
#define  ROM1_DB1_bit_pin 1
#define  ROM1_DB2_bit_pin 2
#define  ROM1_DB3_bit_pin 3
#define  ROM1_DB4_bit_pin 4
#define  ROM1_DB5_bit_pin  5
#define  ROM1_DB6_bit_pin 6
#define  ROM1_DB7_bit_pin 7
 
 
 
 
#define  ROM2_DB0_bit 0
#define  ROM2_DB1_bit 1
#define  ROM2_DB2_bit 2
#define  ROM2_DB3_bit 3
#define  ROM2_DB4_bit 4
#define  ROM2_DB5_bit 5
#define  ROM2_DB6_bit 6
#define  ROM2_DB7_bit 7
 
#define  ROM2_DB0_bit_pin 0
#define  ROM2_DB1_bit_pin 1
#define  ROM2_DB2_bit_pin 2
#define  ROM2_DB3_bit_pin 3
#define  ROM2_DB4_bit_pin 4
#define  ROM2_DB5_bit_pin  5
#define  ROM2_DB6_bit_pin 6
#define  ROM2_DB7_bit_pin 7
 
#define   ADB0_bit 6
#define   ADB1_bit  8
#define   ADB2_bit  10
#define   ADB3_bit  11
#define   ADB4_bit  9
#define   ADB5_bit   7
#define   ADB6_bit  5
#define   ADB7_bit  4
 
#define   ADB8_bit  13
#define   ADB9_bit  0
#define   ADB10_bit  2
#define   ADB11_bit  3
#define   ADB12_bit  1
#define   ADB13_bit   12
#define   ADB14_bit  14
#define   ADB15_bit  15

coder3.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#include <stdio.h>
#include <conio.h>
#include "busdefs1.h"
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
 
 
 
uint8_t GetByteRom0(uint16_t Addr1) 
{
FILE * pFile1;
 char  buffer1;
if((Addr1&(1<<11))==1) { pFile1 = fopen ( " _DD6.bin" , "rb" ); } else  { pFile1 = fopen ( " _DD4.bin" , "rb" ); }
 
 
 if (pFile1 == NULL) 
  {
  perror ("Error opening file 1");
  return 0;
   } 
   else 
 {
 
 rewind (pFile1);
fseek ( pFile1 , (long ) Addr1 , SEEK_SET );
 // fgets (buffer  , 1 , pFile1);
  // fread (buffer1,1,1,pFile1);
 fscanf(pFile1,"%c",&buffer1 );  
 fclose (pFile1);
 //puts(buffer1);
return (uint8_t) buffer1 ;
}
 
}
 
uint8_t GetByteRom1(uint16_t Addr2) 
{
FILE * pFile2;
 char  buffer2;
if((Addr1&(1<<11))==1) { pFile1 = fopen ( " _DD7.bin" , "rb" ); } else  { pFile1 = fopen ( " _DD5.bin" , "rb" ); }
 
 
 
 if (pFile2 == NULL) 
  {
  perror ("Error opening file 2");
  return 0;
   } 
   else 
 {
 
 rewind (pFile2);
fseek ( pFile2 , (long ) Addr2 , SEEK_SET );
 // fgets (buffer  , 1 , pFile1);
  // fread (buffer2,1,1,pFile2);
  fscanf(pFile2,"%c",&buffer2);
 fclose (pFile2);
  //puts(buffer2);
return (uint8_t) buffer2 ;
}
}
 
 
 
uint16_t  remapAddress(uint16_t ADDR1 )
{
uint16_t ADDR2;
 
  ADDR1=~ADDR1;//fix
  ADDR1^=ADDR1_mask;
 
ADDR2=0;
ADDR2|=((( ADDR1 &(1<<A0_ADPIN)) >> A0_ADPIN )   <<A0_ROM_BIT);
ADDR2|=((( ADDR1 &(1<<A1_ADPIN)) >> A1_ADPIN )   <<A1_ROM_BIT);
ADDR2|=((( ADDR1 &(1<<A2_ADPIN)) >> A2_ADPIN )   <<A2_ROM_BIT);
ADDR2|=((( ADDR1 &(1<<A3_ADPIN)) >> A3_ADPIN )   <<A3_ROM_BIT);
ADDR2|=((( ADDR1 &(1<<A4_ADPIN)) >> A4_ADPIN )   <<A4_ROM_BIT);
ADDR2|=((( ADDR1 &(1<<A5_ADPIN)) >> A5_ADPIN )   <<A5_ROM_BIT);
ADDR2|=((( ADDR1 &(1<<A6_ADPIN)) >> A6_ADPIN )   <<A6_ROM_BIT);
ADDR2|=((( ADDR1 &(1<<A7_ADPIN)) >> A7_ADPIN )   <<A7_ROM_BIT);
ADDR2|=((( ADDR1 &(1<<A8_ADPIN)) >> A8_ADPIN )   <<A8_ROM_BIT);
ADDR2|=((( ADDR1 &(1<<A9_ADPIN)) >> A9_ADPIN )   <<A9_ROM_BIT);
ADDR2|=((( ADDR1 &(1<<A10_ADPIN)) >> A10_ADPIN )   <<A10_ROM_BIT);
 
 ADDR2|=((( ADDR1 &(1<<A11_ADPIN)) >> A11_ADPIN )   <<A11_ROM_BIT);
//ADDR2|=((( ADDR1 &(1<<A12_ADPIN)) >> A12_ADPIN )   <<A12_ROM_BIT);
//ADDR2|=((( ADDR1 &(1<<A13_ADPIN)) >> A13_ADPIN )   <<A13_ROM_BIT);
//ADDR2|=((( ADDR1 &(1<<A14_ADPIN)) >> A14_ADPIN )   <<A14_ROM_BIT);
//ADDR2|=((( ADDR1 &(1<<A15_ADPIN)) >> A15_ADPIN )   <<A15_ROM_BIT);
return ADDR2 ;
 
}
 
 
 
 
 
 
uint16_t decode_rom_data (uint8_t data0 , uint8_t data1)
{
uint16_t ADB_CODE;
 
ADB_CODE=0;
 
data0=~data0;
data1=~data1;
 
data0^=data0_mask;
data1^=data1_mask;
 
ADB_CODE|=((( data0&(1<<ROM1_DB0_bit))>>ROM1_DB0_bit ) << ADB0_bit);
ADB_CODE|=((( data0&(1<<ROM1_DB1_bit))>>ROM1_DB1_bit ) << ADB1_bit);
ADB_CODE|=((( data0&(1<<ROM1_DB2_bit))>>ROM1_DB2_bit ) << ADB2_bit);
ADB_CODE|=((( data0&(1<<ROM1_DB3_bit))>>ROM1_DB3_bit ) << ADB3_bit);
ADB_CODE|=((( data0&(1<<ROM1_DB4_bit))>>ROM1_DB4_bit ) << ADB4_bit);
ADB_CODE|=((( data0&(1<<ROM1_DB5_bit))>>ROM1_DB5_bit ) << ADB5_bit);
ADB_CODE|=((( data0&(1<<ROM1_DB6_bit))>>ROM1_DB6_bit ) << ADB6_bit);
ADB_CODE|=((( data0&(1<<ROM1_DB7_bit))>>ROM1_DB7_bit ) << ADB7_bit);
 
ADB_CODE|=((( data1&(1<<ROM2_DB0_bit))>>ROM2_DB0_bit ) << ADB8_bit);
ADB_CODE|=((( data1&(1<<ROM2_DB1_bit))>>ROM2_DB1_bit ) << ADB9_bit);
ADB_CODE|=((( data1&(1<<ROM2_DB2_bit))>>ROM2_DB2_bit ) << ADB10_bit);
ADB_CODE|=((( data1&(1<<ROM2_DB3_bit))>>ROM2_DB3_bit ) << ADB11_bit);
ADB_CODE|=((( data1&(1<<ROM2_DB4_bit))>>ROM2_DB4_bit ) << ADB12_bit);
ADB_CODE|=((( data1&(1<<ROM2_DB5_bit))>>ROM2_DB5_bit ) << ADB13_bit);
ADB_CODE|=((( data1&(1<<ROM2_DB6_bit))>>ROM2_DB6_bit ) << ADB14_bit);
ADB_CODE|=((( data1&(1<<ROM2_DB7_bit))>>ROM2_DB7_bit ) << ADB15_bit);
 
return ADB_CODE;
}
 
 
 
 
 #define nbit0   0b0 
 #define nbit13  0b0 
 
 
//nA1-nA12
uint16_t IMIN =0x0000|(  0b000000000000<<1) |(nbit0 <<0)|(nbit13<<13); //fix
uint16_t IMAX=0x0000|(  0b1111111111111<<1)|(nbit0 <<0)|(nbit13<<13);  //fix
 
void print_addr_data()
{
 
uint16_t Addr1,Addr;
  FILE * pFile3;
  pFile3 = fopen ("myfile3.txt","w");
 for (int Addr=IMIN; Addr<=IMAX ; Addr+=(1<<4))
// for (int Addr=IMAX; Addr>=IMIN; Addr-=(1<<4))
{
    
    
Addr1= remapAddress((uint16_t)Addr );
uint8_t data_0=GetByteRom0(Addr1 );
uint8_t data_1=GetByteRom1(Addr1 );
 
 
uint16_t DB= decode_rom_data (data_0 , data_1);
printf("\n  nAD (inv logic )  =%.4X H ;   nAD  TTL=%.4X H ;  ROM ADDR TTL=  %.4X H  :   nData=%.4X  ; ROM data=%0.4X" ,(uint16_t)Addr ,  (uint16_t)(~Addr ),  Addr1, DB,(uint16_t(~DB))) ;
 
fprintf(  pFile3, "\n  nAD (inv logic )  =%.4X H ;   nAD  TTL=%.4X H ;  ROM ADDR TTL=  %.4X H  :   nData=%.4X  ; ROM data=%0.4X" ,(uint16_t)Addr ,  (uint16_t)(~Addr ),  Addr1, DB,(uint16_t(~DB))) ;
}
 fclose (pFile3);
getch();
} 
 
 
 
int main()
 
{
print_addr_data();  
    
    return 0;
}
Добавлено через 6 минут
C++
1
2
//A0-A10, A11-page select, data bus   bits- lookup table mapping 
uint8_t GetByteRom0(uint16_t Addr1) ...
Добавлено через 51 минуту
C++
1
2
for (int Addr=IMIN; Addr<=IMAX ; Addr+=(1<<1))
// for (int Addr=IMAX; Addr>=IMIN; Addr-=(1<<1))
Добавлено через 2 минуты
Для 165-го это выглядит примерно так (проверить на отсутствие ошибок по схеме и принципу действия МК , правильно задать диапазон адресов и направление счета )

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
#include <stdio.h>
#include <conio.h>
#include "busdefs2.h"
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
 
 
 
uint8_t GetByteRom1(uint16_t Addr1) 
{
FILE * pFile1;
 char  buffer1;
 
//if  AD3 TTL( after register) = 0   then select D13,D16  ,  else select D9,D11
if((Addr1&(1<<3))==1) { pFile1 = fopen ( "  DD13.bin" , "rb" ); } else  { pFile1 = fopen ( "  DD9.bin" , "rb" ); }
 
 
 if (pFile1 == NULL) 
  {
  perror ("Error opening file 1");
  return 0;
   } 
   else 
 {
 
 rewind (pFile1);
fseek ( pFile1 , (long ) Addr1 , SEEK_SET );
 // fgets (buffer  , 1 , pFile1);
  // fread (buffer1,1,1,pFile1);
 fscanf(pFile1,"%c",&buffer1 );  
 fclose (pFile1);
 //puts(buffer1);
return (uint8_t) buffer1 ;
}
 
}
 
uint8_t GetByteRom2(uint16_t Addr2) 
{
FILE * pFile2;
 char  buffer2;
//if  AD3 TTL( after register) = 0   then select D13,D16  ,  else select D9,D11
if((Addr1&(1<<3))==1) { pFile1 = fopen ( "  DD16.bin" , "rb" ); } else  { pFile1 = fopen ( "  DD11.bin" , "rb" ); }
 
 
 if (pFile2 == NULL) 
  {
  perror ("Error opening file 2");
  return 0;
   } 
   else 
 {
 
 rewind (pFile2);
fseek ( pFile2 , (long ) Addr2 , SEEK_SET );
 // fgets (buffer  , 1 , pFile1);
  // fread (buffer2,1,1,pFile2);
  fscanf(pFile2,"%c",&buffer2);
 fclose (pFile2);
  //puts(buffer2);
return (uint8_t) buffer2 ;
}
}
 
 
 
uint16_t  remapAddress(uint16_t ADDR1 )
{
uint16_t ADDR2;
 
  ADDR1=~ADDR1;//fix
  ADDR1^=ADDR1_mask;
 
ADDR2=0;
ADDR2|=((( ADDR1 &(1<<A0_ADPIN)) >> A0_ADPIN )   <<A0_ROM_BIT);
ADDR2|=((( ADDR1 &(1<<A1_ADPIN)) >> A1_ADPIN )   <<A1_ROM_BIT);
ADDR2|=((( ADDR1 &(1<<A2_ADPIN)) >> A2_ADPIN )   <<A2_ROM_BIT);
ADDR2|=((( ADDR1 &(1<<A3_ADPIN)) >> A3_ADPIN )   <<A3_ROM_BIT);
ADDR2|=((( ADDR1 &(1<<A4_ADPIN)) >> A4_ADPIN )   <<A4_ROM_BIT);
ADDR2|=((( ADDR1 &(1<<A5_ADPIN)) >> A5_ADPIN )   <<A5_ROM_BIT);
ADDR2|=((( ADDR1 &(1<<A6_ADPIN)) >> A6_ADPIN )   <<A6_ROM_BIT);
ADDR2|=((( ADDR1 &(1<<A7_ADPIN)) >> A7_ADPIN )   <<A7_ROM_BIT);
ADDR2|=((( ADDR1 &(1<<A8_ADPIN)) >> A8_ADPIN )   <<A8_ROM_BIT);
ADDR2|=((( ADDR1 &(1<<A9_ADPIN)) >> A9_ADPIN )   <<A9_ROM_BIT);
ADDR2|=((( ADDR1 &(1<<A10_ADPIN)) >> A10_ADPIN )   <<A10_ROM_BIT);
 
 ADDR2|=((( ADDR1 &(1<<A11_ADPIN)) >> A11_ADPIN )   <<A11_ROM_BIT);
//ADDR2|=((( ADDR1 &(1<<A12_ADPIN)) >> A12_ADPIN )   <<A12_ROM_BIT);
//ADDR2|=((( ADDR1 &(1<<A13_ADPIN)) >> A13_ADPIN )   <<A13_ROM_BIT);
//ADDR2|=((( ADDR1 &(1<<A14_ADPIN)) >> A14_ADPIN )   <<A14_ROM_BIT);
//ADDR2|=((( ADDR1 &(1<<A15_ADPIN)) >> A15_ADPIN )   <<A15_ROM_BIT);
return ADDR2 ;
 
}
 
 
 
 
 
 
uint16_t decode_rom_data (uint8_t data0 , uint8_t data1)
{
uint16_t ADB_CODE;
 
ADB_CODE=0;
 
data0=~data0;
data1=~data1;
 
data0^=data0_mask;
data1^=data1_mask;
 
ADB_CODE|=((( data0&(1<<ROM1_DB0_bit))>>ROM1_DB0_bit ) << ROM1_DB0_bit_pin);
ADB_CODE|=((( data0&(1<<ROM1_DB1_bit))>>ROM1_DB1_bit ) << ROM1_DB1_bit_pin);
ADB_CODE|=((( data0&(1<<ROM1_DB2_bit))>>ROM1_DB2_bit ) << ROM1_DB2_bit_pin);
ADB_CODE|=((( data0&(1<<ROM1_DB3_bit))>>ROM1_DB3_bit ) << ROM1_DB3_bit_pin );
ADB_CODE|=((( data0&(1<<ROM1_DB4_bit))>>ROM1_DB4_bit ) << ROM1_DB4_bit_pin );
ADB_CODE|=((( data0&(1<<ROM1_DB5_bit))>>ROM1_DB5_bit ) << ROM1_DB5_bit_pin);
ADB_CODE|=((( data0&(1<<ROM1_DB6_bit))>>ROM1_DB6_bit ) << ROM1_DB6_bit_pin);
ADB_CODE|=((( data0&(1<<ROM1_DB7_bit))>>ROM1_DB7_bit ) << ROM1_DB7_bit_pin);
 
ADB_CODE|=((( data1&(1<<ROM2_DB0_bit))>>ROM2_DB0_bit ) << ROM2_DB0_bit_pin);
ADB_CODE|=((( data1&(1<<ROM2_DB1_bit))>>ROM2_DB1_bit ) << ROM2_DB1_bit_pin);
ADB_CODE|=((( data1&(1<<ROM2_DB2_bit))>>ROM2_DB2_bit ) << ROM2_DB2_bit_pin);
ADB_CODE|=((( data1&(1<<ROM2_DB3_bit))>>ROM2_DB3_bit ) << ROM2_DB3_bit_pin);
ADB_CODE|=((( data1&(1<<ROM2_DB4_bit))>>ROM2_DB4_bit ) << ROM2_DB4_bit_pin);
ADB_CODE|=((( data1&(1<<ROM2_DB5_bit))>>ROM2_DB5_bit ) << ROM2_DB5_bit_pin);
ADB_CODE|=((( data1&(1<<ROM2_DB6_bit))>>ROM2_DB6_bit ) << ROM2_DB6_bit_pin);
ADB_CODE|=((( data1&(1<<ROM2_DB7_bit))>>ROM2_DB7_bit ) << ROM2_DB7_bit_pin);
 
return ADB_CODE;
}
 
 
 
 
 #define nbit0   0b0 
 #define nbit14  0b0 
 
 
//nA3-nA14
uint16_t IMIN =0x0000|(  0b000000000000<<1) |(nbit0 <<0)|(nbit13<<13); //fix
uint16_t IMAX=0x0000|(  0b1111111111111<<1)|(nbit0 <<0)|(nbit13<<13);  //fix
 
void print_addr_data()
{
 
uint16_t Addr1,Addr;
  FILE * pFile3;
  pFile3 = fopen ("myfile3.txt","w");
 for (int Addr=IMIN; Addr<=IMAX ; Addr+=(1<<3))
// for (int Addr=IMAX; Addr>=IMIN; Addr-=(1<<3))
{
    
    
Addr1= remapAddress((uint16_t)Addr );
uint8_t data_0=GetByteRom1(Addr1 );
uint8_t data_1=GetByteRom2(Addr1 );
 
 
uint16_t DB= decode_rom_data (data_0 , data_1);
printf("\n  nAD (inv logic )  =%.4X H ;   nAD  TTL=%.4X H ;  ROM ADDR TTL=  %.4X H  :   nData=%.4X  ; ROM data=%0.4X" ,(uint16_t)Addr ,  (uint16_t)(~Addr ),  Addr1, DB,(uint16_t(~DB))) ;
 
fprintf(  pFile3, "\n  nAD (inv logic )  =%.4X H ;   nAD  TTL=%.4X H ;  ROM ADDR TTL=  %.4X H  :   nData=%.4X  ; ROM data=%0.4X" ,(uint16_t)Addr ,  (uint16_t)(~Addr ),  Addr1, DB,(uint16_t(~DB))) ;
}
 fclose (pFile3);
getch();
} 
 
 
 
int main()
 
{
print_addr_data();  
    
    return 0;
}
busdefs2.h


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
 
 
//0 -inv logic (0- 5V,1-0V)
//1 -positive TTL logic
 
#define ADDR1_mask 0xFFFF // 0-0V, 1-5V , using inversion  in the D1,D2 ,fix
#define data0_mask 0x00; //inverse logic , 0-5V, 1-0V ,fix
#define data1_mask 0x00; //inverse logic,  0-5V, 1-0V, fix
 
#define A0_ADPIN 6
#define A1_ADPIN 4
#define A2_ADPIN 13 
#define A3_ADPIN  12 
#define A4_ADPIN  11
#define A5_ADPIN  9
#define A6_ADPIN  8
#define A7_ADPIN  7
#define A8_ADPIN  5 
#define A9_ADPIN  14 
#define A10_ADPIN 10 
#define A11_ADPIN   3    //if  AD3 TTL( after register) = 0   then select D13,D16  ,  else select D9,D11
 
//#define A12_ADPIN  2  //io select
//#define A13_ADPIN  0
//#define A14_ADPIN   
//#define A15_ADPIN  
 
// bits mapping in the ROM file 
#define A0_ROM_BIT 0
#define A1_ROM_BIT 1
#define A2_ROM_BIT  2
#define A3_ROM_BIT  3
#define A4_ROM_BIT  4
#define A5_ROM_BIT  5
#define A6_ROM_BIT  6
#define A7_ROM_BIT  7
#define A8_ROM_BIT  8
#define A9_ROM_BIT  9
#define A10_ROM_BIT  10
 #define A11_ROM_BIT 11
// #define A12_ROM_BIT 12
// #define A13_ROM_BIT 13
//#define A14_ROM_BIT 14
//#define A15_ROM_BIT 15
 
 
//low byte , in the file  
#define  ROM1_DB0_bit 0
#define  ROM1_DB1_bit 1
#define  ROM1_DB2_bit 2
#define  ROM1_DB3_bit 3
#define  ROM1_DB4_bit 4
#define  ROM1_DB5_bit 5
#define  ROM1_DB6_bit 6
#define  ROM1_DB7_bit 7
 
//high , in the file  
#define  ROM2_DB0_bit 0
#define  ROM2_DB1_bit 1
#define  ROM2_DB2_bit 2
#define  ROM2_DB3_bit 3
#define  ROM2_DB4_bit 4
#define  ROM2_DB5_bit 5
#define  ROM2_DB6_bit 6
#define  ROM2_DB7_bit 7
 
//D9, D13 ,output "low byte" mapping in the nAD bus bits
 
#define  ROM1_DB0_bit_pin  5
#define  ROM1_DB1_bit_pin  6
#define  ROM1_DB2_bit_pin  7
#define  ROM1_DB3_bit_pin  3
#define  ROM1_DB4_bit_pin  2
#define  ROM1_DB5_bit_pin   4
#define  ROM1_DB6_bit_pin  0
#define  ROM1_DB7_bit_pin  1
 
 
 
//D11, D16 ,output "high byte" mapping in the nAD bus bits
#define  ROM2_DB0_bit_pin  13
#define  ROM2_DB1_bit_pin  14
#define  ROM2_DB2_bit_pin  15
#define  ROM2_DB3_bit_pin  10
#define  ROM2_DB4_bit_pin  11
#define  ROM2_DB5_bit_pin   12
#define  ROM2_DB6_bit_pin    9
#define  ROM2_DB7_bit_pin   8
Добавлено через 38 минут
Для 1801 -го микропроцессора иногда надо использовать альтернативную редакцию той же программы, там тоже мультиплексированная шина адреса -данных(более простая), но не шина информации 586-й серии (для ЭВМ С5-хх) с фазным тактированием , другая система команд и друие способы адресации, другая карта памяти , другие вектора преываний.

Добавлено через 2 минуты
http://u.zeptobars.ru/yuot/180... 801vm1.pdf
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
29.10.2019, 19:37  [ТС]
Там иначе заполняются поля для адресации и передачи команд
Миниатюры
Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК  
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
29.10.2019, 19:38  [ТС]
Для 586ВМ1 (не ВЕ1 -0000000 там особенности системы команд, но при этой же ШИ )
Миниатюры
Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК   Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК  
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
29.10.2019, 20:16  [ТС]
В MCS-48,MCS-51, 1816ВЕ35, ВЕ51 1835ВЕ51 мультиплексированная шина данных без инверсии, простым "мэппингом" адресов (без "извращенного" кодирования и размещения битов) ,простой сигнал регистра -защелки ALE ( не с фазным тактированием и cgtwbfkmysv подтверждением "!Ответ" )

https://kpe.hww.ru/MPS/i8051.pdf
http://www.rubinst.ru/files/st... 202014.pdf


https://www.bsuir.by/m/12_100229_1_65757.pdf
0
10 / 10 / 0
Регистрация: 29.06.2018
Сообщений: 1,536
29.10.2019, 20:30  [ТС]
Погуглил, нашел на мантриде следующую схему замены ЭВМ для Г4-176 (эксперимент , прошивок нет или пока они низшей версии ):
Миниатюры
Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК   Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.10.2019, 20:30

Замена микросхемы на аналоговую
Привет всем. Какой микросхемой можно заменить микросхему FBBHAQ DM0265RB ? Она с платы 'SMPS 888 VER1.1', которая с...

Hp pavilion g6 замена микросхемы видео-чипа
Здравствуйте, может кто-то есть из сервисного центра? Какой срок гарантии дается при замене микросхемы видео-чипа? Отдал в сервисный центр,...

Acer Aspire One D255. Замена микросхемы U13
Здравствуйте форумчане. Имеется Ноут Acer Aspire One D255 (PAV70 LA-6221P Rev:1.0) , у него выгорела микросхема: U13 - G547H2 она же...

Acer aspire 5602wlmi замена сгоревшей микросхемы PG1AY 6900AS
помогите пожалуйста в ноутбуке Acer aspire 5602wlmi сгорела микросхема &quot;PG1AY 6900AS&quot; найти такую же мне не удалось, у меня есть материнка...

СМА Samsung Q1235, Замена микросхемы STK621-015. Есть аналог!!!
Здравствуйте! Подскажите возможна ли замена Микросхемы STK621-015 на STK621-140 трёхфазный инвертор двигателя? На плате MFS-Q1235-00


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru