Advertisement
Guest User

Untitled

a guest
Feb 18th, 2020
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.02 KB | None | 0 0
  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,0xFE ;сброс reg_led.0 для включения LED0
  19. sec ;C=1
  20. set ;T=1 – флаг направления
  21. ser temp ;инициализация
  22. out DDRC,temp ; порта PB на вывод
  23. out PORTC,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 PORTC,reg_led ;включение СД
  32. ;***Задержка (два вложенных цикла)***
  33. ldi r19,0x6
  34. d1: ldi r17,0xEB ;1+(1+(0,75*r18)*r17)*r19
  35. d2: ldi r18,0xEA ;1+(0,75*r18)*r17
  36. d3: dec r18 ;0,75*r18
  37. brne d3 ;
  38. dec r17
  39. brne d2
  40. dec r19
  41. brne d1
  42.  
  43. sbic PIND,STOP ;если замкнута кнопка STOP, то
  44. rjmp MM ; переход
  45. rjmp WAITSTART ; для проверки кнопки START,
  46.  
  47. SETR: ldi reg_led, 0xC0
  48. clc
  49. rjmp LOOP
  50.  
  51. SETL: ldi reg_led, 0xFE
  52. sec
  53. rjmp LOOP
  54.  
  55. MM: brts LEFT ;переход, если флаг T установлен
  56.  
  57. sbrc reg_led,0 ;пропуск следующей команды,
  58. ; если 0-й разряд reg_led установлен
  59. set ;T=1 - переключение флага направления
  60. sbrc reg_led,0 ;пропуск следующей команды,
  61. rjmp SETL
  62. ror reg_led ;сдвиг reg_led вправо на 1 разряд
  63. rjmp LOOP
  64. LEFT: sbrs reg_led,7 ;пропуск следующей команды,
  65. ; если 7-й разряд reg_led установлен
  66. clt ;T=0 – переключение флага направления
  67. sbrs reg_led,7 ;пропуск следующей команды,
  68. rjmp SETR
  69. rol reg_led ;сдвиг reg_led влево на 1 разряд
  70. rjmp LOOP
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement