Разработка схемы микропроцессорной системы
Общее понятие о микроконтроллерах, их использование и назначение. Разработка проекта микропроцессорной системы сбора данных с использованием стендов SDK 1.1 и SDX 0.9. Создание программного обеспечения и его загрузка в лабораторный стенд SDK-1.1.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 31.01.2014 |
Размер файла | 1,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
}
WriteEXTRAM(IndexMas,Value);// пишем во внешнее ОЗУ
//conv_val[IndexMas]=Value;// пишем данные во внешнее ОЗУ
IndexMas++;// увеличиваем индекс
if (IndexMas>=CountMas)// Проверяем не конец ли это массива
{
WriteToUART(--IndexMas);// если массив заполнен выведем данные
IndexMas=0;// данные выведены можно заполнять массив сначала
}
}
//***********************************************************//
/*
описание:
основная часть программы на которую после загрузки попадает управление
входные данные:
отсутствуют
возвращаемый результат:
отсутствует
*/
void main(void)
{
float grad = 0;
unsigned char c=0;
unsigned char svet = 0;
unsigned short tmpVal = 0;
//-------Инициализация UART-----------
TH1 = 0xFD;// Скорость 9600 бит/с
TMOD = 0x20;// Таймер 1 в режиме autoreload
TCON = 0x40;// Запуск таймера 1
SCON = 0x50;// 8 bit UART, разрешение приема
PCON &=0x7F;// Отключение удвоения скорости
TI = 1; // Флаги UART
RI = 1; // Transmit & Recive
// инициализация таймера Т0
TCON &=0xC0; //T0 stop.
TMOD &=0xF0; //сброс настроек T0.
TMOD |=0x01; //установка T0 в режим T 16-bit
TL0 = 0xFE; //задержка
TH0 = 0x32; //
IE = 0x9A; //UART enable
// Настроить A/D to sequentially convert each input channel.
ADCCON1 = 0x7C;
TCON |=0x10; //запуск T0
do
{
while(!TF0);
TCON &=0xC0; //остановим T0
//******************************************************//
if (ScanKBOnce(&c))
NumChanel=chrtoint(c);
/*
зажигаем светодиот соответствующий номеру канала
который в данный момент оцифровываем
*/
if (NumChanel<9)
/*
для объединения бит в одно число использована операция
логического суммирования(|=), а для указания номера бита -
сдвиг(<<) единицы влево на необходимое число разрядов(NumChanel)
*/
svet=(1<<(NumChanel-1));
else
svet=255;// неправильно выбран канал
WriteMax(0x7,svet);//Зажигаем светодиоды
if (NumChanel<9)
{
// начать преобразование и дождаться завершения
ADCCON2 = (ADCCON2 & 0xF0) | NumChanel;
SCONV = 1;
while (ADCCON3 & 0x80);
// Чтение A/D данных
tmpVal = ADCDATAL | ((ADCDATAH & 0x0F) << 8);
// вывод на терминал
if (NumChanel==8)// если номер канала равен восьмому
{ // то нужно преобразовать полученное значение в понятное для человека(в температуру)
grad = (675-tmpVal*0.61)/3;
WriteValue(grad,NumChanel);// запишем значение
}else
WriteValue(tmpVal,NumChanel);// запишем значение
}else
printf ("Error selection channel\n");// скажем что неверно выбран канал
OldChanel=NumChanel;// для отслеживания изменения канала
//***********************************************************//
// повторная настройка таймера и его запуск
TL0 = 0xFE; //задержка
TH0 = 0x32; //
TCON |=0x10; //запуск T0
}// do
while(1);// бесконечный цикл
}
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _WriteMax (BEGIN)
; SOURCE LINE # 28
;---- Variable 'val' assigned to Register 'R5' ----
;---- Variable 'regnum' assigned to Register 'DPTR' ----
0000 8F82 MOV DPL,R7
0002 8E83 MOV DPH,R6
; SOURCE LINE # 29
; SOURCE LINE # 30
;---- Variable 'oldDPP' assigned to Register 'R7' ----
0004 AF84 MOV R7,DPP
; SOURCE LINE # 31
0006 758408 MOV DPP,#08H
; SOURCE LINE # 32
0009 ED MOV A,R5
000A F0 MOVX @DPTR,A
; SOURCE LINE # 33
000B 8F84 MOV DPP,R7
; SOURCE LINE # 34
000D 22 RET
; FUNCTION _WriteMax (END)
; FUNCTION _ReadMax (BEGIN)
; SOURCE LINE # 42
;---- Variable 'regnum' assigned to Register 'DPTR' ----
0000 8F82 MOV DPL,R7
0002 8E83 MOV DPH,R6
; SOURCE LINE # 43
; SOURCE LINE # 44
;---- Variable 'oldDPP' assigned to Register 'R7' ----
0004 AF84 MOV R7,DPP
; SOURCE LINE # 45
;---- Variable 'val' assigned to Register 'R6' ----
; SOURCE LINE # 46
0006 758408 MOV DPP,#08H
; SOURCE LINE # 47
0009 E0 MOVX A,@DPTR
; SOURCE LINE # 48
000A 8F84 MOV DPP,R7
; SOURCE LINE # 49
000C FF MOV R7,A
; SOURCE LINE # 50
000D ?C0002:
000D 22 RET
; FUNCTION _ReadMax (END)
; FUNCTION _ScanKBOnce (BEGIN)
; SOURCE LINE # 60
0000 8B00 R MOV ch,R3
0002 8A00 R MOV ch+01H,R2
0004 8900 R MOV ch+02H,R1
; SOURCE LINE # 61
; SOURCE LINE # 66
;---- Variable 'colnum' assigned to Register 'R4' ----
0006 E4 CLR A
0007 FC MOV R4,A
0008 ?C0003:
; SOURCE LINE # 67
; SOURCE LINE # 68
0008 7401 MOV A,#01H
C51 COMPILER V9.00 HELLO 12/30/2010 14:08:56 PAGE 7
000A A804 MOV R0,AR4
000C 08 INC R0
000D 8002 SJMP ?C0045
000F ?C0044:
000F C3 CLR C
0010 33 RLC A
0011 ?C0045:
0011 D8FC DJNZ R0,?C0044
;---- Variable 'col' assigned to Register 'R7' ----
; SOURCE LINE # 69
0013 F4 CPL A
0014 FD MOV R5,A
0015 E4 CLR A
0016 FF MOV R7,A
0017 FE MOV R6,A
0018 120000 R LCALL _WriteMax
; SOURCE LINE # 72
;---- Variable 'rownum' assigned to Register 'R5' ----
001B E4 CLR A
001C FD MOV R5,A
001D ?C0006:
; SOURCE LINE # 73
; SOURCE LINE # 74
001D E4 CLR A
001E FF MOV R7,A
001F FE MOV R6,A
0020 120000 R LCALL _ReadMax
0023 7410 MOV A,#010H
0025 A805 MOV R0,AR5
0027 08 INC R0
0028 8002 SJMP ?C0047
002A ?C0046:
002A C3 CLR C
002B 33 RLC A
002C ?C0047:
002C D8FC DJNZ R0,?C0046
002E 5F ANL A,R7
002F FF MOV R7,A
;---- Variable 'row' assigned to Register 'R7' ----
; SOURCE LINE # 75
0030 7036 JNZ ?C0008
; SOURCE LINE # 76
; SOURCE LINE # 77
;---- Variable 'i' assigned to Register 'R2/R3' ----
0032 FB MOV R3,A
0033 FA MOV R2,A
0034 ?C0010:
0034 ?C0012:
0034 0B INC R3
0035 BB0001 CJNE R3,#00H,?C0048
0038 0A INC R2
0039 ?C0048:
0039 BA27F8 CJNE R2,#027H,?C0010
003C BB10F5 CJNE R3,#010H,?C0010
003F ?C0011:
; SOURCE LINE # 79
003F E4 CLR A
0040 FF MOV R7,A
0041 FE MOV R6,A
0042 120000 R LCALL _ReadMax
0045 7410 MOV A,#010H
0047 A805 MOV R0,AR5
C51 COMPILER V9.00 HELLO 12/30/2010 14:08:56 PAGE 8
0049 08 INC R0
004A 8002 SJMP ?C0050
004C ?C0049:
004C C3 CLR C
004D 33 RLC A
004E ?C0050:
004E D8FC DJNZ R0,?C0049
0050 5F ANL A,R7
; SOURCE LINE # 80
0051 7015 JNZ ?C0008
; SOURCE LINE # 81
; SOURCE LINE # 82
0053 EC MOV A,R4
0054 25E0 ADD A,ACC
0056 25E0 ADD A,ACC
0058 2D ADD A,R5
0059 2400 R ADD A,#LOW KBTable
005B F8 MOV R0,A
005C E6 MOV A,@R0
005D AB00 R MOV R3,ch
005F AA00 R MOV R2,ch+01H
0061 A900 R MOV R1,ch+02H
0063 120000 E LCALL ?C?CSTPTR
; SOURCE LINE # 83
0066 D3 SETB C
0067 22 RET
; SOURCE LINE # 84
; SOURCE LINE # 85
; SOURCE LINE # 86
0068 ?C0008:
0068 0D INC R5
0069 BD04B1 CJNE R5,#04H,?C0006
; SOURCE LINE # 87
006C ?C0005:
006C 0C INC R4
006D EC MOV A,R4
006E 6404 XRL A,#04H
0070 7096 JNZ ?C0003
0072 ?C0004:
; SOURCE LINE # 88
0072 C3 CLR C
; SOURCE LINE # 89
0073 ?C0014:
0073 22 RET
; FUNCTION _ScanKBOnce (END)
; FUNCTION _chrtoint (BEGIN)
; SOURCE LINE # 99
0000 8F00 R MOV ch,R7
; SOURCE LINE # 100
; SOURCE LINE # 101
0002 7800 R MOV R0,#LOW Digits
0004 7C00 R MOV R4,#HIGH Digits
0006 7D00 MOV R5,#00H
0008 7BFF MOV R3,#0FFH
000A 7A00 R MOV R2,#HIGH _?ix1000
000C 7900 R MOV R1,#LOW _?ix1000
000E 7E00 MOV R6,#00H
0010 7F0B MOV R7,#0BH
0012 120000 E LCALL ?C?COPY
; SOURCE LINE # 103
;---- Variable 'sym' assigned to Register 'R6/R7' ----
C51 COMPILER V9.00 HELLO 12/30/2010 14:08:56 PAGE 9
0015 E4 CLR A
0016 FF MOV R7,A
0017 FE MOV R6,A
0018 ?C0015:
; SOURCE LINE # 104
; SOURCE LINE # 105
0018 7400 R MOV A,#LOW Digits
001A 2F ADD A,R7
001B F8 MOV R0,A
001C E6 MOV A,@R0
001D B50001 R CJNE A,ch,?C0017
; SOURCE LINE # 106
; SOURCE LINE # 107
0020 22 RET
; SOURCE LINE # 108
; SOURCE LINE # 109
0021 ?C0017:
0021 0F INC R7
0022 BF0001 CJNE R7,#00H,?C0051
0025 0E INC R6
0026 ?C0051:
0026 EF MOV A,R7
0027 640A XRL A,#0AH
0029 4E ORL A,R6
002A 70EC JNZ ?C0015
002C ?C0016:
; SOURCE LINE # 110
002C 7E00 MOV R6,#00H
002E 7FFF MOV R7,#0FFH
; SOURCE LINE # 111
0030 ?C0019:
0030 22 RET
; FUNCTION _chrtoint (END)
; FUNCTION _ReadEXTRAM (BEGIN)
; SOURCE LINE # 113
;---- Variable 'adr' assigned to Register 'DPTR' ----
0000 8F82 MOV DPL,R7
0002 8E83 MOV DPH,R6
; SOURCE LINE # 114
; SOURCE LINE # 115
;---- Variable 'oldDPP' assigned to Register 'R7' ----
0004 AF84 MOV R7,DPP
; SOURCE LINE # 116
;---- Variable 'val' assigned to Register 'R6' ----
; SOURCE LINE # 117
0006 758403 MOV DPP,#03H
; SOURCE LINE # 118
0009 E0 MOVX A,@DPTR
; SOURCE LINE # 119
000A 8F84 MOV DPP,R7
; SOURCE LINE # 120
000C FF MOV R7,A
; SOURCE LINE # 121
000D ?C0020:
000D 22 RET
; FUNCTION _ReadEXTRAM (END)
; FUNCTION _WriteEXTRAM (BEGIN)
; SOURCE LINE # 122
;---- Variable 'val' assigned to Register 'R5' ----
;---- Variable 'adr' assigned to Register 'DPTR' ----
C51 COMPILER V9.00 HELLO 12/30/2010 14:08:56 PAGE 10
0000 8F82 MOV DPL,R7
0002 8E83 MOV DPH,R6
; SOURCE LINE # 123
; SOURCE LINE # 124
;---- Variable 'oldDPP' assigned to Register 'R7' ----
0004 AF84 MOV R7,DPP
; SOURCE LINE # 125
0006 758403 MOV DPP,#03H
; SOURCE LINE # 126
0009 ED MOV A,R5
000A F0 MOVX @DPTR,A
; SOURCE LINE # 127
000B 8F84 MOV DPP,R7
; SOURCE LINE # 128
000D 22 RET
; FUNCTION _WriteEXTRAM (END)
; FUNCTION _WriteToUART (BEGIN)
; SOURCE LINE # 138
0000 8E00 R MOV count,R6
0002 8F00 R MOV count+01H,R7
; SOURCE LINE # 139
; SOURCE LINE # 141
0004 E4 CLR A
0005 F500 R MOV tmp,A
0007 F500 R MOV tmp+01H,A
; SOURCE LINE # 142
0009 7BFF MOV R3,#0FFH
000B 7A00 R MOV R2,#HIGH ?SC_0
000D 7900 R MOV R1,#LOW ?SC_0
000F 850000 E MOV ?_printf?BYTE+03H,NumChanel
0012 850000 E MOV ?_printf?BYTE+04H,NumChanel+01H
0015 120000 E LCALL _printf
; SOURCE LINE # 143
0018 E4 CLR A
0019 F500 R MOV i,A
001B F500 R MOV i+01H,A
001D ?C0022:
001D D3 SETB C
001E E500 R MOV A,i+01H
0020 9500 R SUBB A,count+01H
0022 E500 R MOV A,i
0024 9500 R SUBB A,count
0026 5025 JNC ?C0023
; SOURCE LINE # 144
; SOURCE LINE # 145
0028 AE00 R MOV R6,i
002A AF00 R MOV R7,i+01H
002C 120000 R LCALL _ReadEXTRAM
002F 750000 R MOV tmp,#00H
0032 8F00 R MOV tmp+01H,R7
; SOURCE LINE # 147
0034 7BFF MOV R3,#0FFH
0036 7A00 R MOV R2,#HIGH ?SC_29
0038 7900 R MOV R1,#LOW ?SC_29
003A 850000 E MOV ?_printf?BYTE+03H,tmp
003D 850000 E MOV ?_printf?BYTE+04H,tmp+01H
0040 120000 E LCALL _printf
; SOURCE LINE # 148
0043 0500 R INC i+01H
0045 E500 R MOV A,i+01H
0047 70D4 JNZ ?C0022
C51 COMPILER V9.00 HELLO 12/30/2010 14:08:56 PAGE 11
0049 0500 R INC i
004B ?C0052:
004B 80D0 SJMP ?C0022
004D ?C0023:
; SOURCE LINE # 149
004D 7BFF MOV R3,#0FFH
004F 7A00 R MOV R2,#HIGH ?SC_33
0051 7900 R MOV R1,#LOW ?SC_33
0053 020000 E LJMP _printf
; FUNCTION _WriteToUART (END)
; FUNCTION _WriteValue (BEGIN)
; SOURCE LINE # 162
0000 8E00 R MOV Value,R6
0002 8F00 R MOV Value+01H,R7
;---- Variable 'Channel' assigned to Register 'R4/R5' ----
; SOURCE LINE # 163
; SOURCE LINE # 164
0004 ED MOV A,R5
0005 6500 R XRL A,OldChanel+01H
0007 7003 JNZ ?C0053
0009 EC MOV A,R4
000A 6500 R XRL A,OldChanel
000C ?C0053:
000C 6014 JZ ?C0026
; SOURCE LINE # 165
; SOURCE LINE # 166
000E E500 R MOV A,IndexMas+01H
0010 1500 R DEC IndexMas+01H
0012 7002 JNZ ?C0054
0014 1500 R DEC IndexMas
0016 ?C0054:
0016 14 DEC A
0017 FF MOV R7,A
0018 AE00 R MOV R6,IndexMas
001A 120000 R LCALL _WriteToUART
; SOURCE LINE # 167
001D E4 CLR A
001E F500 R MOV IndexMas,A
0020 F500 R MOV IndexMas+01H,A
; SOURCE LINE # 168
0022 ?C0026:
; SOURCE LINE # 169
0022 AE00 R MOV R6,IndexMas
0024 AF00 R MOV R7,IndexMas+01H
0026 AD00 R MOV R5,Value+01H
0028 120000 R LCALL _WriteEXTRAM
; SOURCE LINE # 171
002B 0500 R INC IndexMas+01H
002D E500 R MOV A,IndexMas+01H
002F 7002 JNZ ?C0055
0031 0500 R INC IndexMas
0033 ?C0055:
; SOURCE LINE # 172
0033 C3 CLR C
0034 9500 R SUBB A,CountMas+01H
0036 E500 R MOV A,IndexMas
0038 9500 R SUBB A,CountMas
003A 4014 JC ?C0028
; SOURCE LINE # 173
; SOURCE LINE # 174
003C E500 R MOV A,IndexMas+01H
C51 COMPILER V9.00 HELLO 12/30/2010 14:08:56 PAGE 12
003E 1500 R DEC IndexMas+01H
0040 7002 JNZ ?C0056
0042 1500 R DEC IndexMas
0044 ?C0056:
0044 14 DEC A
0045 FF MOV R7,A
0046 AE00 R MOV R6,IndexMas
0048 120000 R LCALL _WriteToUART
; SOURCE LINE # 175
004B E4 CLR A
004C F500 R MOV IndexMas,A
004E F500 R MOV IndexMas+01H,A
; SOURCE LINE # 176
; SOURCE LINE # 177
0050 ?C0028:
0050 22 RET
; FUNCTION _WriteValue (END)
; FUNCTION main (BEGIN)
; SOURCE LINE # 187
; SOURCE LINE # 188
; SOURCE LINE # 189
0000 E4 CLR A
0001 F500 R MOV grad+03H,A
0003 F500 R MOV grad+02H,A
0005 F500 R MOV grad+01H,A
0007 F500 R MOV grad,A
; SOURCE LINE # 190
0009 F500 R MOV c,A
; SOURCE LINE # 191
000B F500 R MOV svet,A
; SOURCE LINE # 192
000D F500 R MOV tmpVal,A
000F F500 R MOV tmpVal+01H,A
; SOURCE LINE # 194
0011 758DFD MOV TH1,#0FDH
; SOURCE LINE # 195
0014 758920 MOV TMOD,#020H
; SOURCE LINE # 196
0017 758840 MOV TCON,#040H
; SOURCE LINE # 197
001A 759850 MOV SCON,#050H
; SOURCE LINE # 198
001D 53877F ANL PCON,#07FH
; SOURCE LINE # 199
0020 D299 SETB TI
; SOURCE LINE # 200
0022 D298 SETB RI
; SOURCE LINE # 202
0024 5388C0 ANL TCON,#0C0H
; SOURCE LINE # 203
0027 5389F0 ANL TMOD,#0F0H
; SOURCE LINE # 204
002A 438901 ORL TMOD,#01H
; SOURCE LINE # 205
002D 758AFE MOV TL0,#0FEH
; SOURCE LINE # 206
0030 758C32 MOV TH0,#032H
; SOURCE LINE # 207
0033 75A89A MOV IE,#09AH
; SOURCE LINE # 209
0036 75EF7C MOV ADCCON1,#07CH
C51 COMPILER V9.00 HELLO 12/30/2010 14:08:56 PAGE 13
; SOURCE LINE # 210
0039 438810 ORL TCON,#010H
; SOURCE LINE # 212
003C ?C0032:
; SOURCE LINE # 213
003C 308DFD JNB TF0,?C0032
003F ?C0033:
; SOURCE LINE # 214
003F 5388C0 ANL TCON,#0C0H
; SOURCE LINE # 216
0042 7B00 MOV R3,#00H
0044 7A00 R MOV R2,#HIGH c
0046 7900 R MOV R1,#LOW c
0048 120000 R LCALL _ScanKBOnce
004B 5009 JNC ?C0034
; SOURCE LINE # 217
004D AF00 R MOV R7,c
004F 120000 R LCALL _chrtoint
0052 8E00 R MOV NumChanel,R6
0054 8F00 R MOV NumChanel+01H,R7
0056 ?C0034:
; SOURCE LINE # 222
0056 C3 CLR C
0057 E500 R MOV A,NumChanel+01H
0059 9409 SUBB A,#09H
005B E500 R MOV A,NumChanel
005D 9400 SUBB A,#00H
005F 5013 JNC ?C0035
; SOURCE LINE # 228
0061 E500 R MOV A,NumChanel+01H
0063 14 DEC A
0064 FF MOV R7,A
0065 7401 MOV A,#01H
0067 A807 MOV R0,AR7
0069 08 INC R0
006A 8002 SJMP ?C0058
006C ?C0057:
006C C3 CLR C
006D 33 RLC A
006E ?C0058:
006E D8FC DJNZ R0,?C0057
0070 F500 R MOV svet,A
0072 8003 SJMP ?C0036
0074 ?C0035:
; SOURCE LINE # 230
0074 7500FF R MOV svet,#0FFH
0077 ?C0036:
; SOURCE LINE # 231
0077 AD00 R MOV R5,svet
0079 7F07 MOV R7,#07H
007B 7E00 MOV R6,#00H
007D 120000 R LCALL _WriteMax
; SOURCE LINE # 232
0080 C3 CLR C
0081 E500 R MOV A,NumChanel+01H
0083 9409 SUBB A,#09H
0085 E500 R MOV A,NumChanel
0087 9400 SUBB A,#00H
0089 506D JNC ?C0037
; SOURCE LINE # 233
; SOURCE LINE # 235
008B E5D8 MOV A,ADCCON2
C51 COMPILER V9.00 HELLO 12/30/2010 14:08:56 PAGE 14
008D 54F0 ANL A,#0F0H
008F 4500 R ORL A,NumChanel+01H
0091 F5D8 MOV ADCCON2,A
; SOURCE LINE # 236
0093 D2DC SETB SCONV
0095 ?C0038:
; SOURCE LINE # 237
0095 E5F5 MOV A,ADCCON3
0097 20E7FB JB ACC.7,?C0038
009A ?C0039:
; SOURCE LINE # 239
009A E5DA MOV A,ADCDATAH
009C 540F ANL A,#0FH
009E ADD9 MOV R5,ADCDATAL
00A0 F500 R MOV tmpVal,A
00A2 ED MOV A,R5
00A3 F500 R MOV tmpVal+01H,A
; SOURCE LINE # 241
00A5 E500 R MOV A,NumChanel+01H
00A7 6408 XRL A,#08H
00A9 4500 R ORL A,NumChanel
00AB 703E JNZ ?C0040
; SOURCE LINE # 242
; SOURCE LINE # 243
00AD AC00 R MOV R4,tmpVal
00AF 120000 E LCALL ?C?FCASTI
00B2 7BF6 MOV R3,#0F6H
00B4 7A28 MOV R2,#028H
00B6 791C MOV R1,#01CH
00B8 783F MOV R0,#03FH
00BA 120000 E LCALL ?C?FPMUL
00BD A804 MOV R0,AR4
00BF A905 MOV R1,AR5
00C1 AA06 MOV R2,AR6
00C3 AB07 MOV R3,AR7
00C5 7F00 MOV R7,#00H
00C7 7EC0 MOV R6,#0C0H
00C9 7D28 MOV R5,#028H
00CB 7C44 MOV R4,#044H
00CD 120000 E LCALL ?C?FPSUB
00D0 E4 CLR A
00D1 FB MOV R3,A
00D2 FA MOV R2,A
00D3 7940 MOV R1,#040H
00D5 7840 MOV R0,#040H
00D7 120000 E LCALL ?C?FPDIV
00DA 8F00 R MOV grad+03H,R7
00DC 8E00 R MOV grad+02H,R6
00DE 8D00 R MOV grad+01H,R5
00E0 8C00 R MOV grad,R4
; SOURCE LINE # 244
00E2 120000 E LCALL ?C?CASTF
00E5 AD00 R MOV R5,NumChanel+01H
00E7 AC00 R MOV R4,NumChanel
; SOURCE LINE # 245
00E9 8008 SJMP ?C0059
00EB ?C0040:
; SOURCE LINE # 246
00EB AD00 R MOV R5,NumChanel+01H
00ED AC00 R MOV R4,NumChanel
00EF AF00 R MOV R7,tmpVal+01H
00F1 AE00 R MOV R6,tmpVal
C51 COMPILER V9.00 HELLO 12/30/2010 14:08:56 PAGE 15
00F3 ?C0059:
00F3 120000 R LCALL _WriteValue
; SOURCE LINE # 247
00F6 8009 SJMP ?C0042
00F8 ?C0037:
; SOURCE LINE # 248
00F8 7BFF MOV R3,#0FFH
00FA 7A00 R MOV R2,#HIGH ?SC_44
00FC 7900 R MOV R1,#LOW ?SC_44
00FE 120000 E LCALL _printf
0101 ?C0042:
; SOURCE LINE # 249
0101 850000 R MOV OldChanel,NumChanel
0104 850000 R MOV OldChanel+01H,NumChanel+01H
; SOURCE LINE # 252
0107 758AFE MOV TL0,#0FEH
; SOURCE LINE # 253
010A 758C32 MOV TH0,#032H
; SOURCE LINE # 254
010D 438810 ORL TCON,#010H
; SOURCE LINE # 255
; SOURCE LINE # 256
0110 020000 R LJMP ?C0032
; FUNCTION main (END)
C51 COMPILER V9.00 HELLO 12/30/2010 14:08:56 PAGE 16
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
NumChanel. . . . . . . . . . . . . . . PUBLIC DATA U_INT 0000H 2
SCONV. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00DCH 1
IE . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1
_WriteValue. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
Value. . . . . . . . . . . . . . . . AUTO DATA U_INT 0000H 2
Channel. . . . . . . . . . . . . . . * REG * DATA U_INT 0004H 2
_WriteToUART . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
count. . . . . . . . . . . . . . . . AUTO DATA U_INT 0000H 2
i. . . . . . . . . . . . . . . . . . AUTO DATA U_INT 0002H 2
tmp. . . . . . . . . . . . . . . . . AUTO DATA U_INT 0004H 2
size_t . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
_printf. . . . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
RI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0098H 1
_ScanKBOnce. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
ch . . . . . . . . . . . . . . . . . AUTO DATA PTR 0000H 3
row. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
col. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
rownum . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
colnum . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0004H 1
i. . . . . . . . . . . . . . . . . . * REG * DATA U_INT 0002H 2
TI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0099H 1
IndexMas . . . . . . . . . . . . . . . PUBLIC DATA U_INT 0002H 2
I2CCON . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00E8H 1
DCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00E8H 1
_ReadMax . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
regnum . . . . . . . . . . . . . . . * REG * DATA PTR 0082H 2
oldDPP . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
val. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
grad . . . . . . . . . . . . . . . . AUTO DATA FLOAT 0000H 4
c. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0004H 1
svet . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0005H 1
tmpVal . . . . . . . . . . . . . . . AUTO DATA U_INT 0006H 2
ADCDATAH . . . . . . . . . . . . . . . SFR DATA U_CHAR 00DAH 1
CountMas . . . . . . . . . . . . . . . PUBLIC DATA U_INT 0004H 2
ADCDATAL . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D9H 1
PCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0087H 1
SCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1
TMOD . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0089H 1
TCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1
_WriteMax. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
regnum . . . . . . . . . . . . . . . * REG * DATA PTR 0082H 2
val. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
oldDPP . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
_?ix1000 . . . . . . . . . . . . . . . STATIC CODE ARRAY 0045H 11
TF0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008DH 1
TH0. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008CH 1
TH1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008DH 1
TL0. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008AH 1
_ReadEXTRAM. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
adr. . . . . . . . . . . . . . . . . * REG * DATA PTR 0082H 2
oldDPP . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
val. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
ADCCON1. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00EFH 1
ADCCON2. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D8H 1
conv_val . . . . . . . . . . . . . . . PUBLIC XDATA ARRAY 0000H 254
ADCCON3. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00F5H 1
C51 COMPILER V9.00 HELLO 12/30/2010 14:08:56 PAGE 17
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
_WriteEXTRAM . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
adr. . . . . . . . . . . . . . . . . * REG * DATA PTR 0082H 2
val. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
oldDPP . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
DPP. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0084H 1
OldChanel. . . . . . . . . . . . . . . PUBLIC DATA U_INT 0006H 2
_chrtoint. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
ch . . . . . . . . . . . . . . . . . AUTO DATA CHAR 0000H 1
Digits . . . . . . . . . . . . . . . AUTO DATA ARRAY 0001H 11
sym. . . . . . . . . . . . . . . . . * REG * DATA U_INT 0006H 2
KBTable. . . . . . . . . . . . . . . . PUBLIC DATA ARRAY 0008H 17
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 663 ----
CONSTANT SIZE = 80 ----
XDATA SIZE = 254 ----
PDATA SIZE = ---- ----
DATA SIZE = 25 31
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 3 WARNING(S), 0 ERROR(S)
Описание основных блоков:
1.
unsigned char ReadEXTRAM(unsigned char xdata *adr)
{
unsigned char oldDPP=DPP;
unsigned char val=0;
DPP=MyData;
val=*adr;
DPP=oldDPP;
return val;
}
Данная функция читает из внеш.ОЗУ из страницы, номер которой записан в переменную MyData (0х3) (см. начало программы - описание переменных), по адресу adr и возвращает значение, хранящееся в ячейке по этому адресу.
2.
void WriteEXTRAM(unsigned char xdata *adr,unsigned char val)
{
unsigned char oldDPP=DPP;
DPP=MyData;// третья страница памяти
*adr=val;
DPP=oldDPP;// возвращаем старое значение
}
Данная функция является аналогом ReadEXTRAM, только используется для записи: пишем в ячейку с адресом adr значение переменной val.
3.
void WriteToUART(unsigned short count)
{
unsigned short i;// счетчик
unsigned short tmp=0;
printf ("ADC Channel: %d\nData start:\n", NumChanel);// номер канала и служебное слово
for (i=0;i<=count;i++)
{
tmp=ReadEXTRAM(i);
//val=conv_val[i];
printf ("%d\n", tmp);// передача данных
}
printf ("Data stop\n");// конец вывода данных
}
Данная функция вызывает чтение из внешней памяти (ReadEXTRAM) и записывает в COM-Port.
4.
void 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.
Размещено на Allbest.ru
Подобные документы
Разработка структурной схемы и обобщенного алгоритма работы прибора. Оценка максимальной погрешности линейного датчика давления и нормирующего усилителя. Разработка элементов принципиальной электрической схемы микропроцессорной системы сбора данных.
курсовая работа [2,1 M], добавлен 08.02.2015Назначение и устройство микропроцессорной системы контроля. Описание функциональной схемы микропроцессорной системы контроля. Расчет статической характеристики канала измерения. Разработка алгоритма функционирования микропроцессорной системы контроля.
курсовая работа [42,0 K], добавлен 30.08.2010Анализ вариантов проектных решений и выбор на его основе оптимального решения. Синтез функциональной схемы микропроцессорной системы на основе анализа исходных данных. Процесс разработки аппаратного и программного обеспечения микропроцессорной системы.
курсовая работа [469,1 K], добавлен 20.05.2014Структура микропроцессорной системы, алгоритм ее управления и передачи сигналов. Карта распределения адресов. Разработка электрической принципиальной схемы и выбор элементной базы. Расчет потребляемого тока, блока питания, программного обеспечения.
курсовая работа [5,1 M], добавлен 22.01.2014Разработка функциональной схемы микропроцессорной системы управления насосным агрегатом. Архитектура последовательных шин передачи данных RS232 и ISP. Обоснование выбора элементарной базы микропроцессорной системы: контроллера и приемопередатчика.
курсовая работа [1,6 M], добавлен 10.01.2012Разработка структурной схемы и алгоритм функционирования исследуемой микропроцессорной системы (МПС). Модель исследуемой МПС в виде системы массового обслуживания. Листинг программы моделирования на языке GPSS, результаты имитационных экспериментов.
курсовая работа [193,3 K], добавлен 25.11.2013Основные положения подхода к проектированию систем сбора и накопления информации. Выбор модели базы данных. Назначение и проектирование программного продукта "Создание стенда для изучения фотоэффекта". Экономическое обоснование разработки, эргономика.
дипломная работа [445,9 K], добавлен 10.11.2009Применение цифровых микросхем для вычисления, управления и обработки информации. Назначение микропроцессора и устройств микропроцессорной системы, их структурная и принципиальная схемы. Системная шина процессора и распределение адресного пространства.
курсовая работа [1,5 M], добавлен 29.02.2012Распределение функций между аппаратной и программной частями микропроцессорной системы. Выбор микроконтроллера, разработка и описание структурной, функциональной и принципиальной схемы. Выбор среды программирования, схема алгоритма и листинг программы.
курсовая работа [304,4 K], добавлен 17.08.2013История развития центрального процессора. Основные проблемы создания многоядерных процессоров. Проектирование микропроцессорной системы на базе процессора Intel 8080. Разработка принципиальной схемы и блок-схемы алгоритма работы микропроцессорной системы.
курсовая работа [467,6 K], добавлен 11.05.2014