Разработка програмного обеспечения

Программное обеспечение реализовывалось по следующим алгоритмам:

и алгоритм формирования Y3 и Y2:

Листинг программы:; объявляем сегмент с побитовым доступом для флагов I2C и других: dbit 1: dbit 1CBusy: dbit 1: dbit 1: dbit 1: dbit 1: dbit 1at 30h: ds 3: ds 20: ds 20: ds 2: ds 3: ds 2: ds 2: ds 1: ds 2: ds 1: ds 1; Счетчик битов для I2C: ds 1; Счетчик байтов для I2C: ds 1; Адрес ведомого: ds 3; таймаут: ds 8; Буфер передачи I2C, 8 байт: ds 8; Буфер приема I2C, 8 байтequ 10_ADDR equ 01110100b_ADDR equ 01000010bstart3hint1_alarm13hint2_power23hint3_keyb40h: dw 7FFh; константа Q0: db 24; K: dw 1F4h; A0: db 4; A1equ 0C8h; глубина стека от 200 до 255 байт - 55 байтbit P1.0; сигнал запуска АЦПbit P1.2; разрешение загрузки старшего байта в ЦАПbit P1.3; обновление регистров ЦАПbit P1.4; управляющий сигналbit P1.5; управление контроллером дисплеяbit P1.6; управление таймером КР580ВИ53bit P1.7; аварийная сигнализацияbit P3.0; синхронизация I2Cbit P3.1; данные I2Cbit P3.4; управление таймером КР580ВИ53bit P3.5; управление сторожевым таймером:SP,#stack-1IE,#7Fh; запретим прерыванияP1,#10011100bP3,#11000011bWDI; сбросим watchdogWDI

; // // // // // // // // // // // // // // //

; инициализация Т2 как источника внешнего прерывания0C9h,#00000000B; перезапускаемый режим (0C9h - адрес T2MOD)0C8h,#01001000B; Режим таймера Т2. Счетчик, счет от внешнего входа (0C8h - адрес T2CON)0CDh,#0FFH; Запись значения в таймер Т2 (0CDh - адрес TH2)0CCh,#0FFH; Запись значения для 16 разрядного счета (0CCh - адрес TH2)

; // // // // // // // // // // // // // // //

; инициализируем АЦПXmtDat,#00000010b; адрес РУСXmtDat+1,#01010000b; управляющее словоSlvAdr,#ADC_ADDR; загрузим адрес с запросом записи - последний бит "0"R0,#XmtDat;ByteCnt,#2;SendData;

; теперь необходимо вернуть указатель на регистр результатаXmtDat,#00000000b; адрес регистра результатаSlvAdr,#01000010b; загрузим адрес с запросом записи - последний бит "0"R0,#XmtDat;ByteCnt,#1;SendData;

; // // // // // // // // // // // // // // /

; инициализируем контроллер клавиатурыXmtDat,#00000001b; адрес РУСXmtDat+1,#00000000b; управляющее слово для 0х01XmtDat+2,#00000000b; управляющее слово для 0х02 - автоувеличение адресаXmtDat+3,#10100000b; управляющее слово для 0х03 - автоувеличение адресаXmtDat+4,#10000000b; управляющее слово для 0х04 - автоувеличение адресаSlvAdr,#KEYB_ADDR; загрузим адрес с запросом записи - последний бит "0"R0,#XmtDat;ByteCnt,#5;SendData;

; теперь необходимо вернуть указатель на регистр FIFOXmtDat,#00000000b; адрес регистра FIFOSlvAdr,#01110100b; загрузим адрес с запросом записи - последний бит "0"R0,#XmtDat;ByteCnt,#1;SendData;

; // // // // // // // // // // // // // // // // // /

; загрузим константыDPTR,#constQ0; константа Q0A,#00h; старший байтA,@A+DPTR;Q0,A; старший байтA,#01h; младший байтA,@A+DPTRQ0+1,A; младший байтDPTR,#constK; уставка KA,#00h;A,@A+DPTR;K,A;DPTR,#constA0; константа A0A,#00h; старший байтA,@A+DPTR;A0,A; старший байтA,#01h; младший байтA,@A+DPTRA0+1,A; младший байтDPTR,#constA1; константа A1A,#00h;A,@A+DPTR;A1,A

; // // // // // // // // // // // // // // // // // // IE,#0BFh; разрешим прерывания_CYCLE:DPTR,#0C000hA,@DPTR; введем X1 - X4DPTR,#0D000h@DPTR,A; выведем X1 - X4CALC_Q1; посчитаем Y1no_Y1; проверяем, надо ли выводить Y1Y1Y1_DELAY; задержка 90 мсY1_Y1:

; введем Х5, Х6, Х7Y1AINPUTCALC_Q2Y2_OR_Y3CALC_Q4OUTP_Y4IND

; DELAYWDI; сбросим watchdogWDIR7,#6_DELAY1:TMOD,#00000001b; режим таймера 0 - счетчикTH0,#HIGH (65536-536)TL0,#LOW (65536-536)TR0; запустим таймер_DELAY: jnb TF0,MAIN_DELAY; подождали 65 мсTF0TR0R7, MAIN_DELAY1MAIN_CYCLE

Перейти на страницу: 1 2 3 4 5 6

Прочтите также:

Расчет и проектирование систем коммутации TDM-сетей
Оборудование электронной цифровой системы коммутации DX-200 модульной структуры с управлением по записанной программе используется на местных телефонных сетях в качестве оконечных, транз ...

Разработка модема и кодека для системы передачи данных
Система сбора и передачи информации предназначена для трансляции на удаленные пункты, а также контроля информации (видео, тревожной, голосовой, передачи данных Ethernet) посредс ...

Разработка схемы преобразователя двоичного кода в код семисегментного индикатора
Задачей курсовой работы является разработка схемы преобразователя двоичного кода в код индикатора, который, в свою очередь, состоит из семи сегментов, отображающих арабские цифры и латин ...

Основные разделы

2019 © Все права защищены! >> www.techeducator.ru