Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <P16F84a.INC>
- #include <MACROS.asm>
- __config _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
- ORG 0
- GOTO INIT
- LOOPCOUNT1 EQU 0x20
- COUNT EQU 0x21
- DATAREG EQU 0x22
- STATUSREG EQU 0x23
- CURRENT_READING_BIT EQU 0x24
- INIT
- ;========PORT INITIALIZATION========
- CLRF PORTB ;Clear PORT B
- CLRF PORTA ;Clear PORT A
- BSF STATUS, RP0 ;Vælg Bank 1
- MOVLW b'00000000' ;Sæt alle ben i PORTB til output
- MOVWF TRISB
- MOVLW b'00000001' ;Sæt ben 0 i PORTA til input, resten til output
- MOVWF TRISA
- BCF STATUS, RP0 ; Vælg bank 0 igen
- ;===================================
- CLRF COUNT
- CLRF PORTB
- CLRF DATAREG
- CLRF CURRENT_READING_BIT
- CLRF STATUSREG
- LOOP
- BCF PORTA, 1
- BCF PORTA, 2
- BCF PORTA, 3
- MOVF STATUSREG, W
- select
- case 0
- BSF PORTA, 1
- CALL CHECK_FOR_START_BIT
- endcase
- case 1
- BSF PORTA, 2
- CALL FULL_DELAY
- CALL HALF_DELAY
- INCF STATUSREG
- endcase
- case 2
- BSF PORTA, 3
- CALL READ_DATA
- CALL FULL_DELAY
- endcase
- endselect
- MOVF DATAREG, W
- MOVWF PORTB
- GOTO LOOP
- CHECK_FOR_START_BIT
- poll PORTA, b'00000001', b'00000001' ;bit 3 1-based index
- BSF STATUSREG, 0
- endpoll
- RETURN
- READ_DATA
- MOVF CURRENT_READING_BIT, W
- select
- case 0
- poll PORTA, b'00000001', b'00000001'
- BSF DATAREG, 0
- endpoll
- INCF CURRENT_READING_BIT
- endcase
- case 1
- poll PORTA, b'00000001', b'00000001'
- BSF DATAREG, 1
- endpoll
- INCF CURRENT_READING_BIT
- endcase
- case 2
- poll PORTA, b'00000001', b'00000001'
- BSF DATAREG, 2
- endpoll
- INCF CURRENT_READING_BIT
- endcase
- case 3
- poll PORTA, b'00000001', b'00000001'
- BSF DATAREG, 3
- endpoll
- INCF CURRENT_READING_BIT
- endcase
- case 4
- poll PORTA, b'00000001', b'00000001'
- BSF DATAREG, 4
- endpoll
- INCF CURRENT_READING_BIT
- endcase
- case 5
- poll PORTA, b'00000001', b'00000001'
- BSF DATAREG, 5
- endpoll
- ;INCF CURRENT_READING_BIT
- CLRF CURRENT_READING_BIT
- ;update PORTB with dataREGISTER
- MOVF DATAREG, W
- MOVWF PORTB
- CLRF DATAREG
- CLRF STATUSREG
- endcase
- ;case 6
- ; poll PORTA, b'00000001', b'00000001'
- ; BSF PORTB, 6
- ; endpoll
- ; INCF CURRENT_READING_BIT
- ;endcase
- ;case 7
- ; poll PORTA, b'00000001', b'00000001'
- ; BSF PORTB, 7
- ; endpoll
- ; INCF CURRENT_READING_BIT
- ;endcase
- endselect
- RETURN
- FULL_DELAY
- for COUNT, 0, b'11111110'
- NOP
- next COUNT
- RETURN
- HALF_DELAY
- for COUNT, 0, b'01111111'
- NOP
- next COUNT
- RETURN
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement