Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; *************************************
- ; Автор:Данів Ігор
- ; Дата:12.11.2018
- ; Ім'я файлу:Lab_1
- ; *************************************
- .include "tn2313def.inc" ;приєднання файлу опису.
- .list ;включення лістінга.
- .def temp = r16 ;оприділення основного робочого регістра.
- .def loop1=r18 ;оприділення регістра організації циклу.
- .def loop2=r19 ;оприділення регістра організації циклу.
- .def loop3=r20 ;оприділення регістра організації циклу.
- ;Початок програмного коду.
- .cseg ;вибір сегмента програмного коду.
- .org 0 ;установка початкового адресу на нуль.
- ;Ініциалізація стека.
- ldi temp,RAMEND ;вибір адреси вершини стека.
- out SPL,temp ;запис його в регістр стека.
- ;Ініциалізація портів ВВ.
- ldi temp,0 ;записуємо нуль в регістр
- out DDRD,temp ;порт D на ввід.
- ldi temp,0xFF ;записуємо в temp число 255.
- out DDRB,temp ;порт В на вивід.
- out PORTB,temp ;гасимо всі світлодіоди.
- out PIND,temp ;записуємо в PIND число 255.
- ;Початок основного циклу.
- main: in temp,PIND ;читаємо вміст порту PIND.
- sbrc temp,0 ;провірка розряду 1.
- rjmp main ;якщо попереднє нуль то переходимо на початок.
- rcall delay1 ;затримка 1.
- in temp,PINB ;читаємо вміст порту В.
- sbrc temp,3 ;провірка розряду 3.
- rjmp m1
- sbi PORTB,3 ;встоновлюємо розряд 3 в одиницю.
- rjmp m2
- m1: cbi PORTB,3 ;скидаємо розряд 3 в нуль.
- m2: rcall delay2 ;затримка 2.
- in temp,PINB ;читаємо вміст порту В.
- sbrc temp,0 ;провірка розряду 0.
- rjmp n1
- sbi PORTB,0 ;встановлюємо розряд 0 в одиницю.
- rjmp n2
- n1: cbi PORTB,0 ;скидаємо розряд 0 в нуль.
- n2: rcall delay3 ;затримка 3.
- in temp,PINB ;читаємо вміст порту В.
- sbrc temp,6 ;провірка розряду 7.
- rjmp d1
- sbi PORTB,6 ;встановлюємо розряд 7 в одиницю.
- rjmp d2
- d1: cbi PORTB,6 ;встановлюємо розряд 7 в нуль.
- d2: rjmp main
- delay1:
- ldi loop1, 21 ;записуємо 21 в регістр
- ldi loop2, 75 ;записуємо 75 в регістр
- ldi loop3, 191 ;записуємо 21 в регістр
- L1: dec loop3 ;зменшуємо значення регістру на 1
- brne L1 ;перехід в мітку L1 по умові loop3 = 0
- dec loop2 ;зменшуємо значення регістру на 1
- brne L1 ;перехід в мітку L1 по умові loop2 = 0
- dec loop1 ;зменшуємо значення регістру на 1
- brne L1 ;перехід в мітку L1 по умові loop1 = 0
- nop ;виконання холостої команди
- ret ;вихід з підпрограми
- delay2:
- ldi loop1, 21 ;записуємо 21 в регістр
- ldi loop2, 75 ;записуємо 75 в регістр
- ldi loop3, 191 ;записуємо 191 в регістр
- L2: dec loop3 ;зменшуємо значення регістру на 1
- brne L2 ;перехід в мітку L1 по умові loop3 = 0
- dec loop2 ;зменшуємо значення регістру на 1
- brne L2 ;перехід в мітку L1 по умові loop2 = 0
- dec loop1 ;зменшуємо значення регістру на 1
- brne L2 ;перехід в мітку L1 по умові loop2 = 0
- nop ;виконання холостої команди
- ret ;вихід з підпрограми
- delay3:
- ldi loop1, 41 ;записуємо 41 в регістр
- ldi loop2, 150 ;записуємо 150 в регістр
- ldi loop3, 128 ;записуємо 128 в регістр
- L3: dec loop3 ;зменшуємо значення регістру на 1
- brne L3 ;перехід в мітку L1 по умові loop3 = 0
- dec loop2 ;зменшуємо значення регістру на 1
- brne L3 ;перехід в мітку L1 по умові loop2 = 0
- dec loop1 ;зменшуємо значення регістру на 1
- brne L3 ;перехід в мітку L1 по умові loop1 = 0
- ret ;вихід з підпрограми
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement