n; завершення прийому подтвержденія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; передача закінчена, посилка стоп-умови і звільнення шини
;//////////////////////////////////:; прийом байта від I2C пристрої
; в Асс прийнятий байтBitCnt, # 8; лічильник біт: SCLHigh; прочитаємо черговий бітBitDlyC, SDAPin; перепишемо у СA; перепишемо біт в АSCLPin; очистимо SCLBitDlyBitCnt, RBLoop; повторимо для 8 бітAcc; збережемо АссA, ByteCnt; A, # 1, RBAck; перевіримо, останній байт або нетSDAPin; на останній байт підтвердження дій не видаемRBAClk; і переходимо відразу до видачі SCL: SDAPin; видаємо підтвердження на неостанніх байт: SCLHigh; CLK для подтвержденіяAcc; відновимо АBitDly; задержкаSCLPinSDAPin; очистимо SDABitDly
;////////////////////////////////////////////:; процедура прийому байтів (мах 8) від веденого I2C пристрої
; в змінній ByteCnt скільки байт прийняти
; в змінній SlvAdr адресу веденого
; в регістрі R0 адреса буфера для даннихSlvAdr; формування адреси веденого із запитом на чтеніеGoMaster; посилка адресаNoAck, RDEX; перевірка, чи відповів ведений: RcvByte; приймаємо байт @ R0, A; зберігаємо егоR0; переходимо до наступного адресою буфераByteCnt, RDLoop ; повторимо для всіх байт: SendStop; послати стоп-умова і звільнити шину
;////////////////////////////////////////////.
Висновок
В результаті проектування була створена мікропроцесорна система для управління об'єктом.
Основні характеристики:
Використовується мікроконтролер AT89С52;
У МПС є пам'ять двох типів: ПЗУ ємністю 8 Кбайт і ОЗУ ємністю 8 Кбайт;
Для введення використовується клавіатура, що складається з 25 клавіш;
Для виведення використовуються світлодіодні індикатори, ...