Программа вывода звуковых сигналов на МК КР1816ВЕ51. Константы и переменные. Сигнал ошибки

Страницы работы

Содержание работы

**************************    MCS51   *******************************

*********************************************************************

*        К У Р С О В А Я   Р А Б О Т А                              *

*        на тему:                                                   *

*        выполнил : ст гр.                                          *

*        ФИО (полностью)                                            *

*********************************************************************

*                 Программа вывода звуковых сигналов                *

*                          на МК КР1816ВЕ51                         *

*   Исходные данные:                                                *

*                                                                   *

*********************************************************************

.FILLCHAR  00h     ;Заполнить промежутки между секциями нулями.

;-------------------------------------------------------------------;******************    КОНСТАНТЫ  и ПЕРЕМЕННЫЕ   ********************

;-------------------------------------------------------------------;Клавиша нажата: частота F1 - 1500 Гц; длительность посылки Т1 = 0.2 с.

;Сигнал ошибки:   Np = 5 посылок частотой F2 = 3000 Гц,

;                 длительностью посылок и пауз T2 = 0.8 с.

;Основная прграмма прерывается через T0 = 2.5 мс.(клавиатура, индикатор)

;

;Период частоты F1 равен 666(6)mkc. Если взять 667mkc то F1 = 1499,25Гц,

;а при 666mkc - 1501,5Гц. Для 667mkc полпериода дробно. Берем 666mkc.

;Полпериода - 333mkc. Для его формирования в таймер CT1 в режиме 2 надо

;записать число 111, а в счетчик CntT - 3

;

;Константы

CntTDat1:      .EQU  3H          ;число 3 и

TimerT1Dat1:   .EQU  6FH         ;  число 111 (6Fh) для формирования F1

CntTDatN:      .EQU  1H          ;число 1 и

TimerT1DatN:   .EQU  0A7H        ;  число 167 (A7h) для формирования F2

CntCyclDat1:   .EQU  1H          ;1  для 1 посылки

CntT1Dat1:     .EQU  1H          ;число 1 и

CntT2Dat1:     .EQU  50H         ;   число 80 (50H) для формирования T1

CntCyclDatN:   .EQU  9H          ;9   для 5 посылок (CntCykl = 2*Np-1)

CntT1DatN:     .EQU  2H          ;число 2 и

CntT2DatN:     .EQU  0A0h        ;   число 160 (A0h) для формирования T2

Bank2:         .EQU  10H         ;2 регистровый банк (для SoundPSW)

ModeTimerT1:   .EQU  20H         ;T1: таймер в режиме 2 без внешнего управления

Mask0Fh:       .EQU  0Fh         ;маска для выделения тетрады

;Неперемещаемые регистры

ACC:           .REG  0E0H

PSW:           .REG  0D0H

TMOD:          .REG  89H

TCON:          .REG  88H

IE:            .REG  A8H

IP:            .REG  B8H

TL1:           .REG  8BH

TH1:           .REG  8DH

SP:            .REG  81h

P3:            .REG  B0h

.RSECT

;Перемещаемые регистры

CntT:          .DS   1           ; счетчики: формирования частот F1 или F2

CntT1:         .DS   1           ;    формирования длины

CntT2:         .DS   1           ;          посылки  T1 или T2

CntCycl:       .DS   1           ;    числа посылок Np: CntCycl = 2*Np - 1

SoundPSW:      .DS   1           ;хранение PSW для звука

VarPSW:        .DS   1           ;хранение текущего PSW

DataCntT:      .DS   1           ;хранение начальных данных

DataCntT1:     .DS   1           ;   для счетчиков

DataCntT2:     .DS   1           ;        CntT, CntT1, CntT2 и

DataCntCycl:   .DS   1           ;        CntCycl

AddrSP:        .DS   8           ;область под стек

;Неперемещаемые биты

TR1:           .REG  TCON.6

EA:            .REG  IE.7

ET1:           .REG  IE.3

PT1:           .REG  IP.3

SoundPort:     .REG  P3.7        ;звуковой порт

.BSECT

;Перемещаемые биты

SoundOn:       .DS   1           ;1/0 - включить/выключить звук

SoundError:    .DS   1           ;признак сигнала ошибки

SoundPrKey:    .DS   1           ;признак сигнала нажатой клавиши

.DATA

;------------------------------------------------------------------***************************    МАКРОСЫ    ***************************

;------------------------------------------------------------------;Используются следующие регистры банка RB2 для хранения текущих значений:

;

;

;------------------------------------------------------------------;Сохранение текущего PSW в регистре VarPSW и восстановление SoundPSW

;------------------------------------------------------------------RestoreSoundPSW: .MACRO

MOV   VarPSW,PSW

MOV   PSW,SoundPSW

.ENDM

;------------------------------------------------------------------;Сохранение SoundPSW и установка прежнего PSW

;------------------------------------------------------------------SaveSoundPSW:  .MACRO

MOV   SoundPSW,PSW

MOV   PSW,VarPSW

.ENDM

;------------------------------------------------------------------;Перезагрузка счетчика CntT данными из DSeg

;------------------------------------------------------------------ReloadCntT:    .MACRO

MOV   CntT,DataCntT

.ENDM

Похожие материалы

Информация о работе