Advertisement
Guest User

Untitled

a guest
Nov 8th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;
  2. .NOLIST
  3. .INCLUDE "m128def.inc"
  4. .LIST
  5. ;
  6. ;nastvení portu d jako výstupního
  7.     ldi r16,0xff
  8.     out DDRD,r16
  9. ;nastvení portu b jako vstupního
  10.     ldi r16,0x00
  11.     out DDRB,r16
  12.  
  13. .def POSITION=r21
  14. .def CURRENT_BUTTON=r16
  15.  
  16. ;Motivy rozvicovaných diod
  17. MOTIV1:
  18.     ldi CURRENT_BUTTON,1
  19.     ldi POSITION,1
  20.     ldi r17,0b11111111
  21.     out PORTD,r17
  22.     rjmp DELAY
  23. POSITION1_1:
  24.     ;
  25.     ldi POSITION,2
  26.     ldi r17,0b00000000
  27.     out PORTD,r17
  28.     rjmp DELAY
  29. POSITION1_2:
  30. ;
  31. rjmp MOTIV1
  32.  
  33. MOTIV2:
  34.     ldi CURRENT_BUTTON,2
  35.     ldi POSITION,1
  36.     ldi r17,0b11110000
  37.     out PORTD,r17
  38.     rjmp DELAY
  39. POSITION2_1:
  40.     ;
  41.     ldi POSITION,2
  42.     ldi r17,0b00001111
  43.     out PORTD,r17
  44.     rjmp DELAY
  45. POSITION2_2:
  46.     ;
  47. rjmp MOTIV2
  48.  
  49. MOTIV3:
  50.     ldi CURRENT_BUTTON,3
  51.     ldi POSITION,1
  52.     ldi r17,0b10101010
  53.     out PORTD,r17
  54.     rjmp DELAY
  55. POSITION3_1:
  56.     ;
  57.     ldi POSITION,2
  58.     ldi r17,0b01010101
  59.     out PORTD,r17
  60.     rjmp DELAY
  61. POSITION3_2:
  62. ;
  63. rjmp MOTIV3
  64.  
  65. MOTIV4:
  66.     ldi CURRENT_BUTTON,4
  67.     ldi POSITION,1
  68.     ldi r17,0b11001100
  69.     out PORTD,r17
  70.     rjmp DELAY
  71. POSITION4_1:
  72.     ;
  73.     ldi POSITION,2
  74.     ldi r17,0b00110011
  75.     out PORTD,r17
  76.     rjmp DELAY
  77. POSITION4_2:
  78. ;
  79. rjmp MOTIV4
  80. ;---------------------------------
  81. ;Podmínky pro přesunutí na správnou pozici
  82. BUTTON1:
  83.     cpi POSITION,1
  84.     breq POSITION1_1
  85.    
  86.     cpi POSITION,2
  87.     breq POSITION1_2
  88.  
  89. BUTTON2:
  90.     cpi POSITION,1
  91.     breq POSITION2_1
  92.    
  93.     cpi POSITION,2
  94.     breq POSITION2_2
  95.  
  96. BUTTON3:
  97.     cpi POSITION,1
  98.     breq POSITION3_1
  99.    
  100.     cpi POSITION,2
  101.     breq POSITION3_2
  102.  
  103. BUTTON4:
  104.     cpi POSITION,1
  105.     breq POSITION4_1
  106.    
  107.     cpi POSITION,2
  108.     breq POSITION4_2
  109.  
  110. BUTTON5:
  111.     cpi POSITION,1
  112.     breq POSITION5_1
  113.    
  114.     cpi POSITION,2
  115.     breq POSITION5_2
  116.  
  117. BUTTON6:
  118.     cpi POSITION,1
  119.     breq POSITION6_1
  120.    
  121.     cpi POSITION,2
  122.     breq POSITION6_2
  123.  
  124. BUTTON7:
  125.     cpi POSITION,1
  126.     breq POSITION7_1
  127.    
  128.     cpi POSITION,2
  129.     breq POSITION7_2
  130.  
  131. BUTTON8:
  132.     cpi POSITION,1
  133.     breq POSITION8_1
  134.    
  135.     cpi POSITION,2
  136.     breq POSITION8_2
  137. ;-------------------------------------
  138. MOTIV5:
  139.     ldi CURRENT_BUTTON,5
  140.     ldi POSITION,1
  141.     ldi r17,0b11000011
  142.     out PORTD,r17
  143.     rjmp DELAY
  144. POSITION5_1:
  145.     ;
  146.     ldi POSITION,2
  147.     ldi r17,0b00111100
  148.     out PORTD,r17
  149.     rjmp DELAY
  150. POSITION5_2:
  151. ;
  152. rjmp MOTIV5
  153.  
  154. MOTIV6:
  155.     ldi CURRENT_BUTTON,6
  156.     ldi POSITION,1
  157.     ldi r17,0b11111100
  158.     out PORTD,r17
  159.     rjmp DELAY
  160. POSITION6_1:
  161.     ;
  162.     ldi POSITION,2
  163.     ldi r17,0b11000000
  164.     out PORTD,r17
  165.     rjmp DELAY
  166. POSITION6_2:
  167.     ;
  168. rjmp MOTIV6
  169.  
  170. MOTIV7:
  171.     ldi CURRENT_BUTTON,7
  172.     ldi POSITION,1
  173.     ldi r17,0b00111111
  174.     out PORTD,r17
  175.     rjmp DELAY
  176. POSITION7_1:
  177.     ;
  178.     ldi POSITION,2
  179.     ldi r17,0b11111100
  180.     out PORTD,r17
  181.     rjmp DELAY
  182. POSITION7_2:
  183. ;
  184. rjmp MOTIV7
  185.  
  186. MOTIV8:
  187.     ldi CURRENT_BUTTON,8
  188.     ldi POSITION,1
  189.     ldi r17,0b00101101
  190.     out PORTD,r17
  191.     rjmp DELAY
  192. POSITION8_1:
  193.     ;
  194.     ldi POSITION,2
  195.     ldi r17,0b10110100
  196.     out PORTD,r17
  197.     rjmp DELAY
  198. POSITION8_2:
  199. ;
  200. rjmp MOTIV8
  201.  
  202.  
  203. ;Zpoždění v 3tí smyčce je skok na kontrolu vstupů
  204. DELAY:
  205.     ldi  r18, 3
  206.     ldi  r19, 138
  207.     ldi  r20, 86
  208.  
  209. L1: dec  r20
  210.     brne L1
  211.     dec  r19
  212.     brne L1
  213.     rjmp CHECK_BUTTON
  214. CONTINUE:
  215.     dec  r18
  216.     brne L1
  217. ;Podmínky pro vrácení na pozici asledující po DELAY
  218.     cpi CURRENT_BUTTON,1
  219.     breq MEZI1
  220.  
  221.     cpi CURRENT_BUTTON,2
  222.     breq MEZI2
  223.  
  224.     cpi CURRENT_BUTTON,3
  225.     breq MEZI3
  226.  
  227.     cpi CURRENT_BUTTON,4
  228.     breq MEZI4
  229.  
  230.     cpi CURRENT_BUTTON,5
  231.     breq MEZI5
  232.  
  233.     cpi CURRENT_BUTTON,6
  234.     breq MEZI6
  235.  
  236.     cpi CURRENT_BUTTON,7
  237.     breq MEZI7
  238.  
  239.     cpi CURRENT_BUTTON,8
  240.     breq MEZI8
  241.  
  242. rjmp DELAY
  243.  
  244. ;Zkouška jestli je stisknuté tlačítko  
  245. CHECK_BUTTON:
  246.     sbic portb,0
  247.     rjmp MOTIV1
  248.  
  249.     sbic portb,1
  250.     rjmp MOTIV2
  251.  
  252.     sbic portb,2
  253.     rjmp MOTIV3
  254.  
  255.     sbic portb,3
  256.     rjmp MOTIV4
  257.  
  258.     sbic portb,4
  259.     rjmp MOTIV5
  260.  
  261.     sbic portb,5
  262.     rjmp MOTIV6
  263.  
  264.     sbic portb,6
  265.     rjmp MOTIV7
  266.  
  267.     sbic portb,7
  268.     rjmp MOTIV8
  269. rjmp CONTINUE
  270.  
  271. ;Mezikrok pro jump na kontrulu pozice před vsutupem do DELAY (protože breq by byl out of reach)
  272. MEZI1:
  273. rjmp BUTTON1
  274. MEZI2:
  275. rjmp BUTTON2
  276. MEZI3:
  277. rjmp BUTTON3
  278. MEZI4:
  279. rjmp BUTTON4
  280. MEZI5:
  281. rjmp BUTTON5
  282. MEZI6:
  283. rjmp BUTTON6
  284. MEZI7:
  285. rjmp BUTTON7
  286. MEZI8:
  287. rjmp BUTTON8
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement