Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;****************************************************************
- ;Skriven av :niklas abefelt 26/01/2014
- ;Filnamn :lab1
- ;Programmets syfte :addera två tal
- ;Processor :18f458
- ;****************************************************************
- list p=18f458 ;processorangivelse för kompilatorn
- ;********************** Variabeltilldelningar ************************
- portC equ 0xf82 ;Adress för port C
- var_a equ 0x20 ;RAM-adress för Var1
- var_b equ 0x21 ;RAM-adress för Var2
- var_c equ 0x22 ; RAM-adress för var C
- var_d equ 0x23
- RES_andA equ 0x25; adress för res_andA
- RES_andB equ 0x26 ; adress för res_andB
- trisc equ 0xf92 ;address för trisc
- var1 equ 0x27
- var2 equ 0x28
- ;****************************************************************
- org 0x00
- goto init
- goto main
- main
- call sub_andA
- call wait
- call wait
- call wait
- call wait
- call sub_andB
- call wait
- call wait
- call wait
- call wait
- ;****************************************************************
- init
- movlw 0x0F ; lägger in värdet 0F
- movwf var_c ; här läggs värdet in i var_c
- movlw 0x00
- movwf portC
- movlw 0xf0
- movwf var_d
- movlw 0x67
- movwf var_a
- movlw 0x67
- movwf var_b
- return
- ;****************************************************************
- sub_andA
- movlw 0x00
- movwf trisc ; här ges trisc värdet 0 på alla positioner
- movf var_a,w
- andwf var_c,w ; här läggs var_a och var_b in i en and funktion
- movwf RES_andA ; resultat från and porten ges till till RES_andA
- movf RES_andA
- comf RES_andA,w ; här inverteras värderna på res_andA
- movwf RES_andA ; här läggs filen RES_andA från wreg till F
- swapf RES_andA ; swap byter de fyra första siffrorna mot de sista fyra
- movwf portC
- return
- ;****************************************************************
- sub_andB
- movf var_b,w
- andwf var_d,w ; här läggs var_a och var_b in i en and funktion
- movwf RES_andB ; resultat från and porten ges till till RES_andA
- movf RES_andB
- comf RES_andB,w ; här inverteras värderna på res_andA
- movwf RES_andB ; här läggs filen RES_andA från wreg till F
- swapf RES_andB,w ; swap byter de fyra första siffrorna mot de sista fyra
- movwf portC
- return
- ;****************************************************************
- wait
- movlw 0xff ;Lägger ff i w-registret
- movwf var2 ;Lägger innehållet i w-reg i fil var2
- loop2 movlw 0xff ;Lägger ff i w-registret
- movwf var1 ;Lägger innehållet i w-reg i fil var1
- loop1 decfsz var1,1 ;minska var1 med 1 hoppa över nästa instr om noll
- goto loop1 ;
- decfsz var2,1 ;minska var2 med 1 hoppa över nästa instr om noll
- goto loop2 ;
- return ;återgår från subrutin
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement