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

; поделили, теперь прибавим А0CA,R2; младший байт N7A,A0; подсуммирование КR2,A;A,R3; старший байт N7A,A0+1;R3,A;Q4+1,R2; запишем Q4Q4,R3

; // // // // // // // // // // // // // // // /_Y4:DPTR,#9000h; адрес ЦАПA,Q4+1; младший байт Q4@DPTR,A; выведем; подожемHBEN; разрешение загрузки старшего байтаA,Q4; старший байт@DPTR,A; выводHBEN; сбросим HBENLDAC; обновим регистр ЦАПLDAC; сбросим LDAC

; // // // // // // // // // // // // // // // /:R3,Q4; старший байт 4R2,Q4+1; младший байтR0,#10; делительR7,#4; 4 знакоместаDPTR,#0B000h; выберем первое знакоместо_CYCLE:DIV_LED@DPTR,A; выведем очередной разряд Q4CS1; запишем в контроллерCS1DPTRR7, IND_CYCLE

; // // // // // // // // // // // // // // // /_LED:; в R3, R2 делимое и результат, в R0 делитель, в А - остаток.A,R3; старший байт делимогоB,R0; делительABR3,A; старший байт частногоA,B; текущий остатокB,R0; делительR1,#8; количество разрядов остатка_LED_dwb3:C; очистим СA,R2A; сдвиг младших частногоA,R2A; сдвиг остаткаA,B,DIV_LED_dwb1; сравнение остатка с делителем_LED_dwb1:DIV_LED_dwb2; переход, если остаток меньше делителяA,B; вычитание делителя из текущего остаткаR2; запись 1 в очередной разряд частного_LED_dwb2:R1,DIV_LED_dwb3; повторить 8 раз

; // // // // // // // // // // // // // // // // // // // // // _DELAY:R7,#0C7h; задержка примерно на 1 мс_DELAY1:R7,ALM_DELAY1

; // // // // // // // /прерывания // // // // // // // // // /_alarm:DPTR,#0C000hA,@DPTR; введем X1 - X4DPTR,#0D000h@DPTR,A; выведем X1 - X4IND_LOOP:ALM; звуковая сигнализация 500 ГцALM_DELAY;ALMALM_DELAYINT1_LOOP

; // // // // // // // // // // // // // // // // // /_power:DPTR,#1000hA,#0FFh@DPTR,AR0, #0FFh_LOOP:DPTRA,@R0@DPTR,AR0, INT2_LOOP

; // // // // // // // // // // // // // // // // // // // // // /_keyb:

; не реализовано, т.к. не указано в задании

; // // // // // /прерывания закончились // // // // // // // // // //

; Процедуры для работы с I2С:; задержка на 5 мкс (2 на call, 2 на ret, 1 на nop)

; // // // // // // // // // // // // // // // // /:; установка SCL в 1SCLPin; установитьSCLPin,$; подождать, пока не установится в 1

; // // // // // // // // // // // // // // // // // /:; посылка stop условия и освобождение шиныSDAPin; установка SDA в 0SCLHigh; установка SCL в 1BitDly; задержкаSDAPin; посылка stop условияBitDly; задержкаI2CBusy; шина свободна

; // // // // // // // // // // // // // // // // // :; процедура посылки байта, байт для посылки в АссBitCnt,#8; Set bit count.:A; выдвинем 1 бит в СSDAPin,C; выставим бит на шинеSCLHigh; импульс синхронизацииBitDly; задержкаSCLPin; конец импульсаBitDlyBitCnt,SBloop; повторить для 8 битSDAPin; освободим линию для приема подтверженияSCLHigh; SCL для подтвержденияBitDlySDAPin,SBEX; получено ли подтверждениеNoAck; если не получено, фиксируем:SCLPin; завершение приема подтвержденияBitDly

; // // // // // // // // // // // // // // // // // // // :; процедура посылки старт-условия и адреса ведомого I2C устройства

; адрес ведомого в переменной SlvAdrI2CBusy; займем шинуNoAck; очистим флаг подтвержденияBusFault; и флаг ошибкиSCLPin,Fault; проверка, свободна ли шинаSDAPin,FaultSDAPin; начало посылки старт-условия (SCL в 1, SDA 1->0)BitDly; задержкаSCLPin; сброс SCLBitDly; завершение старт процедурыA,SlvAdr; получим адрес ведомого иSendByte; пошлем его в шину:BusFault; если ошибка, то установить флаг; и выйти

; // // // // // // // // // // // // // // // // // // // // /:; процедура посылки данных (мах 8 байт) в I2C устройство

; в переменной ByteCnt сколько байт послать

; в переменной SlvAdr адрес ведомого

; в регистре R0 адрес буфера с даннымиGoMaster; занимаем шину и посылаем адресNoAck,SDEX; если ведомый не отвечает, то ошибка:A,@R0; получим очередной байт из буфераSendByte; пошлем его в шинуR0; перейдем к следующему байтуNoAck,SDEX; если была ошибка, выходимByteCnt,SDLoop; повторить до конца буфера:SendStop; передача закончена, посылка стоп-условия и освобождение шины

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

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

Разработка приёмника супергетеродинного типа
В данном курсовом проекте должен быть разработан приёмник супергетеродинного типа по полученным техническим данным. Должна быть разработана схема электрическая принципиальная. При вып ...

Принцип работы счетчиков
С развитием электроники появился такой класс электронной техники, как цифровая. Эта техника предназначена для формирования, обработки и передачи электрических импульсных сигналов и пере ...

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

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

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