Форум программистов, компьютерный форум, киберфорум
Измерительная техника
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.59/63: Рейтинг темы: голосов - 63, средняя оценка - 4.59
2 / 2 / 0
Регистрация: 29.06.2018
Сообщений: 1,042
1

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

31.08.2019, 07:43. Просмотров 12094. Ответов 228
Метки нет (Все метки)

Как заменить 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 ) ?
0
Миниатюры
Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК  
Вложения
Тип файла: zip img012.zip (1.35 Мб, 5 просмотров)
Тип файла: zip g4-164_shems.zip (5.48 Мб, 4 просмотров)
Тип файла: zip g4-164_teh.zip (5.28 Мб, 4 просмотров)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.08.2019, 07:43
Ответы с готовыми решениями:

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

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

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

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

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

Добавлено через 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
2 / 2 / 0
Регистрация: 29.06.2018
Сообщений: 1,042
28.10.2019, 18:07  [ТС] 44
Немного не по теме, но при этом же процессоре : у кого есть схема включения 561КТ3 в Г4-165, связанной с "ЗЗ" ? Фото взял с www.mantrid.ru/forum/
0
Миниатюры
Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК   Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК   Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК  

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

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

Добавлено через 2 минуты
Ну , с MCS-51 теоретически с внешним ОЗУ получается и без шины ЗУ, но с переходной платой , а вот на случай моделирования в виртуалке работы МК и сравнения с нашим стоит подумать.
0
2 / 2 / 0
Регистрация: 29.06.2018
Сообщений: 1,042
29.10.2019, 00:04  [ТС] 51
Еще сведения про !И-шину (про ОЗУ,ПЗУ)
0
Вложения
Тип файла: zip s5-21_teh.zip (1.16 Мб, 2 просмотров)
2 / 2 / 0
Регистрация: 29.06.2018
Сообщений: 1,042
29.10.2019, 16:21  [ТС] 52
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
2 / 2 / 0
Регистрация: 29.06.2018
Сообщений: 1,042
29.10.2019, 16:30  [ТС] 53
Вариант ремеппера битов с преобразователем кодов (ошибки исправить )
0
Вложения
Тип файла: zip bitremapper.zip (1.8 Кб, 1 просмотров)
2 / 2 / 0
Регистрация: 29.06.2018
Сообщений: 1,042
29.10.2019, 16:33  [ТС] 54
Еще для некоторых схем бывает
C++
1
2
3
(ADDR1^adr_mask)&...
(data0^data0_mask)&...
(data1^data1_mask)&...
0
2 / 2 / 0
Регистрация: 29.06.2018
Сообщений: 1,042
29.10.2019, 16:44  [ТС] 55
кодер - ремеппер с расширенной степенью свободы , дефайны , маски и направления счета уточнить (на случай использования аналогичных в виртуалке )
0
Вложения
Тип файла: zip bitremapper1.zip (1.9 Кб, 1 просмотров)
2 / 2 / 0
Регистрация: 29.06.2018
Сообщений: 1,042
29.10.2019, 19:33  [ТС] 56
Для 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
2 / 2 / 0
Регистрация: 29.06.2018
Сообщений: 1,042
29.10.2019, 19:37  [ТС] 57
Там иначе заполняются поля для адресации и передачи команд
0
Миниатюры
Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК  
2 / 2 / 0
Регистрация: 29.06.2018
Сообщений: 1,042
29.10.2019, 19:38  [ТС] 58
Для 586ВМ1 (не ВЕ1 -0000000 там особенности системы команд, но при этой же ШИ )
0
Миниатюры
Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК   Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК  
2 / 2 / 0
Регистрация: 29.06.2018
Сообщений: 1,042
29.10.2019, 20:16  [ТС] 59
В 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
2 / 2 / 0
Регистрация: 29.06.2018
Сообщений: 1,042
29.10.2019, 20:30  [ТС] 60
Погуглил, нашел на мантриде следующую схему замены ЭВМ для Г4-176 (эксперимент , прошивок нет или пока они низшей версии ):
0
Миниатюры
Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК   Замена  микросхемы 1827ВЕ1-0000000 в Г4-164 на AVR -МК  
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.10.2019, 20:30

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

Нужно печатать число П(Пи) почему всегда печатает 4.0000000
#include &lt;stdio.h&gt; #include &lt;Windows.h&gt; int main() { int n,i; float a,PI=0; printf(&quot;n=&quot;);...

Модуль Whirlpool домино, замена микросхемы lnk 304 pn на lnk 305 pn
Всем прывет в модуле сгарела микросхема lnk 304 pn под рукой аказалась lnk 305 pn она падходит.


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.