7002 JNZ ?C0054
1500 R DEC IndexMas
?C0054:
14 DEC A
FF MOV R7,A
AE00 R MOV R6,IndexMas
A 120000 R LCALL _WriteToUART
; SOURCE LINE # 167
D E4 CLR A
E F500 R MOV IndexMas,A
F500 R MOV IndexMas+01H,A
; SOURCE LINE # 168
?C0026:
; SOURCE LINE # 169
AE00 R MOV R6,IndexMas
AF00 R MOV R7,IndexMas+01H
AD00 R MOV R5,Value+01H
120000 R LCALL _WriteEXTRAM
; SOURCE LINE # 171
B 0500 R INC IndexMas+01H
D E500 R MOV A,IndexMas+01H
F 7002 JNZ ?C0055
0500 R INC IndexMas
?C0055:
; SOURCE LINE # 172
C3 CLR C
9500 R SUBB A,CountMas+01H
E500 R MOV A,IndexMas
9500 R SUBB A,CountMas
A 4014 JC ?C0028
; SOURCE LINE # 173
; SOURCE LINE # 174
C E500 R MOV A,IndexMas+01HCOMPILER V9.00 HELLO 12/30/2010 14:08:56 PAGE 12
7002 JNZ ?C0056
0042 1500 R DEC IndexMas
?C0056:
14 DEC A
FF MOV R7,A
AE00 R MOV R6,IndexMas
120000 R LCALL _WriteToUART
; SOURCE LINE # 175
B E4 CLR A
C F500 R MOV IndexMas,A
E F500 R MOV IndexMas+01H,A
; SOURCE LINE # 176
; SOURCE LINE # 177
?C0028:
22 RET
; FUNCTION _WriteValue (END)
; FUNCTION main (BEGIN)
; SOURCE LINE # 187
; SOURCE LINE # 188
; SOURCE LINE # 189
E4 CLR A
F500 R MOV grad+03H,A
F500 R MOV grad+02H,A
F500 R MOV grad+01H,A
F500 R MOV grad,A
; SOURCE LINE # 190
F500 R MOV c,A
; SOURCE LINE # 191
B F500 R MOV svet,A
; SOURCE LINE # 192
D F500 R MOV tmpVal,A
F F500 R MOV tmpVal+01H,A
; SOURCE LINE # 194
758DFD MOV TH1,#0FDH
; SOURCE LINE # 195
758920 MOV TMOD,#020H
; SOURCE LINE # 196
758840 MOV TCON,#040H
; SOURCE LINE # 197
A 759850 MOV SCON,#050H
; SOURCE LINE # 198
D 53877F ANL PCON,#07FH
; SOURCE LINE # 199
D299 SETB TI
; SOURCE LINE # 200
D298 SETB RI
; SOURCE LINE # 202
5388C0 ANL TCON,#0C0H
; SOURCE LINE # 203
5389F0 ANL TMOD,#0F0H
; SOURCE LINE # 204
A 438901 ORL TMOD,#01H
; SOURCE LINE # 205
D 758AFE MOV TL0,#0FEH
; SOURCE LINE # 206
758C32 MOV TH0,#032H
; SOURCE LINE # 207
75A89A MOV IE,#09AH
; SOURCE LINE # 209
75EF7C MOV ADCCON1,#07CHCOMPILER V9.00 HELLO 12/30/2010 14:08:56 PAGE 13
; SOURCE LINE # 210
438810 ORL TCON,#010H
; SOURCE LINE # 212
C ?C0032:
; SOURCE LINE # 213
C 308DFD JNB TF0,?C0032
F ?C0033:
; SOURCE LINE # 214
F 5388C0 ANL TCON,#0C0H
; SOURCE LINE # 216
7B00 MOV R3,#00H
7A00 R MOV R2,#HIGH c
7900 R MOV R1,#LOW c
120000 R LCALL _ScanKBOnce
B 5009 JNC ?C0034
; SOURCE LINE # 217
D AF00 R MOV R7,c
F 120000 R LCALL _chrtoint
8E00 R MOV NumChanel,R6
8F00 R MOV NumChanel+01H,R7
?C0034:
; SOURCE LINE # 222
C3 CLR C
E500 R MOV A,NumChanel+01H
9409 SUBB A,#09H
B E500 R MOV A,NumChanel
D 9400 SUBB A,#00H
F 5013 JNC ?C0035
; SOURCE LINE # 228
E500 R MOV A,NumChanel+01H
14 DEC A
FF MOV R7,A
7401 MOV A,#01H
A807 MOV R0,AR7
08 INC R0
A 8002 SJMP ?C0058
C ?C0057:
C C3 CLR C
D 33 RLC A
006E ?C0058:
E D8FC DJNZ R0,?C0057
0070 F500 R MOV svet,A
8003 SJMP ?C0036
?C0035:
; SOURCE LINE # 230
7500FF R MOV svet,#0FFH
?C0036:
; SOURCE LINE # 231
AD00 R MOV R5,svet
7F07 MOV R7,#07H
B 7E00 MOV R6,#00H
D 120000 R LCALL _WriteMax
; SOURCE LINE # 232
C3 CLR C
E500 R MOV A,NumChanel+01H
9409 SUBB A,#09H
E500 R MOV A,NumChanel
9400 SUBB A,#00H
506D JNC ?C0037
; SOURCE LINE # 233
; SOURCE LINE # 235
B E5D8 MOV A,ADCCON2COMPILER V9.00 HELLO 12/30/2010 14:08:56 PAGE 14
D 54F0 ANL A,#0F0H
F 4500 R ORL A,NumChanel+01H
F5D8 MOV ADCCON2,A
; SOURCE LINE # 236
D2DC SETB SCONV
?C0038:
; SOURCE LINE # 237
E5F5 MOV A,ADCCON3
20E7FB JB ACC.7,?C0038
A ?C0039:
; SOURCE LINE # 239
A E5DA MOV A,ADCDATAH
C 540F ANL A,#0FH
E ADD9 MOV R5,ADCDATAL
A0 F500 R MOV tmpVal,A
A2 ED MOV A,R5
A3 F500 R MOV tmpVal+01H,A
; SOURCE LINE # 241
A5 E500 R MOV A,NumChanel+01H
A7 6408 XRL A,#08H
A9 4500 R ORL A,NumChanel
AB 703E JNZ ?C0040
; SOURCE LINE # 242
; SOURCE LINE # 243
AD AC00 R MOV R4,tmpVal
AF 120000 E LCALL ?C?FCASTI
B2 7BF6 MOV R3,#0F6H
B4 7A28 MOV R2,#028H
B6 791C MOV R1,#01CH
B8 783F MOV R0,#03FH
BA 120000 E LCALL ?C?FPMUL
BD A804 MOV R0,AR4
BF A905 MOV R1,AR5
C1 AA06 MOV R2,AR6
C3 AB07 MOV R3,AR7
C5 7F00 MOV R7,#00H
C7 7EC0 MOV R6,#0C0H
C9 7D28 MOV R5,#028H
CB 7C44 MOV R4,#044H
CD 120000 E LCALL ?C?FPSUB
D0 E4 CLR A
D1 FB MOV R3,A
D2 FA MOV R2,A
D3 7940 MOV R1,#040H
00D5 7840 MOV R0,#040H
D7 120000 E LCALL ?C?FPDIV
DA 8F00 R MOV grad+03H,R7
DC 8E00 R MOV grad+02H,R6
DE 8D00 R MOV grad+01H,R5
E0 8C00 R MOV grad,R4
; SOURCE LINE # 244
E2 120000 E LCALL ?C?CASTF
E5 AD00 R MOV R5,NumChanel+01H
E7 AC00 R MOV R4,NumChanel
; SOURCE LINE # 245
E9 8008 SJMP ?C0059
EB ?C0040:
; SOURCE LINE # 246
EB AD00 R MOV R5,NumChanel+01H
ED AC00 R MOV R4,NumChanel
EF AF00 R MOV R7,tmpVal+01H
F1 AE00 R MOV R6,tmpValCOMPILER V9.00 HELLO 12/30/2010 14:08:56 PAGE 15
F3 ?C0059:
F3 120000 R LCALL _WriteValue
; SOURCE LINE # 247
F6 8009 SJMP ?C0042
F8 ?C0037:
; SOURCE LINE # 248
F8 7BFF MOV R3,#0FFH
FA 7A00 R MOV R2,#HIGH ?SC_44
FC 7900 R MOV R1,#LOW ?SC_44
00FE 120000 E LCALL _printf
?C0042:
; SOURCE LINE # 249
850000 R MOV OldChanel,NumChanel
850000 R MOV OldChanel+01H,NumChanel+01H
; SOURCE LINE # 252
758AFE MOV TL0,#0FEH
; SOURCE LINE # 253
A 758C32 MOV TH0,#032H
; SOURCE LINE # 254
D 438810 ORL TCON,#010H
; SOURCE LINE # 255
; SOURCE LINE # 256
020000 R LJMP ?C0032
; FUNCTION main (END)COMPILER V9.00 HELLO 12/30/2010 14:08:56 PAGE 16 CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====. . . . . . . . . . . . . . . PUBLIC DATA U_INT 0000H 2. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00DCH 1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1
_WriteValue. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----. . . . . . . . . . . . . . . . AUTO DATA U_INT 0000H 2. . . . . . . . . . . . . . . * REG * DATA U_INT 0004H 2
_WriteToUART . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
count. . . . . . . . . . . . . . . . AUTO DATA U_INT 0000H 2. . . . . . . . . . . . . . . . . . AUTO DATA U_INT 0002H 2. . . . . . . . . . . . . . . . . AUTO DATA U_INT 0004H 2_t . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
_printf. . . . . . . . . . . . . . . . EXTERN CODE PROC ----- -----. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0098H 1
_ScanKBOnce. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----. . . . . . . . . . . . . . . . . AUTO DATA PTR 0000H 3. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1. . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1. . . . . . . . . . . . . . . * REG * DATA U_CHAR 0004H 1. . . . . . . . . . . . . . . . . . * REG * DATA U_INT 0002H 2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0099H 1. . . . . . . . . . . . . . . PUBLIC DATA U_INT 0002H 2CCON . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00E8H 1
DCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00E8H 1
_ReadMax . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----. . . . . . . . . . . . . . . * REG * DATA PTR 0082H 2. . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
grad . . . . . . . . . . . . . . . . AUTO DATA FLOAT 0000H 4. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0004H 1. . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0005H 1. . . . . . . . . . . . . . . AUTO DATA U_INT 0006H 2. . . . . . . . . . . . . . . SFR DATA U_CHAR 00DAH 1. . . . . . . . . . . . . . . PUBLIC DATA U_INT 0004H 2. . . . . . . . . . . . . . . SFR DATA U_CHAR 00D9H 1. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0087H 1. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0089H 1. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1
_WriteMax. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----. . . . . . . . . . . . . . . * REG * DATA PTR 0082H 2. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1. . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
_?ix1000 . . . . . . . . . . . . . . . STATIC CODE ARRAY 0045H 11. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008DH 1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008CH 1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008DH 1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008AH 1
_ReadEXTRAM. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----. . . . . . . . . . . . . . . . . * REG * DATA PTR 0082H 2. . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00EFH 1. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D8H 1_val . . . . . . . . . . . . . . . PUBLIC XDATA ARRAY 0000H 254. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00F5H 1COMPILER V9.00 HELLO 12/30/2010 14:08:56 PAGE 17 CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
_WriteEXTRAM . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----. . . . . . . . . . . . . . . . . * REG * DATA PTR 0082H 2. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1. . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0084H 1. . . . . . . . . . . . . . . PUBLIC DATA U_INT 0006H 2
_chrtoint. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
ch . . . . . . . . . . . . . . . . . AUTO DATA CHAR 0000H 1. . . . . . . . . . . . . . . AUTO DATA ARRAY 0001H 11. . . . . . . . . . . . . . . . . * REG * DATA U_INT 0006H 2. . . . . . . . . . . . . . . . PUBLIC DATA ARRAY 0008H 17INFORMATION: STATIC OVERLAYABLESIZE = 663 ----SIZE = 80 ----SIZE = 254 ----SIZE = ---- ----SIZE = 25 31SIZE = ---- ----SIZE = ---- ----OF MODULE INFORMATION.COMPILATION COMPLETE. 3 WARNING(S), 0 ERROR(S)
Описание основных блоков:
1. char ReadEXTRAM(unsigned char xdata *adr)
{char oldDPP=DPP;char val=0;=MyData;=*adr;=oldDPP;
return val;
}
Данная функция читает из внеш.ОЗУ из страницы, номер которой записан в переменную MyData (0х3) (см. начало программы - описание переменных), по адресу adr и возвращает значение, хранящееся в ячейке по этому адресу.
2.WriteEXTRAM(unsigned char xdata *adr,unsigned char val)
{ char oldDPP=DPP;=MyData;// третья страница памяти
*adr=val;=oldDPP;// возвращаем старое значение
}
Данная функция является аналогом ReadEXTRAM, только используется для записи: пишем в ячейку с адресом adr значение переменной val.
3.WriteToUART(unsigned short count)
{ short i;// счетчикshort tmp=0;("ADC Channel: %d\nData start:\n", NumChanel);// номер канала и служебное слово(i=0;i<=count;i++)
{=ReadEXTRAM(i);
//val=conv_val[i];
printf ("%d\n", tmp);// передача данных
}("Data stop\n");// конец вывода данных
}
Данная функция вызывает чтение из внешней памяти (ReadEXTRAM) и записывает в COM-Port.
4.WriteValue(unsigned short Value,unsigned short Channel)
{
if (Channel!=OldChanel)// если был сменен канал нужно вывести данные
{
WriteToUART(--IndexMas);// вывод
IndexMas=0;// данные выведены можно заполнять массив сначала
}
WriteEXTRAM(IndexMas,Value);// пишем во внешнее ОЗУ
//conv_val[IndexMas]=Value;// пишем данные во внешнее ОЗУ
IndexMas++;// увеличиваем индекс
if (IndexMas>=CountMas)// Проверяем не конец ли это массива
{
WriteToUART(--IndexMas);// если массив заполнен выведем данные
IndexMas=0;// данные выведены можно заполнять массив сначала
}
}
Данная функция методом комбинирования вышеописанных функций выводит данные, если канал был сменен (т.е. срабатывает при смене канала, когда нажата клавиша). Затем когда данные выведены, заполняет массив снова и пишет во внеш. ОЗУ и выводит в COM-Port.