3190

Микропроцессоры и цифровая обработка сигналов Знакомство с интегрированной средой программирования KEIL-C

Лабораторная работа

Информатика, кибернетика и программирование

Микропроцессоры и цифровая обработка сигналов Знакомство с интегрированной средой программирования KEIL-C Цель работы 1. Изучить интегрированную среду программирования keil-C. 2. Получить навыки работы с текстовым редактором этой среды программирова...

Русский

2012-10-26

103 KB

61 чел.

Микропроцессоры и цифровая обработка сигналов

Знакомство с интегрированной средой программирования KEIL-C

Цель работы

1. Изучить интегрированную среду программирования keil-C.

2. Получить навыки работы с текстовым редактором этой среды программирования.

3. Получить навыки работы с программными проектами.

4. Научиться транслировать программы.

5. Изучить работу отладчика программ в интегрированной среде программирования keilC.

Исходный текст программы.

main()

{

int A[10]={2,5,-8,7,-3,15,38,-11,66,-6};   //задание массива

int I,S,P;                                 //объявление переменных целого типа

S=0;                                       //начальное значение суммы

P=1;                                       //начальное значение произведения

for (I=1;I<10;I++)                         //переменная цикла I изменяется от 1 до 10 с шагом 1

{

P=P*A[I];                                  // нахождение произведения всех элементов массива

if(A[I]<0)                                 //если элемент массива меньше 0

S=S+A[I];                                  //нахождение суммы отрицательных элементов массива

}

}

Эта программа находит сумму отрицательных элементов массива А[10]

После выполнения программы результат (сумма) будет находиться в ячейке памяти S.

3. Cтруктура программного проекта.

Работа с программными проектами начинается с создания нового файла проекта. Для создания файла проекта в интегрированной среде разработки программ можно воспользоваться главным меню. После создания новой директории и нового файла программного проекта, интегрированная среда программирования предлагает выбрать конкретную микросхему из семейства MCS-51. После нажатия кнопки “OK”, будет предложено добавить в рабочую папку и включить в проект файл начальной инициализации микроконтроллера (Copy Analog Devices Startup Code to Project Folder and Add File to Project?). Следует выбрать вариант ответа “Нет”.

После создания программного проекта в интегрированной среде программирования keil-C конечным файлом трансляции является абсолютный файл. Для загрузки в микросхему обычно используется *.hex файл. Для создания этого файла необходимо включить соответствующую опцию в свойствах программного проекта. Затем необходимо установить выходные параметры программного проекта. Для этого открываем закладку выход (Output). В этой закладке убеждаемся, что установлена галочка создания выходного загрузочного файла в *.hex формате. Для того чтобы не загромождать директорию проекта файлами объектных кодов можно создать отдельную директорию. Новая директория может быть создана после нажатия на кнопку “Select Folder for Object”.

Точно так же можно создать директорию (папку) для файлов листингов. Для этого необходимо выбрать закладку “Listing”. В файлах листингов помещается информация об ошибках, ассемблерный код и соответствующий ему машинный код программного модуля. Использование листингов позволяет оптимизировать программу, а при работе без интегрированной среды программирования и находить синтаксические ошибки программы. Отметим, что создание файлов листингов замедляет процесс трансляции. Обычно имя для папки листингов выбирают LST.

Необходимость создания отдельных папок для листингов и объектных кодов возникает при большом количестве программных модулей, а значит при большом количестве файлов в одной папке. Обычно директории для листингов и для объектных кодов располагают внутри папки программного проекта, где содержатся исходные тексты программы.

Для настройки параметров компиляции выбирается закладка “C51”. В этой закладке настраивается уровень оптимизации транслируемого программного модуля и цель оптимизации (по скорости работы программы или по размеру выходного файла). Кроме того, в этой закладке заносится адрес векторов прерывания.

После настройки свойств программного проекта в диалоговом окне, это окно закрывается нажатием кнопки “OK”. Теперь можно подключать к программному проекту файлы с исходным текстом программных модулей. Добавляемые файлы должны быть предварительно созданы. Если файлом является программа на языке С, то этот файл должен иметь расширение *.c.

4.  Порядок создания загрузочного модуля

1. Создать проект с именем LAB1.

2. Добавить в проект файл с программой.

3. Настроить его параметры в соответствии с заданием

 

Задание

Уровень оптимизации

Цель оптимизации

Формировать листинг

Микроконтроллер

2

Размер кода

с таблицей символов

At89с51

4. Оттранслировать программный проект.

5. Убедиться, что при трансляции программного модуля не обнаружены синтаксические ошибки.

6. Убедится, что в директории проекта созданы загрузочный файл с расширение .lst и загрузочный  hex-файл с расширением .hex.

7. Выполнить пошаговую отладку программы с использованием кнопки F11. На каждом шаге выполнения программы записать значения используемых переменных программы: A[i]  и S.

5. Файл листинга (файл с расширением .lst).

C51 COMPILER V6.22  TEXT1                                                                  05/15/2011 17:52:30 PAGE 1   

C51 COMPILER V6.22, COMPILATION OF MODULE TEXT1

OBJECT MODULE PLACED IN ..\OBJ\Text1.obj

COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\LAB1\Text1.c OPTIMIZE(SIZE) DEBUG OBJECTEXTEND CODE LISTINCLUDE SYMBOLS

                   -PRINT(..\LST\Text1.lst) OBJECT(..\OBJ\Text1.obj)

stmt level    source

  1          main()

  2          {

  3   1      int A[10]={2,5,-8,7,-3,15,38,-11,66,-6};   //задание массива

  4   1      int I,S,P;                                 //объявление переменных целого типа 

  5   1      S=0;                                       //начальное значение суммы

  6   1      P=1;                                       //начальное значение произведения

  7   1      for (I=1;I<10;I++)                         //переменная цикла I изменяется от 1 до 10 с шагом 1

  8   1      {

  9   2      P=P*A[I];                                  // нахождение произведения всех элементов массива

 10   2      if(A[I]<0)                                 //если элемент массива меньше 0

 11   2      S=S+A[I];                                  //нахождение суммы отрицательных элементов массива

 12   2      }

 13   1      }

C51 COMPILER V6.22  TEXT1                                                                  05/15/2011 17:52:30 PAGE 2   

ASSEMBLY LISTING OF GENERATED OBJECT CODE

            ; FUNCTION main (BEGIN)

                                          ; SOURCE LINE # 1

                                          ; SOURCE LINE # 2

                                          ; SOURCE LINE # 3

0000 7800        R     MOV     R0,#LOW A

0002 7C00        R     MOV     R4,#HIGH A

0004 7D00              MOV     R5,#00H

0006 7BFF              MOV     R3,#0FFH

0008 7A00        R     MOV     R2,#HIGH _?ix1000

000A 7900        R     MOV     R1,#LOW _?ix1000

000C 7E00              MOV     R6,#00H

000E 7F14              MOV     R7,#014H

0010 120000      E     LCALL   ?C?COPY

                                          ; SOURCE LINE # 5

0013 E4                CLR     A

0014 F500        R     MOV     S,A

0016 F500        R     MOV     S+01H,A

                                          ; SOURCE LINE # 6

;---- Variable 'P' assigned to Register 'R6/R7' ----

0018 7F01              MOV     R7,#01H

001A FE                MOV     R6,A

                                          ; SOURCE LINE # 7

;---- Variable 'I' assigned to Register 'R2/R3' ----

001B 7B01              MOV     R3,#01H

001D FA                MOV     R2,A

001E         ?C0001:

                                          ; SOURCE LINE # 8

                                          ; SOURCE LINE # 9

001E EB                MOV     A,R3

001F 25E0              ADD     A,ACC

0021 2400        R     ADD     A,#LOW A

0023 F8                MOV     R0,A

0024 E6                MOV     A,@R0

0025 FC                MOV     R4,A

0026 08                INC     R0

0027 E6                MOV     A,@R0

0028 FD                MOV     R5,A

0029 120000      E     LCALL   ?C?IMUL

                                          ; SOURCE LINE # 10

002C EB                MOV     A,R3

002D 25E0              ADD     A,ACC

002F 2400        R     ADD     A,#LOW A

0031 F8                MOV     R0,A

0032 E6                MOV     A,@R0

0033 FC                MOV     R4,A

0034 08                INC     R0

0035 E6                MOV     A,@R0

0036 FD                MOV     R5,A

0037 C3                CLR     C

0038 EC                MOV     A,R4

0039 6480              XRL     A,#080H

003B 9480              SUBB    A,#080H

003D 500A              JNC     ?C0003

                                          ; SOURCE LINE # 11

003F ED                MOV     A,R5

0040 2500        R     ADD     A,S+01H

0042 F500        R     MOV     S+01H,A

0044 EC                MOV     A,R4

0045 3500        R     ADDC    A,S

C51 COMPILER V6.22  TEXT1                                                                  05/15/2011 17:52:30 PAGE 3   

0047 F500        R     MOV     S,A

                                          ; SOURCE LINE # 12

0049         ?C0003:

0049 0B                INC     R3

004A BB0001            CJNE    R3,#00H,?C0006

004D 0A                INC     R2

004E         ?C0006:

004E EB                MOV     A,R3

004F 640A              XRL     A,#0AH

0051 4A                ORL     A,R2

0052 70CA              JNZ     ?C0001

                                          ; SOURCE LINE # 13

0054         ?C0005:

0054 22                RET     

            ; FUNCTION main (END)

MODULE INFORMATION:   STATIC OVERLAYABLE

  CODE SIZE        =     85    ----

  CONSTANT SIZE    =     20    ----

  XDATA SIZE       =   ----    ----

  PDATA SIZE       =   ----    ----

  DATA SIZE        =   ----      22

  IDATA SIZE       =   ----    ----

  BIT SIZE         =   ----    ----

END OF MODULE INFORMATION.

C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

6. Распечатка загрузочного файла (с расширением .hex).

:10095D0000020005FFF80007FFFD000F0026FFF560

:04096D000042FFFA4B

:1009080078087C007D007BFF7A09795D7E007F1482

:100918001208D0E4F51CF51D7F01FE7B01FAEB25DA

:10092800E02408F8E6FC08E6FD1208F6EB25E024CA

:1009380008F8E6FC08E6FDC3EC64809480500AEDF4

:10094800251DF51DEC351CF51C0BBB00010AEB64DD

:040958000A4A70CA0D

:01095C002278

:0300000002097181

:0C097100787FE4F6D8FD75811D020908AE

:10080000E709F608DFFA8046E709F208DFFA803EDA

:1008100088828C83E709F0A3DFFA8032E309F608C7

:10082000DFFA8078E309F208DFFA807088828C832F

:10083000E309F0A3DFFA806489828A83E0A3F608E3

:10084000DFFA805889828A83E0A3F208DFFA804CBD

:1008500080D280FA80C680D4806980F28033801094

:1008600080A680EA809A80A880DA80E280CA8033FD

:1008700089828A83ECFAE493A3C8C582C8CCC58375

:10088000CCF0A3C8C582C8CCC583CCDFE9DEE78045

:100890000D89828A83E493A3F608DFF9ECFAA9F0C4

:1008A000EDFB2289828A83ECFAE0A3C8C582C8CC1A

:1008B000C583CCF0A3C8C582C8CCC583CCDFEADE33

:1008C000E880DB89828A83E493A3F208DFF980CC95

:1008D00088F0EF60010E4E60C388F0ED2402B4048E

:1008E0000050B9F582EB2402B4040050AF23234535

:0608F00082239008507302

:1008F600EF8DF0A4A8F0CF8CF0A428CE8DF0A42E16

:02090600FE22CF

:00000001FF

7. Таблица значений переменных программы на каждом шаге выполнения.

(Значения приведены в шестнадцатеричной системах счисления)

Шаг отладки

Значение «A[I]»

«Значение S»

0

0x0002

0x0000

1

0x0005

0xFFF8

2

0xFFF8

0xFFF8

3

0x0007

0xFFF5

4

0xFFFD

0xFFF5

5

0x000F

0xFFF5

6

0x0026

0xFFEA

7

0xFFF5

0xFFEA

8

0x0042

0xFFE4

9

0xFFFA

0x FFE4

8. Вывод 

В процессе выполнения лабораторной работы я познакомилась с интегрированной средой программирования KEIL-C, научилась пользоваться текстовым редактором этой среды и с программными проектами, изучила работу отладчика программ в интегрированной среде программирования KEIL C.


 

А также другие работы, которые могут Вас заинтересовать

24901. Имущественная ответственность за вред, причиненный незаконными действиями государственных органов, органов местного самоуправления или должностных лиц этих органов 62 KB
  Имущественная ответственность за вред причиненный незаконными действиями государственных органов органов местного самоуправления или должностных лиц этих органов. Указанные должностные лица действуют от имени РФ поэтому имущественную ответственность также несет казна причем в лице именно финансовых органов. Не противоречащей новому российскому законодательству Инструкция по применению Положения о порядке возмещения ущерба причиненного гражданину незаконными действиями органов дознания предварительного следствия прокуратуры и суда...
24902. Ответственность за вред, причиненный источником повышенной опасности 35 KB
  Три позиции по поводу толкования ИПО: Под ИПО понимается деятельность которая не поддается непрерывному и всеобъемлющему контролю человека. Под ИПО понимаются свойства людей или силы природы которые не поддаются полностью контролю человека и не подчиняясь полностью контролю создают высокую степень вероятности причинения вреда жизни здоровью ценностям. Под ИПО понимаются вещи оборудование находящееся в процессе эксплуатации и создающее при этом повышенную опасность для окружающих. Субъекты ответственности – титульные владельцы ИПО.
24903. Сроки защиты гражданских прав: понятие, значение, виды, поря. Сроки осуществления гражданских прав и сроки исполнения обязанностей и их назначение 73 KB
  Сроки осуществления гражданских прав и сроки исполнения обязанностей и их назначение Вопрос № 34. Сроки защиты гражданских прав: понятие значение виды порядок исчисления Общие положения о сроках в гражданском праве. Сроки являются особым видом юридических фактов. Суханова сроки следует выделять в отдельный вид юридических фактов наряду с событиями и действиями с ним не согласен В.
24904. Собственность и право собственности (общие положения) 33.5 KB
  В одних случаях его используют как синоним понятие имущество в других случаях считают что речь идет о сугубо экономическом отношении присвоения а иногда отождествляют с чисто юридической конструкциейправом собственности. Таким образом экономические отношения собственности представляют собой отношения присвоения конкретными лицами определенных благ влекущие его отчуждение от всех иных лиц и предоставляющие возможность хозяйственного господства соединенную с необходимостью несения бремени его содержания. Собственность как экономическая...
24905. Понятие права собственности как субъективного права. Правомочия собственника 42.5 KB
  Конституция РФ не даёт понятия права собственности устанавливая лишь право иметь имущество в собственности владеть пользоваться и распоряжаться им. Толстого не только на раскрытии содержания права собственности но и на практике применения законодательства. В юридической науке стали подниматься вопросы о том исчерпывается ли перечисленной триадой правомочий право собственности.
24906. Приобретение и прекращение права собственности 68.5 KB
  Приобретение и прекращение права собственности. Приобретение права собственности. Основаниями возникновения права собственности являются различные правопорождающие юридические факты обстоятельства реальной жизни которые влекут возникновение права собственности. Эти основания называются титулами собственности.
24907. Право общей собственности граждан (понятие, виды, осуществление) 71 KB
  Таким образом общая собственность не является какойто новой особой разновидностью формой собственности она основывается на существующих формах собственности. Право общей собственности в объективном смысле совокупность правовых норм закрепляющих регламентирующих и охраняющих принадлежность составляющего единое целое имущества одновременно двум и более лицам. Право общей собственности в субъективном смысле право двух или более лиц сообща и по своему усмотрению владеть пользоваться распоряжаться принадлежащим им имуществом...
24908. Понятие гражданского права. Гражданское право как частное право 39 KB
  Понятие гражданского права. Гражданское право как частное право Гражданское право – стержневая базисная отрасль права любой развитой правовой системы. Своим происхождением гражданское право обязано древнейшей части римского частного права ius civile ius Quiritum – праву исконных граждан Рима. Со временем гражданское право охватило собой большую часть норм права частного и стало нередко с ним отождествляться.
24909. Гражданское законодательство: понятие, система, проблемы совершенствования 47.5 KB
  Однако в актах ГЗ ГП нормы преобладают. Однако имеются и императивные нормы. Более того в случае сомнения следует исходить из презумпции императивности нормы гражданского права. Следует иметь в виду что нормы ГП нередко содержатся и в законодательстве о хозяйственной деятельности коммерческом или предпринимательском законодательстве.