Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
language
Task-1
Write a code to Increment a counter with a switch on port B1 and show output on port D.
(The port D data is saved in internal EEPROM location 01 and read whenever the device is
switched on)
Code:
LIST P=16F877A
ORG 0
GOTO START
__CONFIG H'3F72'
;CONFIGURATION SECTION
START
BANKSEL TRISD
MOVLW B'00000000'
MOVWF TRISD
MOVLW B'00000011'
MOVWF TRISB
BANKSEL PORTD
CLRF PORTB
CLRF PORTD
BEGIN
CLRF COUNT
CALL EE_RD
MOVWF PORTD
MOVWF COUNT
X BTFSS PORTB,1
GOTO X
INCF COUNT
CALL EE_WR
MOVF COUNT,0
MOVWF PORTD
Y BTFSC PORTB,1
GOTO Y
GOTO X
EE_RD
BANKSEL EEADR
MOVLW .1
MOVWF EEADR
BANKSEL EECON1
BCF EECON1,07
BSF EECON1,0 ;Read enable
BANKSEL EEDAT
MOVF EEDAT,W
BANKSEL PORTD
RETURN
EE_WR
BANKSEL EEADR
MOVLW .1
MOVWF EEADR
BANKSEL COUNT
MOVF COUNT,0
BANKSEL EEDAT
MOVWF EEDAT
BANKSEL EECON1
BCF EECON1,7
BSF EECON1,2 ;Write enable
BANKSEL EECON2
MOVLW 0X55
MOVWF EECON2
MOVLW 0XAA
MOVWF EECON2
BANKSEL EECON1
BSF EECON1,01
WAIT
BTFSC EECON1,01
GOTO WAIT
BCF EECON1,2 ;Disable writing further
BANKSEL PORTD
RETURN
END
Task-2
Modify and implement the code in task_1 to add a control SW2 such that the counter/port D may
be reset to zero when desired.
Code:
PORTB EQU 6
PORTD EQU 8
TRISB EQU 86H
TRISD EQU 88H
INTCON EQU 0BH
EEDAT EQU 10CH
EEADR EQU 10DH
EECON1 EQU 18CH
EECON2 EQU 18DH
EEPGD EQU 07
WR EQU 01
WREN EQU 02
COUNT EQU 20H
LIST P=16F877A
ORG 0
GOTO START
ORG 0x04
GOTO ISR
__CONFIG H'3F72'
ISR
CLRF COUNT
CALL WRITE
MOVF COUNT,W
MOVWF PORTD
BCF INTCON,1
RETFIE
START
BANKSEL TRISB
movlw B'10010000'
movwf INTCON
movlw B'11111111'
movwf TRISB
movlw B'00000000'
movwf TRISD
BANKSEL PORTB
CLRF PORTB
CLRF PORTD
BEGIN
CLRF COUNT
CALL READ
MOVWF PORTD
MOVWF COUNT
X BTFSS PORTB,1
GOTO X
INCF COUNT
CALL WRITE
MOVF COUNT,W
MOVWF PORTD
Y BTFSC PORTB,1
GOTO Y
GOTO X
READ
BANKSEL EEADR
MOVLW .01
MOVWF EEADR
BANKSEL EECON1
BCF EECON1,7
BSF EECON1,0
BANKSEL EEDAT
MOVF EEDAT,W
BANKSEL PORTD
RETURN
WRITE
BANKSEL EEADR
MOVLW .01
MOVWF EEADR
BANKSEL COUNT
BTFSC PORTB,0
CLRF COUNT
MOVF COUNT,0
MOVF COUNT,W
BANKSEL EEDAT
MOVWF EEDAT
BANKSEL EECON1
BCF EECON1,7
BSF EECON1,2
BANKSEL EECON2
MOVLW 0X55
MOVWF EECON2
MOVLW 0XAA
MOVWF EECON2
BSF EECON1,01
WAIT
BTFSC EECON1,01
GOTO WAIT
BCF EECON1,2
BANKSEL PORTD
RETURN
END