Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <p12f675.inc>
- processor 12F675
- __CONFIG 0x01F4
- RP0 EQU 5
- GP0 EQU 0
- GP1 EQU 1
- GP2 EQU 2
- GP3 EQU 3
- GP4 EQU 4
- GP5 EQU 5
- GPIE EQU 3
- GIE EQU 7
- GPIF EQU 0
- SH_CP equ 4
- DS equ 1
- ST_CP equ 2
- VALUE EQU 0x29
- THIS_ADDRESS EQU .2
- TMP EQU 0x27
- BYTE EQU 0X20
- TX_COUNT EQU 0X21
- TBYTE EQU 0X22
- DUMMY1 EQU 0X23
- RX_COUNT EQU 0X24
- RBYTE EQU 0X25
- SCOUNT equ 0x30
- DUMMY2 EQU 0X26
- COUNT EQU 0X29
- BUTTON_STATUS EQU 0x28
- ORG 0X00
- GOTO START
- ORG 0X04
- BTFSC INTCON,GPIF
- GOTO INTER_0
- RETFIE
- ORG 0X40
- START
- BCF STATUS, RP0
- BSF GPIO,GP0
- BSF INTCON,GPIE
- BSF INTCON,GIE
- MOVLW 0X07
- MOVWF CMCON
- BSF STATUS, RP0
- CALL 0x3FF ; Load OSC. from last address
- MOVWF OSCCAL
- BSF TRISIO, GP0
- BCF TRISIO, GP1
- BCF TRISIO, GP2
- BCF TRISIO, GP4
- BSF TRISIO, GP5
- CLRF IOCB
- BSF IOCB, GP5
- MOVLW 0
- MOVWF ANSEL
- MOVWF RBYTE
- MOVWF TBYTE
- MOVLW .0
- MOVWF VALUE
- BCF STATUS, RP0
- Loop
- call Delay
- call CheckSend
- GOTO Loop
- IncValue
- incf VALUE
- return
- TRANSMIT
- MOVLW .8
- MOVWF TX_COUNT
- ;MOVF RBYTE,W
- call IncValue
- call PrepareToTransmit
- BCF GPIO,GP1
- NEXT_TX
- CALL DELAY
- BTFSS TBYTE,0
- GOTO ZERO
- BSF GPIO,GP1
- GOTO ONE
- ZERO
- bcf GPIO,GP1
- ONE
- RRF TBYTE,F
- DECFSZ TX_COUNT,F
- GOTO NEXT_TX
- CALL DELAY
- BSF GPIO,GP1
- CALL DELAY
- CLRF TBYTE
- DELAY
- MOVLW .8
- MOVWF SCOUNT
- NEXT
- NOP
- NOP
- DECFSZ SCOUNT,1
- GOTO NEXT
- RETURN
- INTER_0
- BTFSS GPIO,GP5
- CALL RECIEVE
- RET_FI
- BCF INTCON,GPIF
- RETFIE
- RECIEVE
- NOP
- NOP
- NOP
- MOVLW .8
- MOVWF RX_COUNT
- NEXT_RX
- CALL DELAY
- BCF STATUS,0
- RRF RBYTE,F
- BTFSC GPIO,GP5
- BSF RBYTE,7
- DECFSZ RX_COUNT,F
- GOTO NEXT_RX
- CALL DELAY
- movf RBYTE, W
- movwf BYTE
- call SendByte
- RETURN
- PrepareToTransmit
- MOVF VALUE, W
- MOVWF TBYTE
- return
- SendByte
- bcf STATUS,C
- movlw .8
- movwf COUNT
- SendLoop
- decf COUNT, F
- rlf BYTE
- btfsc STATUS, C
- goto Send1
- Send0
- bcf GPIO, DS
- call ConfirmBit
- goto CheckCount
- Send1
- bsf GPIO, DS
- call ConfirmBit
- goto CheckCount
- CheckCount
- movf COUNT,W
- btfss STATUS,Z
- goto SendLoop
- call ConfirmSending
- return
- ConfirmBit
- bsf GPIO, SH_CP
- bcf GPIO, SH_CP
- return
- ConfirmSending
- bsf GPIO, ST_CP
- bcf GPIO, ST_CP
- return
- CheckSend
- btfsc GPIO, GP0
- goto NotSend
- btfsc BUTTON_STATUS, 0
- return
- call TRANSMIT
- bsf BUTTON_STATUS, 0
- return
- NotSend
- bcf BUTTON_STATUS, 0
- return
- Delay CLRF DUMMY1
- Delay1 CLRF DUMMY2
- DECF DUMMY2,F
- DECF DUMMY2,F
- DECF DUMMY2,F
- DECFSZ DUMMY2,F
- GOTO $-4
- DECFSZ DUMMY1,F
- GOTO Delay1
- RETURN
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement