Читаем Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С полностью

T 00 1В 80 7В 00 8F F6 00 00 87 С3 00 01 7В 00 00

R 00 00 00 00 00 07 00 02 00 0E 00 02

T 00 29 F6 00 00 C1 7А 26 ОС F6 00 00 87 41 51 7B

R 00 00 00 00 00 03 00 02

Т 00 37 00 00 79 00 00 0B

R 00 00 00 00 00 05 00 02

Заметим, что в верхней половине представленного объектного кода, содержатся директивы для программы линковщика, а в нижней половине читатель может увидеть шестнадцатеричные коды инструкций ассемблера МК семейства 68HC12.

На заключительной стадии представленный выше объектный код обрабатывается программой линковщика. В результате формируются три файла: interrupt.lst, interrupt.map и interrupt.s19.

Файл листинга программы interrupt.lst представляет собой текстовый файл, который содержит команды ассемблера, машинные коды этих команд и абсолютные адреса в памяти микроконтроллера, в которых эти коды располагаются. Сгенерированный линковщиком файл листинга представлен ниже:

            .module interrupt.c

            .area memory(abs)

            .org 0хb1е

0B1Е _      _Timer_Overflow_interrupt_vector: :

0B1Е 8044   .word _TOIISR

            .area data

0800        _second::

0800        .blkb 1

            .area idata

--- 0000 00 .byte 0

            .area data

            .area text

802А _main: :

;#include <383HC12-ver1.h>

;void TOIISR(void) ;

;#pragma interrupt_handler TOIISR

;

;#pragma abs_address:0x0B1E

;void(*Timer_Overflow_interrupt_vector[]) ={TOIISR};

;#pragma end_abs_address

;

;unsigned char second=0x00;

;

;void main(void)

;{

;TSCR=0x80;

802А C680   ldab #128

802С 7В0086 stab 0х86

;TMSK2=0x80;

802F C680   ldab #128

8031 7B008D stab 0x8d

;TFLG2=0x80;

8034 C680   ldab #128

8036 7B008F stab 0x8f

;DDRA=0xFF;

8039 C6FF   ldab #255

803В 7В0002 stab 0x2

;CLI;

803Е 10EF   cli

8040        L3:

8040        L4:

8040 20FE bra L3

8042        X0:

;while (1) {};

;EXIT;

8042 3F     swi

; }

8043        L2:

8043        .dbline 0; func end

8043 3D     rts

8044        _TOIISR: :

;

; void TOIISR(void) {

;TFLG2=0x80;

8044 C680    ldab #128

8046 7B008F  stab 0x8f

;second += 1;

8049 f60800  ldab _second

804C 87      clra

804D C30001  addd #1

8050 7B0800  stab _second

;if(second == 122)

8053 F60800  ldab _second

8056 C17A    cmрb #122

8058 260C    bnе L7

;{

;PORTA = ~PORTA;

; vol

805A F60000  ldab 0

805D 87      clra

805E 41      comа

805F 51      comb

8060 7B0000  stab 0

;second = 0x00;

8063 790800  clr _second

;}

8066         L7:

;}

8066         L6:

8066         .dbline 0; func end

8066 0B      rti

Файл листинга обычно используется в процессе отладки прикладной программы при выявлении несоответствий между задуманными программистом действиями и реальным ходом исполнения программного кода. Кроме того, в процессе отладки иногда полезно знать, какие коды должны быть расположены в ячейках с фиксированными адресами. Последнюю информацию наиболее удобно получить из файла карты памяти *.map (иногда этот файл называют файлом символьных меток). Пример файла карты памяти для программы sample.c приведен ниже.

Area

(Attributes) Addr Size Decimal Bytes

------------ ---- ---- ------- --------

text 8000    006В = 107. bytes (rel,con)

 Addr Global Symbol

 ---- --------------

 8000 __start

 8028 _exit

 802А _main

 8044 _TOIISR

 8067 __HC12Setup

 806B __text_end

Area

(Attributes) Addr Size Decimal Bytes

------------ ---- ---- ------- -----

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже