Advertisement
Guest User

Untitled

a guest
Jan 28th, 2015
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.28 KB | None | 0 0
  1. ;****************************************************************
  2. ;Skriven av :niklas abefelt 26/01/2014
  3. ;Filnamn :lab1
  4. ;Programmets syfte :addera två tal
  5. ;Processor :18f458
  6. ;****************************************************************
  7. list p=18f458 ;processorangivelse för kompilatorn
  8. ;********************** Variabeltilldelningar ************************
  9.  
  10. portC equ 0xf82 ;Adress för port C
  11. var_a equ 0x20 ;RAM-adress för Var1
  12. var_b equ 0x21 ;RAM-adress för Var2
  13. var_c equ 0x22 ; RAM-adress för var C
  14. var_d equ 0x23
  15. RES_andA equ 0x25; adress för res_andA
  16. RES_andB equ 0x26 ; adress för res_andB
  17. trisc equ 0xf92 ;address för trisc
  18. var1 equ 0x27
  19. var2 equ 0x28
  20.  
  21. ;****************************************************************
  22. org 0x00
  23. goto init
  24. goto main
  25.  
  26. main
  27.  
  28.  
  29.  
  30. call sub_andA
  31. call wait
  32. call wait
  33. call wait
  34. call wait
  35. call sub_andB
  36. call wait
  37. call wait
  38. call wait
  39. call wait
  40.  
  41.  
  42.  
  43.  
  44. ;****************************************************************
  45. init
  46. movlw 0x0F ; lägger in värdet 0F
  47. movwf var_c ; här läggs värdet in i var_c
  48. movlw 0x00
  49. movwf portC
  50. movlw 0xf0
  51. movwf var_d
  52. movlw 0x67
  53. movwf var_a
  54. movlw 0x67
  55. movwf var_b
  56.  
  57. return
  58. ;****************************************************************
  59. sub_andA
  60. movlw 0x00
  61. movwf trisc ; här ges trisc värdet 0 på alla positioner
  62. movf var_a,w
  63. andwf var_c,w ; här läggs var_a och var_b in i en and funktion
  64. movwf RES_andA ; resultat från and porten ges till till RES_andA
  65. movf RES_andA
  66. comf RES_andA,w ; här inverteras värderna på res_andA
  67. movwf RES_andA ; här läggs filen RES_andA från wreg till F
  68. swapf RES_andA ; swap byter de fyra första siffrorna mot de sista fyra
  69. movwf portC
  70. return
  71. ;****************************************************************
  72.  
  73. sub_andB
  74.  
  75. movf var_b,w
  76. andwf var_d,w ; här läggs var_a och var_b in i en and funktion
  77. movwf RES_andB ; resultat från and porten ges till till RES_andA
  78. movf RES_andB
  79. comf RES_andB,w ; här inverteras värderna på res_andA
  80. movwf RES_andB ; här läggs filen RES_andA från wreg till F
  81. swapf RES_andB,w ; swap byter de fyra första siffrorna mot de sista fyra
  82.  
  83. movwf portC
  84. return
  85. ;****************************************************************
  86.  
  87.  
  88. wait
  89. movlw 0xff ;Lägger ff i w-registret
  90. movwf var2 ;Lägger innehållet i w-reg i fil var2
  91. loop2 movlw 0xff ;Lägger ff i w-registret
  92. movwf var1 ;Lägger innehållet i w-reg i fil var1
  93. loop1 decfsz var1,1 ;minska var1 med 1 hoppa över nästa instr om noll
  94. goto loop1 ;
  95. decfsz var2,1 ;minska var2 med 1 hoppa över nästa instr om noll
  96. goto loop2 ;
  97. return ;återgår från subrutin
  98.  
  99. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement