Advertisement
Guest User

Untitled

a guest
Dec 10th, 2016
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MPASM 3.48 KB | None | 0 0
  1. #include <p12f675.inc>
  2. processor 12F675
  3. __CONFIG  0x01F4
  4.  
  5. RP0 EQU 5
  6. GP0 EQU 0
  7. GP1 EQU 1
  8. GP2 EQU 2
  9. GP3 EQU 3
  10. GP4 EQU 4
  11. GP5 EQU 5
  12. GPIE EQU 3
  13. GIE EQU 7
  14. GPIF EQU 0
  15. SH_CP    equ 4
  16. DS       equ 1
  17. ST_CP    equ 2
  18.  
  19. VALUE EQU 0x29
  20. THIS_ADDRESS EQU .2
  21. TMP  EQU 0x27
  22. BYTE EQU 0X20
  23. TX_COUNT EQU 0X21
  24. TBYTE EQU 0X22
  25. DUMMY1 EQU 0X23
  26. RX_COUNT EQU 0X24
  27. RBYTE EQU 0X25
  28. SCOUNT equ 0x30
  29. DUMMY2 EQU 0X26
  30. COUNT EQU 0X29
  31. BUTTON_STATUS  EQU 0x28
  32.  
  33. ORG 0X00
  34.         GOTO START
  35. ORG 0X04
  36.         BTFSC INTCON,GPIF
  37.         GOTO INTER_0
  38.         RETFIE
  39.      
  40. ORG 0X40
  41. START
  42.         BCF STATUS, RP0
  43.         BSF GPIO,GP0
  44.         BSF INTCON,GPIE
  45.         BSF INTCON,GIE
  46.         MOVLW 0X07
  47.         MOVWF CMCON
  48.         BSF STATUS, RP0
  49.         CALL 0x3FF      ; Load OSC. from last address
  50.             MOVWF OSCCAL
  51.         BSF TRISIO, GP0
  52.         BCF TRISIO, GP1
  53.         BCF TRISIO, GP2
  54.         BCF TRISIO, GP4
  55.         BSF TRISIO, GP5
  56.         CLRF IOCB
  57.         BSF IOCB, GP5
  58.         MOVLW 0
  59.         MOVWF ANSEL
  60.         MOVWF RBYTE
  61.         MOVWF TBYTE
  62.         MOVLW .0
  63.         MOVWF VALUE
  64.         BCF STATUS, RP0
  65. Loop
  66.         call Delay
  67.         call CheckSend
  68.         GOTO Loop
  69. IncValue
  70.       incf VALUE
  71.       return
  72.  
  73. TRANSMIT
  74.             MOVLW  .8
  75.             MOVWF  TX_COUNT
  76.         ;MOVF  RBYTE,W
  77.         call IncValue
  78.         call PrepareToTransmit
  79.         BCF GPIO,GP1          
  80. NEXT_TX    
  81.         CALL   DELAY
  82.             BTFSS  TBYTE,0          
  83.             GOTO   ZERO            
  84.             BSF    GPIO,GP1        
  85.             GOTO   ONE
  86. ZERO      
  87.         bcf    GPIO,GP1        
  88. ONE        
  89.         RRF    TBYTE,F          
  90.             DECFSZ TX_COUNT,F      
  91.             GOTO   NEXT_TX          
  92.             CALL   DELAY            
  93.             BSF    GPIO,GP1          
  94.             CALL   DELAY          
  95.             CLRF   TBYTE            
  96.        
  97. DELAY      
  98.         MOVLW .8
  99.             MOVWF SCOUNT
  100. NEXT      
  101.         NOP
  102.         NOP
  103.             DECFSZ SCOUNT,1
  104.             GOTO NEXT
  105.             RETURN
  106. INTER_0
  107.        
  108.      
  109.         BTFSS GPIO,GP5
  110.         CALL RECIEVE
  111. RET_FI
  112.         BCF INTCON,GPIF
  113.         RETFIE
  114.        
  115. RECIEVE  
  116.         NOP
  117.         NOP
  118.         NOP
  119.         MOVLW .8
  120.         MOVWF RX_COUNT
  121. NEXT_RX    
  122.         CALL  DELAY            
  123.             BCF   STATUS,0          
  124.             RRF   RBYTE,F          
  125.             BTFSC GPIO,GP5          
  126.             BSF   RBYTE,7          
  127.             DECFSZ RX_COUNT,F      
  128.             GOTO  NEXT_RX          
  129.             CALL  DELAY
  130.         movf RBYTE, W
  131.         movwf BYTE
  132.         call SendByte
  133.             RETURN
  134.  
  135.  
  136. PrepareToTransmit
  137.       MOVF VALUE, W
  138.       MOVWF TBYTE
  139.       return
  140.  
  141. SendByte
  142.     bcf    STATUS,C
  143.     movlw  .8
  144.     movwf  COUNT
  145.      SendLoop
  146.     decf   COUNT,  F
  147.     rlf    BYTE
  148.     btfsc  STATUS, C
  149.     goto   Send1
  150.      Send0
  151.     bcf    GPIO,   DS
  152.     call   ConfirmBit
  153.     goto   CheckCount
  154.      Send1
  155.     bsf   GPIO, DS
  156.     call  ConfirmBit
  157.     goto  CheckCount
  158.      CheckCount
  159.     movf  COUNT,W
  160.     btfss STATUS,Z
  161.     goto  SendLoop
  162.     call  ConfirmSending
  163.     return
  164.     ConfirmBit
  165.     bsf GPIO, SH_CP
  166.     bcf GPIO, SH_CP
  167.     return
  168.     ConfirmSending
  169.     bsf GPIO, ST_CP
  170.     bcf GPIO, ST_CP
  171.     return
  172.  
  173. CheckSend
  174.       btfsc GPIO, GP0
  175.       goto NotSend
  176.       btfsc BUTTON_STATUS, 0
  177.       return
  178.       call TRANSMIT
  179.       bsf BUTTON_STATUS, 0
  180.       return
  181.       NotSend
  182.      bcf BUTTON_STATUS, 0
  183.      return
  184.      
  185. Delay   CLRF    DUMMY1
  186. Delay1  CLRF    DUMMY2
  187.     DECF    DUMMY2,F
  188.         DECF    DUMMY2,F
  189.     DECF    DUMMY2,F
  190.     DECFSZ  DUMMY2,F
  191.     GOTO    $-4
  192.     DECFSZ  DUMMY1,F
  193.     GOTO    Delay1
  194.     RETURN
  195. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement