Разработка схемы микропроцессорной системы

Общее понятие о микроконтроллерах, их использование и назначение. Разработка проекта микропроцессорной системы сбора данных с использованием стендов 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.