Advertisement
Guest User

Untitled

a guest
Dec 3rd, 2016
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MPASM 3.65 KB | None | 0 0
  1. #include <p12f675.inc>
  2. processor 12F675
  3. __CONFIG  0x01F4
  4. SH_CP    equ 4
  5. DS       equ 1
  6. ST_CP    equ 2
  7.  
  8. RP0  equ 5
  9. GP0  equ 0
  10. GP1  equ 1
  11. GP2  equ 2
  12. GP3  equ 3
  13. GP4  equ 4
  14. GP5  equ 5
  15. GIE  equ 7
  16. GPIE equ 3
  17. GPIF equ 0
  18. TOIE equ 5
  19. TOIF equ 2
  20.  
  21. IBTN equ 0
  22. DBTN equ 5
  23.  
  24. COUNT EQU 0X21
  25. BYTE  EQU 0X22
  26. TEMP  EQU 0X23
  27. VALUE equ 0x26
  28. DUMMY1 equ 0x27
  29. DUMMY2 equ 0x28
  30. MAX   EQU .9
  31.  
  32. BUTTON_STATUS  EQU 0x25
  33. WAS_INC        equ 0
  34. WAS_DEC        equ 1
  35. ORG 0x0000
  36.     ;GOTO START
  37.  
  38. ;ORG 0X00FF
  39. START
  40.     BCF STATUS, RP0
  41.     MOVLW 0X07
  42.     MOVWF CMCON
  43.     BSF STATUS, RP0
  44.     CALL    0x3FF       ; Load OSC. from last address
  45.     MOVWF   OSCCAL
  46.     bsf TRISIO, GP0
  47.     bcf TRISIO, GP1
  48.     bcf TRISIO, GP2
  49.     bcf TRISIO, GP4
  50.     bsf TRISIO, GP5
  51.     MOVLW 0
  52.     MOVWF ANSEL
  53.     BCF STATUS, RP0
  54.     clrf VALUE
  55.     clrf BUTTON_STATUS
  56. Loop
  57.     MOVF  VALUE,W
  58.     MOVWF BYTE   ;bsf TRISIO, GP0
  59.     call DELAY
  60.     CALL PrepareByte
  61.     CALL SendByte
  62.     call CheckInc
  63.     call CheckDec
  64.     GOTO Loop
  65. PrepareByte
  66.     MOVF BYTE,W
  67.     MOVWF TEMP
  68.     XORLW .0
  69.     BTFSS STATUS,Z
  70.     GOTO $+4
  71.     MOVLW B'00111111'
  72.     MOVWF BYTE
  73.     RETURN
  74.      
  75.     MOVF BYTE,W
  76.     MOVWF TEMP
  77.     XORLW .1
  78.     BTFSS STATUS,Z
  79.     GOTO $+4
  80.     MOVLW B'00000110'
  81.     MOVWF BYTE
  82.     RETURN
  83.      
  84.     MOVF BYTE,W
  85.     MOVWF TEMP
  86.     XORLW .2
  87.     BTFSS STATUS,Z
  88.     GOTO $+4
  89.     MOVLW B'01011011'
  90.     MOVWF BYTE
  91.     RETURN
  92.      
  93.     MOVF BYTE,W
  94.     MOVWF TEMP
  95.     XORLW .3
  96.     BTFSS STATUS,Z
  97.     GOTO $+4
  98.     MOVLW B'01001111'
  99.     MOVWF BYTE
  100.     RETURN
  101.      
  102.     MOVF BYTE,W
  103.     MOVWF TEMP
  104.     XORLW .4
  105.     BTFSS STATUS,Z
  106.     GOTO $+4
  107.     MOVLW B'01100110'
  108.     MOVWF BYTE
  109.     RETURN
  110.      
  111.     MOVF BYTE,W
  112.     MOVWF TEMP
  113.     XORLW .5
  114.     BTFSS STATUS,Z
  115.     GOTO $+4
  116.     MOVLW B'01101101'
  117.     MOVWF BYTE
  118.     RETURN
  119.  
  120.     MOVF BYTE,W
  121.     MOVWF TEMP
  122.     XORLW .6
  123.     BTFSS STATUS,Z
  124.     GOTO $+4
  125.     MOVLW B'01111101'
  126.     MOVWF BYTE
  127.     RETURN
  128.  
  129.     MOVF BYTE,W
  130.     MOVWF TEMP
  131.     XORLW .7
  132.     BTFSS STATUS,Z
  133.     GOTO $+4
  134.     MOVLW B'00000111'
  135.     MOVWF BYTE
  136.     RETURN
  137.      
  138.     MOVF BYTE,W
  139.     MOVWF TEMP
  140.     XORLW .8
  141.     BTFSS STATUS,Z
  142.     GOTO $+4
  143.     MOVLW B'01111111'
  144.     MOVWF BYTE
  145.     RETURN
  146.      
  147.     MOVF BYTE,W
  148.     MOVWF TEMP
  149.     XORLW .9
  150.     BTFSS STATUS,Z
  151.     GOTO $+4
  152.     MOVLW B'01101111'
  153.     MOVWF BYTE
  154.     RETURN
  155.  
  156. SendByte
  157.     bcf    STATUS,C
  158.     movlw  .8
  159.     movwf  COUNT
  160.      SendLoop
  161.     decf   COUNT,  F
  162.     rlf    BYTE
  163.     btfsc  STATUS, C
  164.     goto   Send1
  165.      Send0
  166.     bcf    GPIO,   DS
  167.     call   ConfirmBit
  168.     goto   CheckCount
  169.      Send1
  170.     bsf   GPIO, DS
  171.     call  ConfirmBit
  172.     goto  CheckCount
  173.      CheckCount
  174.     movf  COUNT,W
  175.     btfss STATUS,Z
  176.     goto  SendLoop
  177.     call  ConfirmSending
  178.     return
  179.     ConfirmBit
  180.     bsf GPIO, SH_CP
  181.     bcf GPIO, SH_CP
  182.     return
  183.     ConfirmSending
  184.     bsf GPIO, ST_CP
  185.     bcf GPIO, ST_CP
  186.     return
  187. CheckInc
  188.       btfsc GPIO, IBTN
  189.       goto NotInc
  190.       btfsc BUTTON_STATUS, WAS_INC
  191.       return
  192.       MOVF  VALUE,W
  193.       MOVWF TEMP
  194.       XORLW .9
  195.       btfss STATUS, Z
  196.       incf  VALUE
  197.       bsf BUTTON_STATUS, WAS_INC
  198.       return
  199.       NotInc
  200.      bcf BUTTON_STATUS, WAS_INC
  201.      return
  202. CheckDec
  203.       btfsc GPIO, DBTN
  204.       goto NotDec
  205.       btfsc BUTTON_STATUS, WAS_DEC
  206.       return
  207.       MOVF  VALUE,W
  208.       MOVWF TEMP
  209.       XORLW .0
  210.       btfss STATUS, Z
  211.       decf  VALUE
  212.       bsf BUTTON_STATUS, WAS_DEC
  213.       return
  214.       NotDec
  215.      bcf BUTTON_STATUS, WAS_DEC
  216.      return
  217.  
  218. DELAY   CLRF    DUMMY1
  219. DELAY1  CLRF    DUMMY2
  220.     DECF    DUMMY2,F
  221.         DECF    DUMMY2,F
  222.     DECF    DUMMY2,F
  223.     DECFSZ  DUMMY2,F
  224.     GOTO    $-4
  225.     DECFSZ  DUMMY1,F
  226.     GOTO    DELAY1
  227.     RETURN
  228.    
  229.     END  
  230. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement