Скачиваний:
22
Добавлен:
10.12.2013
Размер:
712.7 Кб
Скачать

2.3.5. Блок-схема алгоритма программы мк

Перечень применяемых обозначений

FMC

метка вычислителя БУД;

METFMC

индикатор регистрации метки вычислителя;

TCL

индикатор работы таймера;

BL_AO

вход сигнала блокировки аварийного останова от вычислителя;

AO_SVK

индикатор режима аварийного останова;

BL_OUT

индикатор блокировки управляющих сигналов вычислителя;

CPU_NS

индикатор незапуска вычислителя;

ASVK_ON

индикатор работы устройства АСВК;

BL_OUT1

выход блокировки управляющих сигналов вычислителя;

AO_SVK1

выход управления режимом аварийного останова;

INT

выход запроса прерываний;

NZ

метка начального запуска МП;

CTF

счетчик – фильтр времени отсутствия FMC;

CLOK

счетчик прерываний таймера T0;

FLAGS

флаг аварийного останова.

TIME

ячейка периода сигнала ASVK_ON

FLAM

флаг переустановки периода сигнала ASVK_ON

Рисунок 3. Алгоритм подпрограммы начального запуска МП

Рисунок 4. Алгоритм подпрограммы разрешения и ожидания прерываний (по таймеру и по FMC)

Рисунок 5. Подпрограмма обработки прерывания по таймеру

Рисунок 6. Подпрограмма обработки прерывания по FMC

Рисунок 7. Режим аварийного останова

2.4. Разработка программы микроконтроллера

Разработка программы микроконтроллера в соответствии с блок-схемой алгоритма проводилась на языке Ассемблер 51.

Компиляция и создание объектного модуля проводились с помощью программы TASM. Отладка программы проводилась с помощью программы-отладчика FD51.

Листинг программы приведен ниже.

Программа опробована в составе разработанного устройства. Результаты проверки удовлетворяют предъявленным требованиям.

2.4.1. Листинг программы асвк

; MCS-51 ASVK Program -- 20/07/1998

SP .equ 081H ;Stack pointer

DPL .equ 082H

DPH .equ 083H

PCON .equ 087H

TCON .equ 088H

TCON.0 .equ 088H

TCON.4 .equ 08CH

TCON.5 .equ 08DH

TMOD .equ 089H

TL0 .equ 08AH

TL1 .equ 08BH

TH0 .equ 08CH

TH1 .equ 08DH

P1 .equ 090H ;Port 1

SCON .equ 098H

SBUF .equ 099H

IE .equ 0A8H

IE.7 .equ 0AFH

IE.1 .equ 0A9H

IE.0 .equ 0A8H

P3 .equ 0B0H ;Port 3

IP .equ 0B8H

PSW .equ 0D0H

A .equ 0E0H ;Accumulator

B .equ 0F0H ;Secondary Accum

P3.0 .equ 0B0H ;Port 3 bit 0

P3.1 .equ 0B1H ;Port 3 bit 1

FMC .equ 0B2H ;Port 3 bit 2

BLP .equ 0B3H ;Port 3 bit 3

METFMC .equ 0B4H ;Port 3 bit 4

TCL .equ 0B5H ;Port 3 bit 5

BL_AO .equ 0B7H ;Port 3 bit 7

AO_SVK .equ 090H ;Port 1 bit 0

BL_OUT .equ 091H ;Port 1 bit 1

CPU_NS .equ 092H ;Port 1 bit 2

ASVK_ON .equ 093H ;Port 1 bit 3

P1.4 .equ 094H ;Port 1 bit 4

BL_OUT1 .equ 095H ;Port 1 bit 5

AO_SVK1 .equ 096H ;Port 1 bit 6

INT .equ 097H ;Port 1 bit 7

T0 .equ 0B4H

T1 .equ 0B5H

NZ .equ 00 ;метка нач. запуска

CTF .equ 031H ;счетчик-фильтр

CTFMC .equ 032H ;счетчик меток FMC

CLOK .equ 033H

TIME .equ 034H

FLAGS .equ 008H

FLAM .equ 009H

.ORG 0000H

ljmp nach ;

.ORG 0003H

ljmp PRFMC ;

.ORG 000BH

ljmp PRTIME

.ORG 001BH

RETI

.ORG 0027H

RET

;nach.ustanovki------------------------

nach mov SP, #0040H ;SP =40H

mov P1, #00F9H ;установка

mov P3, #00FFH ;портов

clr TCON.5 ; TCON.5=0

setb NZ ;NZ=1

mov TMOD,#0001 ; установка

mov TH0, #00FBH ;таймера

mov TL0, #009AH ;

setb TCON.4 ;запуск таймера

mov CTFMC,#0000 ;CTFMC=0

mov CTF, #0000 ;CTF=0

mov TIME ,#00FFH

mov TIME ,CLOK

setb FLAGS

setb FLAM

setb TCON.0

setb IE.0

setb IE.1

ppppp setb IE.7 ;разрешение

ljmp ppppp ;прерываний

;PRER.FMC-----------------------------

PRFMC cpl METFMC

jnb NZ ,metkaa ;NZ=0?

clr NZ ;NZ=0

reti

metkaa jnb BL_AO,notbl ;BL_AO=0?

setb FLAGS ;FLAGS=1

ljmp yesbl ;переход на yesbl

notbl clr FLAGS ;FLAGS=0

yesbl mov CTF, #0000H ;CTF=0

; inc CTFMC ;CTFMC=CTFMC+1

setb CPU_NS ;CPU_NS OFF

jnb FLAM, flamin ;FLAM=0?

clr FLAM ;FLAM=0

mov CLOK ,#001AH

flamin mov TIME ,#001AH

reti

;PRER.TIMER---------------------------

PRTIME clr TCON.4 ;TIMER OFF

clr TCON.5

mov TMOD,#0001 ;

mov TH0, #00FBH ; установка

mov TL0, #009AH ;таймера

setb TCON.4 ;TIMER ON

clr INT

setb INT

dec CLOK ;CLOK-1

mov A, CLOK

add A, #0000H

jz TIM ;CLOK>0?

reti

TIM cpl TCL ;метка таймера

cpl ASVK_ON ;метка ASVK

;----------------------------------------

jnb CPU_NS,metkac ;CPU_NS=1?

;----------------------------------------

inc CTF ;CTF=CTF+1

;----------------------------------------

mov A, CTF ;CTF>1?

clr C

subb A, #0002H

jc line1

;----------------------------------------

mov A, CTF ;CTF>5?

clr C

subb A, #0006H

jnc ddddd ;переход на D

;----------------------------------------

line1 mov A, CTFMC ;CTFMC>2?

clr C

subb A, #0003H

jnc ddddd ; переход на D

;----------------------------------------

mov CTFMC,#0000H

setb BL_OUT

clr BL_OUT1

metkac mov TIME ,CLOK

reti

;D------------------------------------

ddddd clr TCON.4 ;остановка таймера

setb METFMC

setb TCL

setb BL_OUT1 ;

setb ASVK_ON

clr BL_OUT ;BL_OUT ON

jb FLAGS,CIKL

clr ASVK_ON

clr TCL

clr AO_SVK1 ;включение

clr AO_SVK ;аварийного останнова

;CIKL---------------------------------

CIKL clr IE.7 ;запрет прерываний

ljmp CIKL

.END

Соседние файлы в папке Diplom3(подобие моего)