я вправо старшого байта N7R3, A; запис старшого байта N7 у R3A, R2; отримання молодшого байта N7A; зрушення вправо молодшого байта масиву N5, в результаті імеемR2, A; поділений на 2 елемент N7
; поділили, тепер додамо А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; якщо не отримано, фіксуємо: SCLPi...