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

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

и алгоритм формирования 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

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

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

Модель объекта в виде передаточной функции
В данной курсовой работе при помощи кривой разгона необходимо получить модель объекта в виде передаточной функции. Для того чтобы идентифицировать объект мы будем использовать следующие ...

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

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

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