ру статусу порту LPT;
Запис вмісту регістру Даних до відповідної змінної;
Вивід номеру цифри до регістру Control порту LPT;
Перетворення змінніх у вигляд рр.: хх;
Зміна системного годині.
Складемо блок-схему алгоритму (Мал. 2.2).
Рис. 2.2
Як було зазначено в пункті 1.2 (дів. Вище), розробка програми буде здійснюватісь в Microsoft Visual C + + 6.0, на мові програмування - С + +. Тому для коректної роботи програми з апаратними Частинами комп ютера, тоб з LPT, звітність, додатково підключіті зовнішню бібліотеку вводу-виводу для LPT порту INPOUT32.lib i INPOUT32.dll (Динамічна та статична бібліотеки роботи з LPT). Копіюємо ЦІ бібліотеки до папки Debug что створі после компіляції програми, а такоже пропісуємо їх в коді самої програми (див. додаток).
Приклад Виконання програми показань на рис. 2.3.
Рис. 2.3
Код програми:
. include «8535def.inc»
. def Temp1=R16
. def M1=R17
. def M2=R18
. def M3=R19
. def M4=R20
. def Delay1=R21
. def Delay2=R22
. def Delay3=R23
. org 0ResetINT_0INT_1
; Опіс переривані: _0: rcall Record_1: rcall Clear
; налаштування портів вводу виводу :: ldi Temp1,0DDRA,Temp1DDRB,Temp1Temp1,0b00001111DDRC,Temp1Temp1,0b11111111DDRD,Temp1Temp1,0b11000000GIMSK,Temp1Temp1,low(RAMEND)SPL,Temp1Temp1,high(RAMEND)SPH,Temp1M1,1M2,2M3,3M4,4
; Головний код програми :: clr Temp1PORTD, Temp1CheckMAIN
; Підпрограма перевіркі коду :: rcall ReadyTemp1, M1Error: rcall ReadyTemp1, M1ET1ER1: cp Temp1, M2Error: rcall ReadyTemp1, M2ET2ER2: cp Temp1, M3Error: rcall ReadyTemp1, M3ET3ER3: cp Temp1, M4ErrorShow p>
; Реалізація затримки :: ldi Delay1, 0x20Delay2, 0xBFDelay3, 0x02
: subi Delay1, 1Delay2, 1Delay2, 1LOOP
; Підпрограма ЯКЩО код «Вірний» :: in Temp1, PortATemp1, 0b00001111Temp1, 1GO1 Temp1, 2GO2 Temp1, 3GO3 Temp1, 4GO4 Delay
; Підпрограма ЯКЩО код «НЕ Вірний» :: ldi Temp1, 8PORTD, Temp1DelayMAIN
; Мітки для передачі числа на вхід LPT: ldi Temp1, 0b00100000PortD, M1PortC, Temp1Show: ldi Temp1, 0b00110000PortD, M2PortC, Temp1Show: ldi Temp1, 0b01000000PortD, M3PortC, Temp1Show: ldi Temp1, 0b00000000PortD, M4PortC , Temp1Show
; Підпрограма зчітування клавіш :: sbic PINA,0ROU11PINA,1ROU21PINA,2ROU31PINA,3ROU41PINA,4ROU51PINA,5ROU61PINA,6ROU71PINA,7ROU81PINB,1ROU91PINB,2ROU01Ready:ldi Temp1, 1: ldi Temp1, 2: ldi Temp1, 3: ldi Temp1, 4: ldi Temp1, 5: ldi Temp1, 6: ldi Temp1, 7: ldi Temp1, 8: ldi Temp1, 9: ldi Temp1, 0 p>
; Підпрограма переривані INT_0, с помощью Якої змінюється стандартний годину :: rcall ReadyM1, Temp1: rcall ReadyTemp1, M1EY1EW1: mov M2, Temp1: rcall ReadyTemp1, M1EY2EW2: mov M3, Temp1: rcall ReadyTemp1, M2EY3EW3 : mov M4, Temp1
; Підпрограма переривані INT_1, Скиданом перевіркі годині на початок :: clr Temp1PORTD, Temp1MAIN
# include