Advertisement
Guest User

Untitled

a guest
Apr 28th, 2015
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.49 KB | None | 0 0
  1. ;===========================================================================
  2.  
  3. ; Lab_2_1_student.s - Template for DAT Lab 2_1
  4. ;
  5. ; Description : A more complete template for Lab 2_1
  6.  
  7. ; Reference(s) : ARM IAR Assembler Reference Guide
  8.  
  9. ; Course : Datorteknik (DAT) DT4009
  10. ;
  11. ; Authors : Süleyman Savas
  12. ;
  13. ;
  14. ;===========================================================================
  15.  
  16. NAME main
  17. PUBLIC main
  18. SECTION .text : CODE (2)
  19. THUMB
  20.  
  21. ;===========================================================================
  22.  
  23. ; TODO: Find and add the correct addresses,
  24. ; Check sam3x datasheet - chapter 30 to find the addresses.
  25. PIOA_WPMR EQU 0x400E0EE4 ; Write Protect Mode Register
  26.  
  27. PIOA_PER EQU 0x400E0E00 ;0x0000 ; PIO Enable Register
  28. PIOA_ODR EQU 0x400E0E14 ;0x0014 ; Output Disable Register
  29. PIOA_IDR EQU 0x400E0E44 ;0x0044 ; Interrupt Disable Register
  30. PIOA_PUER EQU 0x400E0E64 ;0x0064 ; Pull Up Enable Register
  31. PIOA_PDSR EQU 0x400E0E3C ;0x003C ; Pin Data Status Register
  32.  
  33. ; C port - (leds)
  34. PIOC_WPMR EQU 0x400E12E4 ; Write Protect Mode Register
  35.  
  36. PIOC_PER EQU 0x400E1200 ;0x0000 ; PIO Enable Register - Arduino Due
  37. PIOC_OER EQU 0x400E1210 ;0x0010 ; Output Enable Register
  38. PIOC_SODR EQU 0x400E1230 ;0x0030 ; Set Output Data Register
  39. PIOC_PUDR EQU 0x400E1260 ;0x0060 ; Pull Up Disable Register
  40. PIOC_CODR EQU 0x400E1234 ;0x0034 ; Clear Output Data Register
  41.  
  42. ; PMC
  43. PMC_WPMR EQU 0x400E06E4 ; PMC Write Protect Mode Register
  44.  
  45. PMC_PCER EQU 0x400E0610 ; Peripheral Clock Enable Register 0
  46. PMC_PCDR EQU 0x400E0614 ; Peripheral Clock Disable Register 0
  47. PMC_PCSR EQU 0x400E0618 ; Peripheral Clock Status Register 0
  48.  
  49. ;===========================================================================
  50.  
  51. ; Initialization of Peripheral Clock
  52. main LDR R0,=PMC_PCER
  53. LDR R1,=(5 << 11) ; Peripheral Identifier: bit11=PIOA, bit13=PIOC
  54. STR R1,[R0]
  55.  
  56.  
  57. ;===========================================================================
  58.  
  59. ; Initialization InPort
  60. ; TODO: Write your code here
  61.  
  62. LDR R1,=0xC000
  63.  
  64. LDR R0,=PIOA_PER
  65. STR R1,[R0]
  66.  
  67. LDR R0,=PIOA_ODR
  68. STR R1,[R0]
  69.  
  70. LDR R0,=PIOA_IDR
  71. STR R1,[R0]
  72.  
  73. LDR R0,=PIOA_PUER
  74. STR R1,[R0]
  75.  
  76. ;===========================================================================
  77.  
  78. ; Initialization OutPort
  79. ; TODO: Write your code here
  80.  
  81. LDR R1,=0x6
  82.  
  83. LDR R0,=PIOC_PER
  84. STR R1, [R0]
  85.  
  86. LDR R0,=PIOC_OER
  87. STR R1, [R0]
  88.  
  89. LDR R0,=PIOC_SODR
  90. STR R1, [R0]
  91.  
  92. LDR R0,=PIOC_PUDR
  93. STR R1, [R0]
  94.  
  95. LDR R0,=PIOC_CODR
  96. STR R1, [R0]
  97.  
  98. ;===========================================================================
  99.  
  100. ; Turn LED off
  101. ; TODO: Write your code here
  102.  
  103. CLOSELEFT LDR R0,=PIOC_CODR
  104. LDR R1, =0x2
  105. STR R1,[R0]
  106. B LOOP
  107.  
  108. CLOSERIGHT LDR R1, =0x4
  109. LDR R0,=PIOC_CODR
  110. STR R1,[R0]
  111. B LOOP
  112.  
  113. CLOSE LDR R1, =0x6
  114. LDR R0,=PIOC_CODR
  115. STR R1,[R0]
  116. B LOOP
  117. ;===========================================================================
  118.  
  119. ; Main program
  120. ; TODO: Write your code here
  121.  
  122.  
  123. LOOP
  124. LDR R0,=PIOA_PDSR ; Adress till PortA:s dataregister PIO_PDSR (Pin Data Status Register)
  125. LDR R1,[R0]
  126.  
  127. AND R2, R1, #0xc000
  128. CMP R2,#0
  129. BEQ BOTH
  130.  
  131. AND R2, R1, #0x4000
  132. CMP R2,#0
  133. BEQ LEFT
  134.  
  135. AND R2, R1, #0x8000
  136. CMP R2,#0
  137. BEQ RIGHT
  138.  
  139. B CLOSE
  140.  
  141. LEFT LDR R0,=PIOC_SODR
  142. LDR R1, =0x2
  143. STR R1, [R0]
  144. B CLOSERIGHT
  145.  
  146. RIGHT LDR R0,=PIOC_SODR
  147. LDR R1, =0x4
  148. STR R1, [R0]
  149. B CLOSELEFT
  150.  
  151. BOTH LDR R0,=PIOC_SODR
  152. LDR R1, =0x6
  153. STR R1, [R0]
  154. B LOOP
  155.  
  156.  
  157. ;===========================================================================
  158.  
  159. STOP B STOP
  160.  
  161.  
  162. END
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172. UPPGIFT 2
  173.  
  174.  
  175.  
  176. ;===========================================================================; Lab_2_1_student.s - Template for DAT Lab 2_1
  177. ;
  178. ; Description : A more complete template for Lab 2_1; Reference(s) : ARM IAR Assembler Reference Guide; Course : Datorteknik (DAT) DT4009
  179. ;
  180. ; Authors : Süleyman Savas
  181. ;
  182. ;
  183. ;=========================================================================== NAME main
  184. PUBLIC main
  185. SECTION .text : CODE (2)
  186. THUMB
  187. ;===========================================================================
  188. ; TODO: Find and add the correct addresses,
  189. ; Check sam3x datasheet - chapter 30 to find the addresses.
  190.  
  191. PIOA_WPMR EQU 0x400E0EE4 ; Write Protect Mode RegisterPIOA_PER EQU 0x400E0E00 ; PIO Enable Register´
  192. PIOA_PER EQU 0x400E0E00 ; PIO Enable Register
  193. PIOA_ODR EQU 0x400E0E14 ; Output Disable Register
  194. PIOA_IDR EQU 0x400E0E44 ; Interrupt Disable Register
  195. PIOA_PUER EQU 0x400E0E64 ; Pull Up Enable Register
  196. PIOA_PDSR EQU 0x400E0E3C ; Pin Data Status Register; C port - (leds)
  197.  
  198. PIOC_WPMR EQU 0x400E12E4 ; Write Protect Mode RegisterPIOC_PER EQU 0x400E1200 ; PIO Enable Register - Arduino Due
  199. PIOC_OER EQU 0x400E1210 ; Output Enable Register
  200. PIOC_SODR EQU 0x400E1230 ; Set Output Data Register
  201. PIOC_PUDR EQU 0x400E1260 ; Pull Up Disable Register
  202. PIOC_CODR EQU 0x400E1234 ; Clear Output Data Register; PMC
  203.  
  204. PMC_WPMR EQU 0x400E06E4 ; PMC Write Protect Mode RegisterPMC_PCER EQU 0x400E0610 ; Peripheral Clock Enable Register 0
  205. PMC_PCER EQU 0x400E0610 ; Peripheral Clock Enable Register 0
  206. PMC_PCDR EQU 0x400E0614 ; Peripheral Clock Disable Register 0
  207. PMC_PCSR EQU 0x400E0618 ; Peripheral Clock Status Register 0;=======
  208.  
  209. ; Initialization of Peripheral Clock
  210.  
  211. main LDR R0,=PMC_PCER
  212. LDR R1,=(5 << 11) ; Peripheral Identifier: bit11=PIOA, bit13=PIOC
  213. STR R1,[R0]
  214. ;===========================================================================
  215. ; Initialization InPort
  216. ; TODO: Write your code here
  217.  
  218. LDR R1,=0XC000
  219. LDR R0,=PIOA_PER
  220. STR R1,[R0]
  221.  
  222. LDR R0,=PIOA_ODR
  223. STR R1,[R0]
  224.  
  225. LDR R0,=PIOA_IDR
  226. STR R1,[R0]
  227.  
  228. LDR R0,=PIOA_PUER
  229. STR R0,[R1]
  230.  
  231. ; Main program
  232.  
  233. read
  234. BL Read_p0
  235. CMP R0, #0 ; Ej tryckt => 1:a
  236. BNE read
  237. LDR R7,=1000
  238. BL Delay_ms
  239. loop B loop
  240.  
  241. ; ------------------------------------------------------------------
  242.  
  243. ;Subrutin Delay_ms ----------------------------------------
  244. ; Vänta ett antal ms
  245. ; Inparameter: R7 - delay i ms
  246. ; ---------------------------------------------------------
  247. DELAY_CALIB EQU 1200 ; utprovat värde (baserat på master clock – 12Mhz)
  248.  
  249. Delay_ms
  250. STMFD SP!,{R0,R1}
  251. MOV R0,R7
  252. do_delay_ms
  253. LDR R1,=DELAY_CALIB
  254. loop_ms
  255. SUBS R1,R1,#1
  256. BNE loop_ms
  257. SUBS R0,R0,#1
  258. BNE do_delay_ms
  259. LDMFD SP!,{R0,R1}
  260. BX LR
  261. ; ---------------------------------------------------------------------------------------------------------------------
  262.  
  263.  
  264. ;Subrutin Read_p0 ---------------------------------------
  265. ; Avläsning av knapp i subrutin
  266. ; Utparametrar: R0
  267. ; ------------------------------------------------------
  268. Read_p0
  269. STMFD SP!,{R1}
  270. LDR R1,=PIOA_PDSR
  271. LDR R0,[R1]
  272. AND R0,R0,#0x00008000 ; bitmaska fram aktuell knapp
  273. LDMFD SP!,{R1}
  274. BX LR
  275. ; ------------------------------------------------------
  276.  
  277. STOP B STOP
  278. END
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324. ;===========================================================================; Lab_2_1_student.s - Template for DAT Lab 2_1
  325. ;
  326. ; Description : A more complete template for Lab 2_1; Reference(s) : ARM IAR Assembler Reference Guide; Course : Datorteknik (DAT) DT4009
  327. ;
  328. ; Authors : Süleyman Savas
  329. ;
  330. ;
  331. ;=========================================================================== NAME main
  332. PUBLIC main
  333. SECTION .text : CODE (2)
  334. THUMB
  335. ;===========================================================================
  336. ; TODO: Find and add the correct addresses,
  337. ; Check sam3x datasheet - chapter 30 to find the addresses.
  338.  
  339. PIOA_WPMR EQU 0x400E0EE4 ; Write Protect Mode RegisterPIOA_PER EQU 0x400E0E00 ; PIO Enable Register´
  340. PIOA_PER EQU 0x400E0E00 ; PIO Enable Register
  341. PIOA_ODR EQU 0x400E0E14 ; Output Disable Register
  342. PIOA_IDR EQU 0x400E0E44 ; Interrupt Disable Register
  343. PIOA_PUER EQU 0x400E0E64 ; Pull Up Enable Register
  344. PIOA_PDSR EQU 0x400E0E3C ; Pin Data Status Register; C port - (leds)
  345.  
  346. PIOC_WPMR EQU 0x400E12E4 ; Write Protect Mode RegisterPIOC_PER EQU 0x400E1200 ; PIO Enable Register - Arduino Due
  347. PIOC_OER EQU 0x400E1210 ; Output Enable Register
  348. PIOC_SODR EQU 0x400E1230 ; Set Output Data Register
  349. PIOC_PUDR EQU 0x400E1260 ; Pull Up Disable Register
  350. PIOC_CODR EQU 0x400E1234 ; Clear Output Data Register; PMC
  351.  
  352. PMC_WPMR EQU 0x400E06E4 ; PMC Write Protect Mode RegisterPMC_PCER EQU 0x400E0610 ; Peripheral Clock Enable Register 0
  353. PMC_PCER EQU 0x400E0610 ; Peripheral Clock Enable Register 0
  354. PMC_PCDR EQU 0x400E0614 ; Peripheral Clock Disable Register 0
  355. PMC_PCSR EQU 0x400E0618 ; Peripheral Clock Status Register 0;=======
  356.  
  357. ; Initialization of Peripheral Clock
  358.  
  359. main LDR R0,=PMC_PCER
  360. LDR R1,=(5 << 11) ; Peripheral Identifier: bit11=PIOA, bit13=PIOC
  361. STR R1,[R0]
  362. ;===========================================================================
  363.  
  364. ; Initialization InPort
  365. ; TODO: Write your code here
  366.  
  367. LDR R1, =0xC000
  368.  
  369. LDR R0,=PIOA_PDSR ; Adress till PortA:s dataregister PIO_PDSR (Pin Data Status Register)
  370. STR R1,[R0] ; Läser från adress i R1 till R0
  371.  
  372. LDR R0,=PIOA_PER
  373. STR R1,[R0]
  374.  
  375. LDR R0,=PIOA_ODR
  376. STR R1,[R0]
  377.  
  378. LDR R0,=PIOA_IDR
  379. STR R1,[R0]
  380.  
  381. LDR R0,=PIOA_PUER
  382. STR R1,[R0]
  383.  
  384. ;===========================================================================
  385.  
  386. ; Turn LED off
  387. ; TODO: Write your code here
  388.  
  389. ;===========================================================================
  390.  
  391. ; Main program
  392. ; TODO: Write your code here
  393.  
  394. ;LOOP //Huvudprogram "evig loop"
  395. //Läser av knapparna
  396. ;Huvudprogram -------------------------------------
  397. read
  398.  
  399.  
  400. BL Read_p0
  401. CMP R0, #0 ; Ej tryckt => 1:a
  402. BNE read
  403. LDR R7,=1000 ;11111111 ;1000 ;Mönstret i R7:s lägsta 3 bitar ska motsvara de tre lysdioderna. ;innehåller hur lång tid (i ms) som subrutinen ska ta
  404. BL Delay_ms ;stackpointer 0x20008000
  405. ;0x20007FF8*/
  406.  
  407.  
  408.  
  409.  
  410. loop B loop
  411.  
  412.  
  413.  
  414. Led ;den ska tända resp. släcka lysdioder
  415.  
  416. STMFD SP!,{R2}
  417. ; Istället för Rl skriver du de register du använder
  418. MOV R2,R7 ;R7 skall användas som inparameter till funktionen
  419.  
  420.  
  421. ;LDR R1,=PIOC_ODSR ; PIO PortC Output Status Register
  422. LDR R0,[R1]
  423. AND R0, R0,R2 ;#0x000000E ; Maska av bit 1-3
  424. LDR R1,=PIOC_CODR ; PIO PortC Clear Output Data Register
  425. STR R0,[R1] ; R0 skrivs tillbaks, nollställer ettor
  426. EOR R0, R0,R2 ;#0xE ; Inventera bit 1-3
  427. LDR R1,=PIOC_SODR ; PIO PortC Set Output Data Register
  428. STR R0,[R1] ; R0 skrivs tillbaks, ettställer nollor
  429.  
  430.  
  431.  
  432. LDMFD SP!,{R1}
  433. ;Tänk på att spara undan de register som används inuti funktionen.
  434. ; Istället för Rl skriver du de register du använder
  435. BX LR
  436.  
  437. DELAY_CALIB EQU 1200;22222222 ;1200
  438.  
  439.  
  440.  
  441. Delay_ms
  442. STMFD SP!,{R0,R1} ;lr 200702EB
  443. MOV R0,R7
  444.  
  445.  
  446.  
  447.  
  448. do_delay_ms ; den yttre räknar upp till det tal som är inparameter
  449. LDR R1,=DELAY_CALIB
  450.  
  451.  
  452. loop_ms ;Den inre loopen tar precis 1 ms
  453. SUBS R1,R1,#1
  454. BNE loop_ms
  455. SUBS R0,R0,#1
  456. BNE do_delay_ms
  457. LDMFD SP!,{R0,R1}
  458. BX LR ;0x200702FC
  459.  
  460.  
  461.  
  462. Read_p0 ;Subrutinen Read_p0 läser av en knapp (USR_RIGHT) på port A.
  463. STMFD SP!,{R1}
  464. LDR R1,=PIOA_PDSR
  465. LDR R0,[R1]
  466. AND R0, R0, #0x00008000
  467. ;#0x00008000 ; bitmaska fram aktuell knapp
  468. LDMFD SP!,{R1}
  469. BX LR
  470. ;===========================================================================
  471.  
  472. STOP B STOP
  473.  
  474.  
  475. END
  476.  
  477.  
  478.  
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501. ;===========================================================================; Lab_2_1_student.s - Template for DAT Lab 2_1
  502. ;
  503. ; Description : A more complete template for Lab 2_1; Reference(s) : ARM IAR Assembler Reference Guide; Course : Datorteknik (DAT) DT4009
  504. ;
  505. ; Authors : Süleyman Savas
  506. ;
  507. ;
  508. ;=========================================================================== NAME main
  509. PUBLIC main
  510. SECTION .text : CODE (2)
  511. THUMB
  512. ;===========================================================================
  513. ; TODO: Find and add the correct addresses,
  514. ; Check sam3x datasheet - chapter 30 to find the addresses.
  515.  
  516. PIOA_WPMR EQU 0x400E0EE4 ; Write Protect Mode RegisterPIOA_PER EQU 0x400E0E00 ; PIO Enable Register´
  517. PIOA_PER EQU 0x400E0E00 ; PIO Enable Register
  518. PIOA_ODR EQU 0x400E0E14 ; Output Disable Register
  519. PIOA_IDR EQU 0x400E0E44 ; Interrupt Disable Register
  520. PIOA_PUER EQU 0x400E0E64 ; Pull Up Enable Register
  521. PIOA_PDSR EQU 0x400E0E3C ; Pin Data Status Register; C port - (leds)
  522.  
  523. PIOC_WPMR EQU 0x400E12E4 ; Write Protect Mode Register
  524. PIOC_PER EQU 0x400E1200 ; PIO Enable Register - Arduino Due
  525. PIOC_OER EQU 0x400E1210 ; Output Enable Register
  526. PIOC_SODR EQU 0x400E1230 ; Set Output Data Register
  527. PIOC_PUDR EQU 0x400E1260 ; Pull Up Disable Register
  528. PIOC_CODR EQU 0x400E1234 ; Clear Output Data Register; PMC
  529. PIOC_ODSR EQU 0x400E1238
  530.  
  531. PMC_WPMR EQU 0x400E06E4 ; PMC Write Protect Mode RegisterPMC_PCER EQU 0x400E0610 ; Peripheral Clock Enable Register 0
  532. PMC_PCER EQU 0x400E0610 ; Peripheral Clock Enable Register 0
  533. PMC_PCDR EQU 0x400E0614 ; Peripheral Clock Disable Register 0
  534. PMC_PCSR EQU 0x400E0618 ; Peripheral Clock Status Register 0;=======
  535.  
  536. ; Initialization of Peripheral Clock
  537.  
  538. main LDR R0,=PMC_PCER
  539. LDR R1,=(5 << 11) ; Peripheral Identifier: bit11=PIOA, bit13=PIOC
  540. STR R1,[R0]
  541. ;===========================================================================
  542.  
  543. ; Initialization outPort
  544. ; TODO: Write your code here
  545.  
  546.  
  547.  
  548.  
  549.  
  550. LDR R1, =0xE //Gröna DLED 0011
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559. LDR R0,=PIOC_PER ; Adress till PortA:s dataregister PIO_PDSR (Pin Data Status Register)
  560. STR R1,[R0] ; Läser från adress i R1 till R0
  561.  
  562.  
  563. LDR R0,=PIOC_OER
  564. STR R1,[R0]
  565.  
  566. LDR R0,=PIOC_SODR
  567. STR R1,[R0]
  568.  
  569. LDR R0,=PIOC_PUDR
  570. STR R1,[R0]
  571.  
  572. LDR R0,=PIOC_CODR
  573. STR R1,[R0]
  574.  
  575. LDR R0,=PIOC_ODSR
  576. STR R1,[R0]
  577.  
  578. ;===========================================================================
  579.  
  580. ; Turn LED off
  581. ; TODO: Write your code here
  582.  
  583. ;===========================================================================
  584.  
  585. ; Main program
  586. ; TODO: Write your code here
  587.  
  588. ;LOOP //Huvudprogram "evig loop"
  589. //Läser av knapparna
  590. ;Huvudprogram -------------------------------------
  591. read
  592.  
  593. LDR R7,=0x000000E
  594. BL Led
  595.  
  596. LDR R7,=1000
  597. BL Delay_ms
  598.  
  599. /* BL Read_p0
  600. CMP R0, #0 ; Ej tryckt => 1:a
  601. BNE read
  602. LDR R7,=1000 ;11111111 ;1000 ;Mönstret i R7:s lägsta 3 bitar ska motsvara de tre lysdioderna. ;innehåller hur lång tid (i ms) som subrutinen ska ta
  603. BL Delay_ms ;stackpointer 0x20008000
  604. ;0x20007FF8*/
  605.  
  606.  
  607. B read
  608.  
  609. ;loop B loop
  610.  
  611.  
  612.  
  613. Led ;den ska tända resp. släcka lysdioder
  614.  
  615. STMFD SP!,{R2}
  616. ; Istället för Rl skriver du de register du använder
  617. MOV R2,R7 ;R7 skall användas som inparameter till funktionen
  618.  
  619.  
  620. LDR R1,=PIOC_ODSR ; PIO PortC Output Status Register
  621. LDR R0,[R1]
  622. AND R0, R0,R2 ;#0x000000E ; Maska av bit 1-3
  623. LDR R1,=PIOC_CODR ; PIO PortC Clear Output Data Register
  624. STR R0,[R1] ; R0 skrivs tillbaks, nollställer ettor
  625. EOR R0, R0,R2 ;#0xE ; Inventera bit 1-3
  626. LDR R1,=PIOC_SODR ; PIO PortC Set Output Data Register
  627. STR R0,[R1] ; R0 skrivs tillbaks, ettställer nollor
  628.  
  629.  
  630.  
  631. LDMFD SP!,{R1}
  632. ;Tänk på att spara undan de register som används inuti funktionen.
  633. ; Istället för Rl skriver du de register du använder
  634. BX LR
  635.  
  636. DELAY_CALIB EQU 1200;22222222 ;1200
  637.  
  638.  
  639.  
  640. Delay_ms
  641. STMFD SP!,{R0,R1} ;lr 200702EB
  642. MOV R0,R7
  643.  
  644.  
  645.  
  646.  
  647. do_delay_ms ; den yttre räknar upp till det tal som är inparameter
  648. LDR R1,=DELAY_CALIB
  649.  
  650.  
  651. loop_ms ;Den inre loopen tar precis 1 ms
  652. SUBS R1,R1,#1
  653. BNE loop_ms
  654. SUBS R0,R0,#1
  655. BNE do_delay_ms
  656. LDMFD SP!,{R0,R1}
  657. BX LR ;0x200702FC
  658.  
  659.  
  660.  
  661. Read_p0 ;Subrutinen Read_p0 läser av en knapp (USR_RIGHT) på port A.
  662. STMFD SP!,{R1}
  663. LDR R1,=PIOA_PDSR
  664. LDR R0,[R1]
  665. AND R0, R0, #0x00008000
  666. ;#0x00008000 ; bitmaska fram aktuell knapp
  667. LDMFD SP!,{R1}
  668. BX LR
  669. ;===========================================================================
  670.  
  671. STOP B STOP
  672.  
  673.  
  674. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement