Sei sulla pagina 1di 3

F:\latest 877a\eeprom-table002\eeprom_tab02.

asm
;-----------------------------------------------------------------; READ FROM EEPROM TABLE AND SHOW STATUS IN PORTB AND PORTD
; PROGRAMMAR- SYED TASWAR MAHBUB
; CLOCK- 20MHZ
;------------------------------------------------------------------PROCESSOR
INCLUDE
__CONFIG

PIC16F877A
"P16F877A.INC"
H'3F71'

TITLE : "EEPROM TABLE READ AND SHOW IT IN PORTB AND PORTD"


;--------------------------------------------------------------------;POSITION OF THE FOLLOWING GPRS IN MEMORY MAP ARE MENTIONED IN INCLUDE
;FILE CITED ABOBE AND HENCE NOT REQUIRED TO MENTION HERE. BUT GIVEN
;HERE TO SHOW THE POSITIONS IN DIFFERENT DATA BANKS FOR NEW PROGRAMMARS.
;---------------------------------------------------------------------STATUS
EQU
0X03
PORTB
EQU
0X06
PORTD
EQU
0X08
INTCON
EQU
0X0B
TRISB
EQU
0X86
;IN BANK1, SO BANK CHANGING REQUIRED
TRISD
EQU
0X88
;IN BANK1, SO BANK CHANGING REQUIRED
EEDATA
EQU
0X10C ;IN BANK2, SO BANK CHANGING REQUIRED
EEADR
EQU
0X10D ;IN BANK2, SO BANK CHANGING REQUIRED
EECON1
EQU
0X18C ;IN BANK3, SO BANK CHANGING REQUIRED
EECON2
EQU
0X18D ;IN BANK3, SO BANK CHANGING REQUIRED
;----------------------------------------------------------------------CBLOCK
0X20
D1,D2,D3,INDEX,LOCATION
ENDC
ORG
GOTO

0X00
INIT

;-----------------------------------------------------------------------DELAY
;500 MILLISEC DELAY
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF

0X16
D1
0X74
D2
0X06
D3

DECFSZ
GOTO
DECFSZ
GOTO
DECFSZ
GOTO
RETLW

D1,F
$+2
D2,F
$+2
D3,F
DELAY_0
0X00

DELAY_0

;--------- MAIN PROGRAM STARTS HERE ------------------------------------------

READ_EE
MOVF
BANKSEL
MOVWF
BANKSEL
BCF
BSF
BANKSEL
MOVF
BANKSEL
RETURN

LOCATION,W
EEADR
EEADR
EECON1
EECON1,7
EECON1,0
EEDATA
EEDATA,W
PORTD

;MOVING THE VALUE OF LOCATION INTO W.


;BANK CHANGED TO BANK 2
;MOVE VALUE OF LOCATION INTO EEADR REG.
;BANK CHANGED TO BANK3.
;ACCESSING DATA MEMORY.
;SETTING THE READ CONTROL BIT
;BANK CHANGED TO BANK 2
;VALUE OF EEDATA SEND TO W REG.
;FALL BACK TO BANK0
;RETURN TO WHERE IT WAS CALLED FROM.
1

F:\latest 877a\eeprom-table002\eeprom_tab02.asm
;-----------MAIN PROGRAM STARTS HERE -------------------------------------------INIT
BANKSEL
CLRF
CLRF
BANKSEL

TRISD
TRISB
TRISD
PORTD

;BANK CHANGED TO BANK 1


; MAKING PORTB PINS OUTPUT.
; MAKING PORTD PINS OUTPUT.
;FALL BACK TO BANK 0.

CLRF
CLRF
MOVLW
MOVWF
MOVLW
MOVWF
GOTO

PORTB
PORTD
0X08
INDEX
0X00
LOCATION
KHELA

;CLEARING THE PORTB REGISTER.


;CLEARING THE PORTD REGISTER.
;MOVING THE BINARY VALUE B'00001000' INTO W.
;MOVING THE VALUE OF W INTO GPR INDEX.
;CLEARING W.
;MOVING THE VALUE OF W INTO GPR LOCATION.
;MOVE TO KHELA.

CLRF
CALL
MOVWF
CALL
CLRF
INCF
DECFSZ
GOTO

PORTB
READ_EE
PORTB
DELAY
PORTB
LOCATION,F
INDEX,F
KHELA

;CLEARING THE VALUE OF PORTB.


;CALLING READ_EE. INITIATES A READ CYCLE.
;MOVE THE VALUE OF W INTO PORTB REGISTER.
;CALLING THE DELAY SUBROUTINE.
;CLEARING THE VALUE OF PORTB.
;INCREASING THE VALUE OF LOCATION BY 1
;DECREASING THE VALUE OF INDEX TILL INDEX VALUE IS 0X00.
;GOTO KHELA.

NOP
MOVLW
MOVWF
MOVLW
MOVWF
GOTO

0X08
INDEX
0X00
LOCATION
NEW_KHELA

;PC DOES NOTHING.WASTE OF 1 CYCLE.


;MOVE THE BINARY VALUE B'00001000' INTO W.
;MOVE THE VALUE OF W INTO INDEX.
;CLEARING THE W REGISTER.
;MOVING VALUE OF W INTO LOCAION REGISTER.
;MOVE TO NEW_KHELA.

CLRF
CALL
MOVWF
CALL
INCF
DECFSZ
GOTO
CLRF
CALL

PORTD
READ_EE
PORTD
DELAY
LOCATION,F
INDEX,F
NEW_KHELA
PORTD
DELAY

NOP
MOVLW
MOVWF
MOVLW
MOVWF
GOTO

0X08
INDEX
0X07
LOCATION
KHELA_KHELA

START

KHELA

NEW_KHELA
;CLEARING THE VALUE OF PORTD.
;CALLING READ_EE. INITIATES A READ CYCLE.
;MOVING THE VALUE OF W INTO PORTD.
;CALLING THE DELAY SUBROUTINE.
;INCREASING THE VALUE OF LOCATION BY 1
;MOVE TO NEW_KHELA.
;CLEARING PORTD VALUE.
;CALLING DELAY SUBROUTINE.
;PC DOES NOTHING.
;MOVE THE BINARY VALUE B'00001000' INTO W.
;MOVE THE VALUE OF W INTO INDEX.
;MOVING THE BINARY VALUE B'00000100' INTO W.
;MOVING THE VALUE OF W INTO LOCATION.
;MOVE TO KHELA_KHELA.

KHELA_KHELA
CLRF
CALL
MOVWF
CALL
DECF
DECFSZ
GOTO
CLRF

PORTD
READ_EE
PORTD
DELAY
LOCATION,F
INDEX,F
KHELA_KHELA
PORTD

;CLEARING THE VALUE OF PORTD.


;CALLING READ_EE. INITIATES A READ CYCLE.
;MOVING THE VALUE OF W INTO PORTD.
;CALLING THE DELAY SUBROUTINE.
;DECREASING THE VALUE OF LOCATION BY 1

NOP
MOVLW
MOVWF
MOVLW
MOVWF
GOTO

0X08
INDEX
0X07
LOCATION
LAST_KHELA

;PC DOES NOTHING.


;MOVE THE BINARY VALUE B'00001000' INTO W.
;MOVE THE VALUE OF W INTO INDEX.
;MOVING THE BINARY VALUE B'00000100' INTO W.
;MOVING THE VALUE OF W INTO LOCATION.
;MOVE TO LAST_KHELA.

CLRF

PORTB

;CLEARING THE VALUE OF PORTB.

;MOVE TO KHELA_KHELA.
;CLEARING THE VALUE OF PORTD.

LAST_KHELA
2

F:\latest 877a\eeprom-table002\eeprom_tab02.asm
CALL
MOVWF
CALL
DECF
DECFSZ
GOTO
NOP
CLRF
CALL
GOTO

READ_EE
PORTB
DELAY
LOCATION,F
INDEX,F
LAST_KHELA
PORTB
DELAY
START

;CALLING READ_EE. INITIATES A READ CYCLE.


;MOVING THE VALUE OF W INTO PORTB.
;CALLING THE DELAY SUBROUTINE.
;DECREASING THE VALUE OF LOCATION BY 1
;MOVE TO LAST_KHELA.
;PC DOES NOTHING.
;CLEARING THE VALUE OF PORTB.
;CALLING THE DELAY SUBROUTINE.
;MOVE TO START.

;---------------------------------------------------------------------------------ORG
0X2100
;EEPROM RESET VECTOR.
DE

0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80

;--------------------------------------------------------------------------------END
;PROGRAM ENDS.
;---------------------------------------------------------------------------------

Potrebbero piacerti anche