Формування часових інтервалів. Сторінкова організація пам'яті, страница 2

      ;…

      org    0x234  ; розміщення підпрограми з адреси 0x234

      movlw  b'00000000'  ;тактування від внутрішнього генератора

                    ;з попереднім дільником при К = 2

      bsf    STATUS, RP0  ;вибір банку 1

      movwf  OPTION_REG   ;запис у регістр OPTION

      bcf    STATUS, RP0  ;вибір банку 0

      ;…

      movlw  FDEL   ;[1] запис константи

      movwf  EDEL   ;[1] у лічильник

m2    decfsz FDEL, 1      ;[1] зменшення значення лічильника

      ;…

      bcf    INTCON, T0IF ;[1] скидання прапорця переповнення

                    ;    таймера

      movlw  0x38   ;[1] запис константи для

      movwf  TMR0   ;[1] ініціалізації лічильника

m3   

      btfss  INTCON, T0IF ;[1] перевірка біта T0IF у регістрі

                    ;    INTCON

                    ;[2] якщо T0IF = 1 пропуск наступної

                    ;    команди

      goto   m3     ;[2] перехід, якщо T0IF = 0

      ;…           ;    продовження програми

      goto   m2

      ;…

      return       ; повернення з підпрограми в основну

                    ; програму

      end

В результаті трансляціі одержали такі файли Lab_3.lst, Lab_3.err, Lab_3.hex, які знаходяться на дискеті.

            Тект файлу лістинга (Lab_3.lst) має наступний вигляд:

MPASM 02.20 Released             LAB3.ASM   3-23-2004  13:34:47         PAGE  1

LOC  OBJECT CODE     LINE SOURCE TEXT

  VALUE

                    00001         list p=16f84

                    00002         #include p16f84.inc     ;подключение библиотеки

                    00001         LIST

                    00002 ; P16F84.INC  Standard Header File, Version 2.00    Microchip

                    00136         LIST

  00000020          00003 CDEL EQU 20                     ;определение переменных

  00000021          00004 VDEL EQU 21                     ;для реализации задержки

0000                00005         org 0               ;адрес сегмента размещения начала программы

0000                00006 main

0000 2014           00007         call init               ;вызов процедуры инициализации портов

0001                00008 loop   

0001 1086           00009         bcf PORTB,1             ;установка в 1-цу 1-го разряда порта B

0002 1486           00010         bsf PORTB,1             ;сброс в 0 1-го разряда порта B

0003 0000           00011         nop                     ;задержка

                    00012

0004 300D           00013         movlw .13               ;13->W

0005 00A0           00014         movwf CDEL              ;CDEL=W

0006 00A1           00015         movwf VDEL              ;VDEL=W

0007 1106           00016         bcf PORTB,2             ;установка в 1-цу 2-го разряда порта B

0008 2123           00017         call    0x123           ;вызов подпрограммы по адресу 123      

0009 1506           00018         bsf PORTB,2             ;сброс в 0 2-го разряда порта B

000A 0000           00019         nop                     ;задержка

                    00020

000B 3004           00021         movlw b'00000100'       ;коефициент деления=1:32

000C 1683           00022         bsf STATUS,RP0          ;выбор банка 1

000D 0081           00023         movwf OPTION_REG        ;установка коефициента деления

000E 1283           00024         bcf STATUS,RP0          ;выбор банка 0

000F 1186           00025         bcf PORTB,3             ;установка в 1-цу 3-го разряда порта B 

0010 2127           00026         call proc1              ;вызов подпрограммы

0011 1586           00027         bsf PORTB,3             ;сброс в 0 3-го разряда порта B

0012 0000           00028         nop                     ;задержка

0013 2800           00029         goto main               ;зацикливание основной программы

                    00030        

                    00031

0014 1683           00032 init    bsf STATUS,RP0          ;выбор банка 1

0015 3000           00033         movlw b'00000000'       ;загрузка 0 в аккум.

0016 0085           00034         movwf 5                 ;запись в регистр trisa значение аккум.