Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.68 KB | None | 0 0
  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;; Laboratory AVR Microcontrollers Part1
  3. ;;
  4. ;; Authors:
  5. ;; Dawid Jaraczewski
  6. ;; Lukasz Plech
  7. ;; Dobromir Mastalinski
  8. ;; Group: 1
  9. ;; Section: 4
  10. ;;
  11. ;; Task: d
  12. ;;
  13. ;; Todo:Write a program which only once copy data from TAB_ROM to PORT B ( display data on
  14. ;; LED's). There is 1 sec delay ( LED is on) after each occurrence
  15. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  16.  
  17. LDI R20, 0xFF
  18. OUT DDRB, R20 ; PORTB ustawiony na wyjscie
  19. ;ustawienie adresu tablicy do rejestrow
  20. LDI ZL, byte3(TAB_ROM << 1) ; branie bitow 23-16 do ZL
  21. OUT RAMPZ, ZL ; zawartosc ZL czyli bity 23-16 do RAMPZ
  22. LDI ZH, byte2(TAB_ROM << 1) ; bity 15-8 do ZH
  23. LDI ZL, byte1(TAB_ROM << 1) ; bity 7-0 do ZL
  24. LDI R20, 0x00 ; rejestr do porownan
  25.  
  26. rst: LDI R21,2 ; resetowanie rejestru wykrywajacego sekwencje konca
  27. check: ELPM R22, Z+ ; zaladowanie zawartosci pamieci do rejestru i inkrementacja adresu
  28. OUT PORTB, R22 ; zaladowanie wartosci powyzszego rejestru do portu B
  29. ; Delay ok. 1 sekunda
  30. LDI R23, 0x25 ; x = 37 ; to sie wykona raz (1)
  31. LOOP2: LDI R24, 0xFF ; y = 255 ; to sie wykona R23 razy (x)
  32. LOOP1: LDI R25, 0xFF ; z = 255 ; to sie wykona R23 * R24 razy (x * y)
  33. LOOP0: DEC R25 ; to sie wykona R23*R24*R25 razy (x* y * z)
  34. CPSE R25, R20 ; to sie wykona R23*R24*R25 + R24*R23 razy (x * y * z + x * y)
  35. JMP LOOP0
  36.  
  37. DEC R24 ; to sie wykona R24*R23 razy (x * y)
  38. CPSE R24, R20 ; to sie wykona R24*R23 * 2 + R3 razy (x * y * 2 + x)
  39. JMP LOOP1
  40.  
  41. DEC R23 ; to sie wykona R23 razy (x)
  42. CPSE R23, R20 ; to sie wykona R23 razy + 1 (x + 1)
  43. JMP LOOP2 ; w kazdej iteracji jest jakis JMP wiec wykona sie R23*R24*R25*3 razy (x* y * z * 3 - 1)
  44. ; czyli: 1 + x + x*y + x*y*z + x*y*z+x*y +x*y + x*y+x + x + x+1 + x*y*z*3-1 = 12 067 514 czyli 1s i ~5.63 ms
  45. ; Koniec delaya
  46. CPSE R22, R20 ; jesli R18 = 0 to nie skacz do rst
  47. JMP rst
  48. DEC R21 ; dekrementacja rejestru sprawdzania sekwencji konca
  49. CPSE R21, R20 ; jesli R21 = 0 to nie skacz do check
  50. JMP check ; jesli R21 = 1 to sprawdzanienie czy nie wsytapila sekwencja konca
  51. JMP end ; koniec programu
  52.  
  53. end: JMP end ; endless loop
  54.  
  55. TAB_ROM: .db 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x1F, 0x00, 0x00
  56. 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x21, 0x1A, 0x1B, 0x1C, 0x1D, 0x1F, 0x1F,
  57. 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
  58. 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
  59. 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F,
  60. 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F,
  61. 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
  62. 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F,
  63. 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F,
  64. 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F,
  65. 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaA, 0xaB, 0xaC, 0xaD, 0xAE, 0xAF,
  66. 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF,
  67. 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,
  68. 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
  69. 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0,
  70. 0x00, 0x00
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement