SHARE
TWEET

Untitled

a guest Feb 22nd, 2019 69 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;**********************************************************************
  2. ;Программа 1.1 для микроконтроллеров ATx8515:
  3. ;переключение светодиодов (СД) при нажатии на кнопку START (SW0),
  4. ;после нажатия кнопки STOP (SW1) переключение прекращается и
  5. ;возобновляется c места остановки при повторном нажатии на кнопку START
  6. ;Соединения: SW0-PD0, SW1-PD1, LED-PB
  7. ;**********************************************************************
  8. ;.include "8515def.inc"         ;файл определений для AT90S8515
  9. .include "m8515def.inc"         ;файл определений для ATmega8515
  10. .def temp = r16                 ;временный регистр
  11. .def reg_led = r20              ; регистр состояния светодиодов
  12. .equ START = 0                  ;0-й разряд порта
  13. .equ STOP = 1                   ;1-й разряд порта
  14.  
  15. .org $000
  16.         rjmp init
  17. ;***Инициализация***
  18. INIT:   ldi reg_led,0b11111101  ;сброс reg_led.0 для включения LED0
  19.         sec                 ;C=1
  20.         set                 ;T=1 – флаг направления
  21.         ser temp            ;инициализация  
  22.         out DDRB,temp       ; порта PB на вывод
  23.         out PORTB,temp      ;погасить СД
  24.         clr temp            ;инициализация
  25.         out DDRD,temp       ; порта PD на ввод
  26.         ldi temp,0x03       ;включение подтягивающих
  27.         out PORTD,temp      ; резисторов порта PD   
  28. WAITSTART:                  ;ожидание
  29.         sbic PIND,START     ; нажатия
  30.         rjmp WAITSTART      ; кнопки START
  31. LOOP:   out PORTB,reg_led   ;включение СД
  32. ;***Задержка (два вложенных цикла)***
  33.         ldi r17,2
  34. d1:     ldi r18,2
  35. d2:     dec r18
  36.         brne d2
  37.         dec r17
  38.         brne d1
  39.        
  40.         sbic PIND,STOP      ;если замкнута кнопка STOP, то
  41.         rjmp MM             ; переход
  42.         rjmp WAITSTART      ; для проверки кнопки START,
  43.  
  44. MM:     brts LEFT           ;переход, если флаг T установлен
  45.         sbrs reg_led,3      ;пропуск следующей команды,
  46.                             ; если 0-й разряд reg_led установлен
  47.         set                 ;T=1 - переключение флага направления
  48.         ror reg_led         ;сдвиг reg_led вправо на 1 разряд
  49.         ror reg_led
  50.         rjmp LOOP          
  51. LEFT:   sbrs reg_led,5      ;пропуск следующей команды,
  52.                             ; если 7-й разряд reg_led установлен
  53.         clt                 ;T=0 – переключение флага направления
  54.         rol reg_led         ;сдвиг reg_led влево на 1 разряд
  55.         rol reg_led
  56.         rjmp LOOP
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top