Advertisement
Batisk_AFF

Lab1_mps

Feb 21st, 2022
1,443
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .include "m8515def.inc" ;файл определений для ATmega8515
  2. .def temp = r16 ;временный регистр
  3. .def reg_led = r20 ;регистр состояния светодиодов
  4. .equ START = 0 ;0-ой вывод порта
  5. .equ STOP = 1 ;1-ый вывод порта
  6. .org $000
  7. rjmp init
  8. ;***Инициализация***
  9. INIT: ldi reg_led,0x80 ;сброс reg_led.0 для включения LED0
  10.   sec ;C=1
  11.   clt ;T=1 – флаг направления
  12.  
  13.   ser temp ;инициализация выводов
  14.   out DDRB,temp ; порта PB на вывод DDRB == 0xFF
  15.   out PORTB,temp ;погасить СД       PORTB == 0xFF
  16.   clr temp ;инициализация           temp == 0x00
  17.   out DDRD,temp ; порта PD на ввод  DDRD == 0x00
  18.   ldi temp,0x03 ;включение ‘подтягивающих’
  19.   out PORTD,temp ; резисторов порта PD (0-й, 1-й разряды)
  20. WAITSTART: ;ожидание
  21.   sbic PIND,START ; нажатия skip (одну команду) bit if clear
  22.   rjmp WAITSTART ; кнопки START
  23.  
  24. LOOP: out PORTB,reg_led ;вывод на индикаторы
  25. ;***Задержка (два вложенных цикла)***
  26.   ldi r19,6
  27.   d3: ldi r17,255
  28.   d1: ldi r18,255
  29.   d2: dec r18
  30.   brne d2
  31.   dec r17
  32.   brne d1
  33.   dec r19
  34.   brne d3
  35.  
  36.   sbic PIND,STOP ;если нажата кнопка STOP,
  37.   rjmp MM ; то переход
  38.   rjmp WAITSTART ; для проверки кнопки START
  39.  
  40. MM: brts LEFT ;переход, если флаг T установлен T=1
  41.   sbrc reg_led,0 ;пропуск следующей команды,
  42.   ; если 0-й разряд reg_led установлен
  43.   set ;T=1 - переключение флага направления
  44.   sec
  45.   ror reg_led ;сдвиг reg_led вправо на 1 разряд
  46.   rjmp LOOP ;переход на проверку нажатия STOP
  47.  
  48. LEFT: sbrs reg_led,7 ;пропуск следующей команды,
  49. ; если 7-й разряд reg_led установлен
  50.   clt ;T=0 – переключение флага направления
  51.   clc
  52.   rol reg_led ;сдвиг reg_led влево на 1 разряд
  53.   rjmp LOOP
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement