Advertisement
Guest User

Untitled

a guest
Apr 17th, 2018
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pic 16 6.33 KB | None | 0 0
  1. ; ******* PROCESSOR DEFINITIONER **********************************************************
  2.     processor   16f877a                 ;Sets processor
  3.     #include    p16f877a.inc
  4. ;   errorlevel -302                 ;fjerner meddelser om forkerte banker fra fejl listen
  5. ;   errorlevel -305                 ;fjerner meddelser om forkerte banker fra fejl listen
  6. ; ******* COMPILER configuration bits *****************************************************
  7.     __config    _HS_OSC & _PWRTE_OFF & _WDT_OFF & _CP_OFF & _CPD_OFF & _LVP_OFF
  8. ; ******* DEFFINITION AF VARIABLE *********************************************************
  9.     #include    "SDUboard.var"      ;Variable som bruges af SDUboard 0x79 - 0x7F)
  10.                                     ;INDSÆT DINE VARIABLE HER (start med 0x20)
  11. ; ******* OPSÆTNING AF PROGRAM POINTERE ***************************************************
  12.             org     0x0000          ;Programstart efter et reset
  13.             GOTO    init            ;Gå til opsætning
  14.             org     0x0004          ;Første position efter interrupt-vektor
  15.             GOTO    ISR
  16.  
  17.  
  18.         Delay1      EQU     0x20
  19.         Delay2      EQU     0x21
  20.         Delay3      EQU     0x22
  21.         TEMP        EQU     0x23
  22.         THREE       EQU     0x24
  23.         TIME        EQU     0x25
  24.         Delay4      EQU     0x26
  25. ; ******* INCLUDEREDE FILER ***************************************************************
  26.     #Include    "SDUboard.LIB"      ; SDU PICborad subroutine bibliotek.
  27.  
  28. ; ******* INITIALISERING AF PROGRAM   *****************************************************
  29.  
  30. init       
  31.             CALL    LCD_Init           
  32.  
  33.             BCF STATUS,RP1  ; Benytter kun bank 0 og 1
  34.  
  35.             BSF STATUS,RP0              ; GÅR TIL BANK 1
  36.  
  37.             CLRF    CMCON   ;Slår komperatore fra }
  38.  
  39.             BCF OPTION_REG,INTEDG       ; Sætter interupt til falling edge
  40.  
  41. ;****************'Sætter trigger og echo lave***************      
  42.  
  43.             BCF TRISB,0 ;ECHO       ;
  44.             BCF TRISB,6 ;Trigger    ;Sætter Trigger og Echo som outputs            (ECHO BURDE VÆRE EN INDGANG)
  45.  
  46.  
  47.             BCF TRISB,1             ; Sætter udgang til LED
  48.             BSF TRISB,2             ; Sætter LDR som en indgang
  49.  
  50.             BCF STATUS,RP0              ; GÅR TIL BANK 0
  51.  
  52.             BCF PORTB,0 ;ECHO       ;
  53.             BCF PORTB,6 ;TRIGGER    ;Sætter trigger og Echo lave               (ECHO BURDE VÆRE EN INDGANG)
  54.  
  55.             BSF     T1CON,0 ;Tænder timer 1   
  56.  
  57.             MOVLW   d'3'
  58.             MOVWF   THREE   ;Flytter tallet 3 ind i Three registeret
  59. ;*****************Gør echo til input**********************'
  60.  
  61.             BSF STATUS,RP0  ; GÅR TIL BANK 1
  62.  
  63.             BSF TRISB,0 ;ECHO       ;Sætter Echo som input
  64.  
  65.             BCF STATUS,RP0  ; GÅR TIL BANK 0
  66.  
  67.             BSF INTCON,GIE  ; Tillader interrupts
  68.             BSF INTCON,PEIE ; Tillader interrupts fra peripherals
  69.             BSF INTCON,INTE ; Tillader interrupt fra RB0-pinen
  70.  
  71. ; ******* HOVEDPROGRAM ********************************************************************
  72. main       
  73.  
  74. ;**********Sæt trigger høj i 10 us******************
  75.        
  76.             CALL    PulsTen         ;Sætter trigger høj i 10 US
  77.        
  78. Infinite
  79.             BTFSS   TEMP,0          ;Test tilfældigt bit (Bit bliver sat efter interrupt)
  80.             goto    Infinite
  81.             BCF     TEMP,0          ;Fjern tilfædligt bit (Reset af test bit)
  82.             goto    main
  83. ISR
  84.            
  85.             MOVFW   TMR1H
  86.             MOVWF   TIME
  87.  
  88.             BCF     INTCON,0
  89.             BCF     INTCON,1
  90.             BCF     INTCON,2
  91.             BCF     INTCON,3        ;Clearer interrupt bits så det er muligt at gå til interrupt igen
  92.  
  93.             MOVF    TIME,w     
  94.             CALL    BIN2DEC
  95.  
  96.             MOVF    CIF100,w
  97.             CALL    CONV2ASCII
  98.             CALL    LCD_Data
  99.             MOVF    CIF10,w
  100.             CALL    CONV2ASCII
  101.             CALL    LCD_Data
  102.             MOVF    CIF1,w
  103.             CALL    CONV2ASCII
  104.             CALL    LCD_Data
  105.             MOVLW   CursLeft
  106.             CALL    LCD_Reg
  107.             MOVLW   CursLeft
  108.             CALL    LCD_Reg
  109.             MOVLW   CursLeft
  110.             CALL    LCD_Reg
  111.  
  112.             MOVLW   d'80'           ;Tal der bestemmer afstand for objekt
  113.            
  114.             SUBWF   TIME            ;Sammenligningsprocess
  115.             BTFSC   STATUS,0        ;Skipper hvis resultatet er negativt
  116.             CALL    LEDOFF          ;Slukker LED
  117.             BTFSS   STATUS,0        ;Skipper hvis resultatet er positivt
  118.             CALL    LEDON           ;Tænder LED i en bestemt mængde tid
  119.  
  120.             BSF     TEMP,0          ;Sæt et tilfældigt bit (For at undslippe det uendelige loop)
  121.  
  122.             RETFIE
  123.  
  124. ;*******Sender et 10 mikro sekunders signal********
  125. PulsTen
  126.             MOVLW   d'8'
  127.             MOVWF   Delay4
  128.             BSF     PORTB,6 ;Sætter trigger høj
  129. PulsLoop    DECFSZ  Delay4
  130.             goto    PulsLoop
  131.             BCF     PORTB,6 ;Sætter trigger lav
  132.             CLRF    TMR1L
  133.             CLRF    TMR1H
  134.             RETURN
  135.  
  136. ;*****************DELAY*******************************************************************
  137. Timeout
  138.             MOVLW   D'6'                ; Tidsforsinkelse på ca. 60 ms
  139.             MOVWF   Delay3              ;
  140. Loop12      MOVLW   D'115'              ; h'73'= 115 tælles op <=> 255-115 =140 der tælles ned
  141.             MOVWF   Delay1              ;
  142.             MOVLW   D'32'               ; h'DF'= 223 tælles op <=> 255-223 =32 der tælles ned
  143.             MOVWF   Delay2              ;
  144. Loop1       DECFSZ  Delay1,F            ;
  145.             GOTO    Loop1               ;
  146.             MOVLW   D'115'              ;
  147.             MOVWF   Delay1              ;
  148.             DECFSZ  Delay2,F            ;
  149.             GOTO    Loop1               ;
  150.             DECFSZ  Delay3,F            ;
  151.             GOTO    Loop12              ;
  152.  
  153.             RETURN
  154.  
  155. ;*****************DELAY2*******************************************************************
  156. Timeout_2
  157.             MOVLW   D'250'                ; Tidsforsinkelse på ca. 2500 ms
  158.             MOVWF   Delay3              ;
  159. Loop12_2    MOVLW   D'115'              ; h'73'= 115 tælles op <=> 255-115 =140 der tælles ned
  160.             MOVWF   Delay1              ;
  161.             MOVLW   D'32'               ; h'DF'= 223 tælles op <=> 255-223 =32 der tælles ned
  162.             MOVWF   Delay2              ;
  163. Loop1_2     DECFSZ  Delay1,F            ;
  164.             GOTO    Loop1_2             ;
  165.             MOVLW   D'115'              ;
  166.             MOVWF   Delay1              ;
  167.             DECFSZ  Delay2,F            ;
  168.             GOTO    Loop1_2             ;
  169.             DECFSZ  Delay3,F            ;
  170.             GOTO    Loop12_2            ;
  171.  
  172.             RETURN
  173. ;******************Tænd LED i 5 sekunder**************************************************
  174. LEDON
  175.             DECFSZ  THREE
  176.             RETURN
  177.             BTFSS   PORTB,2         ;Tester om LDR er aktiv
  178.             RETURN
  179.             BSF     PORTB,1         ;Tænder LED
  180.             CALL    Timeout_2
  181.             CALL    Timeout_2      
  182.             CALL    Timeout_2
  183.             CALL    Timeout_2       ;Tidsforsinkelse
  184.             RETURN
  185.  
  186. ;******************Sluk LED***************************************************************
  187. LEDOFF
  188.             BCF     PORTB,1         ;Slukker LED
  189.             MOVLW   d'3'
  190.             MOVWF   THREE           ;Flytter tallet 3 til THREE
  191.             RETURN
  192. ; ******* PROGRAM AFSLUTTET ***************************************************************    
  193.             END                     ;her slutter programmet...
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement