Advertisement
Guest User

Untitled

a guest
Aug 4th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pic 16 4.02 KB | None | 0 0
  1. INCLUDE     "P16F877.inc"
  2.             List P=16F877
  3. ;************************************
  4. d1              equ         0x20
  5. d2              equ         0x21
  6. d3              equ         0x22
  7. w_temp              equ         0x23
  8. status_temp         equ         0x24
  9. ASCI                equ         0x25
  10. var_a               equ         0x26
  11. var_b               equ         0x27
  12. ganger              equ         0x28
  13. EN              equ         0x01
  14. rad             equ         0x29
  15. ;************************************
  16.                 org         0x00
  17.                 clrf            STATUS
  18.                 movlw           0x00
  19.                 movwf           0x0A
  20.                 goto            init
  21. ;************************************
  22.                 org         0x04
  23.                 goto            avbrott
  24. ;************************************
  25. avbrott             movwf       w_temp
  26.                 swapf       STATUS,0
  27.                 movwf       status_temp
  28.                 ;***
  29.                 ;hämtar tecken från receive reg
  30.                 call        clear_display
  31.                 movf        RCREG,0
  32.                 movwf       ASCI
  33.                
  34.                 ;skicka tecten till LCD
  35.                 call        Visa_LCD
  36.                 ;call       waithz
  37.                
  38.  
  39.                 ;***
  40.                 swapf       status_temp,0
  41.                 movwf       STATUS
  42.                 swapf       w_temp,1
  43.                 swapf       w_temp,0
  44.                 retfie
  45. ;************************************
  46. clear_display   movlw       0x01
  47.                 movwf       rad
  48.                 andlw       0xF0
  49.                 movwf       PORTD
  50.                 call        enable
  51.                 swapf       rad,w
  52.                 andlw       0xF0
  53.                 movwf       PORTD
  54.                 call        enable
  55.                 call        waitms
  56.                 return
  57. ;************************************
  58. waitms              movlw       0x0a
  59.                 movwf       var_b
  60. loop2               movlw       0x64
  61.                 movwf       var_a
  62. loop1               decfsz      var_a,1
  63.  
  64.                 goto        loop1
  65.                 decfsz      var_b,1
  66. noll
  67.                 goto        loop2
  68.                 return
  69. ;************************************
  70. enable              bsf     PORTD,EN
  71.                 call        waitms
  72.                 bcf     PORTD,EN
  73.                 call        waitms
  74.                 return
  75. ;************************************
  76. LCDinit             movlw       0xff
  77.                 movwf       ganger
  78. loop3               call        waitms
  79.                 decfsz      ganger,1
  80.                 goto        loop3
  81. ;Första anrop
  82.                 movlw       0x30
  83.                 movwf       PORTD
  84.                 call        enable
  85. ;Vänta mer 4,1ms
  86.                 movlw       0x05
  87.                 movwf       ganger
  88. loop4               call        waitms
  89.                 decfsz      ganger,1
  90.                 goto        loop4
  91. ;andra anrop
  92.                 movlw       0x30
  93.                 movfw       PORTD
  94.                 call        enable
  95. ;Vänta mer än 0,1ms
  96.                 call        waitms
  97. ;tredje anrop
  98.                 movlw       0x30
  99.                 movwf       PORTD
  100.                 call        enable
  101.                 call        waitms
  102.                 movlw       0x20
  103.                 movwf       PORTD
  104.                 call        enable
  105.                 call        waitms
  106.                 movlw       0x20
  107.                 movwf       PORTD
  108.                 call        enable
  109.                 movlw       0x80
  110.                 movwf       PORTD
  111.                 call        enable
  112.                 call        waitms
  113.                 movlw       0x00        ;clearar displayen
  114.                 movwf       PORTD
  115.                 call        enable
  116.                 movlw       0x10
  117.                 movwf       PORTD
  118.                 call        enable
  119.                 call        waitms
  120.                 movlw       0x00
  121.                 movwf       PORTD
  122.                 call        enable
  123.                 movlw       0x60
  124.                 movwf       PORTD
  125.                 call        enable
  126.                 call        waitms
  127.                 movlw       0x00
  128.                 movwf       PORTD
  129.                 call        enable
  130.                 movlw       0xE0
  131.                 movwf       PORTD
  132.                 call        enable
  133.                 call        waitms
  134.                 return
  135. Visa_LCD            movwf       ASCI
  136.                 andlw       0xF0
  137.                 movwf       PORTD
  138.                 bsf     PORTD,0
  139.                 call        enable
  140.                 swapf       ASCI,w
  141.                 andlw       0xF0
  142.                 movwf       PORTD
  143.                 bsf     PORTD,0
  144.                 call        enable
  145.                 return
  146. init                movlw       0xFF
  147.                 movwf       PORTA
  148.                 movwf       PORTB
  149.                 clrf        PORTC
  150.                 clrf        PORTD
  151.                 bsf     STATUS,RP0
  152.                 movlw       0x00
  153.                 movwf       TRISA
  154.                 movwf       TRISB
  155.                 movwf       TRISD
  156.                 movlw       b'11000000'         ;tar bort RC7 o RC6 som digitala I/O för UART
  157.                 movwf       TRISC
  158.                 movlw       0x06
  159.                 movwf       ADCON1
  160.                 bcf     STATUS,RP0
  161.                 ;*** UART INSTÄLLNINGAR ***
  162.                 movlw       b'10010000'
  163.                 movwf       RCSTA
  164.                 bsf     STATUS,RP0
  165.                 movlw       b'00100110'
  166.                 movwf       TXSTA
  167.                 movlw       0x4D        ;77
  168.                 movwf       SPBRG
  169.                 bcf     STATUS,RP0
  170.                 ; *** AVBROTT INSTÄLLNINGAR ***
  171.                 bsf     STATUS,RP0
  172.                 movlw       b'00100000'
  173.                 movwf       PIE1
  174.                 bcf     STATUS,RP0
  175.                 movlw       b'11000000'
  176.                 movwf       INTCON
  177.                 call        LCDinit
  178.                 goto        main
  179.  
  180. waithz              movlw       0x1A        ;2999995 cycles
  181.                 movwf       d1          ;Delay = 1 second
  182.                 movlw       0x8B
  183.                 movwf       d2
  184.                 movlw       0x07
  185.                 movwf       d3
  186. Delay_0
  187.                 decfsz      d1, f
  188.                 goto        $+2
  189.                 decfsz      d2, f
  190.                 goto        $+2
  191.                 decfsz      d3, f
  192.                 goto        Delay_0
  193.  
  194.                 ;5 cycles
  195.                 goto        $+1
  196.                 goto        $+1
  197.                 nop
  198.                 return
  199.  
  200. slack               movlw       0x00
  201.                 movwf       PORTA
  202.                 movwf       PORTB
  203.                 return
  204. tand                movlw       0xFF
  205.                 movwf       PORTA
  206.                 movwf       PORTB
  207.                 return
  208.  
  209. main                call        waithz
  210.                 call        slack
  211.                 call        waithz
  212.                 call        tand
  213.                 goto        main
  214. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement