Professional Documents
Culture Documents
asm
;------------------------------------------------------------------; READ FROM WRITTEN/PROGRAMMED EEPROM MEMORY AND SHOW STATUS IN PORTD
; PROGRAMMAR- SYED TASWAR MAHBUB
; CLOCK- 20MHZ
;------------------------------------------------------------------PROCESSOR
INCLUDE
__CONFIG
PIC16F877A
"P16F877A.INC"
H'3F71'
0X00
INIT
;-----------------DELAY SUB-ROUTINE------------------------------------DELAY
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
LOCATION,W
EEADR
EEADR
EECON1
EECON1,7
EECON1,0
EEDATA
EEDATA,W
PORTD
;MOVING TO BANK2
;SENDING EEADR VALUE TO LOCATION GPR
;MOVING TO BANK3
;DISABLE EEPGD BIT- TO ACCESS EEPROM DATA MEMORY
;ENABLE WREN BIT
;MOVING TO BANK2
;MOVING EEDATA VALUE TO W REGISTER
;MOVING TO BANK0
;RETURN FROM READ SUB-ROUTINE
F:\latest 877a\eeprom-table001\eeprom-table_rd.asm
INIT
BANKSEL TRISD
CLRF
TRISD
BANKSEL PORTD
KHELA
CLRF
MOVLW
MOVWF
MOVLW
MOVWF
GOTO
PORTD
0X08
INDEX
0X00
LOCATION
START
;MOVING TO BANK1
;MAKING PORTD ALL BITS OUTPUT
;FALLING BACK TO BANK0
PORTD
EEPROM_READ
PORTD
DELAY
PORTD
LOCATION,F
INDEX,F
START
START_1
PORTD
DELAY
0X08
INDEX
0X07
LOCATION
START2
START2
CLRF
PORTD
CALL
EEPROM_READ
MOVWF
PORTD
;SHOWING EEADR VALUE AT 0X07 IN PORTD
CALL
DELAY
DECF
LOCATION,F
;DECREMENTING EEADR VALUE
DECFSZ INDEX,F
GOTO
START2
;REPEAT THE SEQUENCE
CLRF
PORTD
CALL
DELAY
GOTO
KHELA
;AGAIN START LIGHTING FROM THE LSB LED
;----------------------------------------------------------------------------------ORG
0X2100
DE
0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80
;---------------------------------------------------------------END
;---------------------------------------------------------------NOTE:
PIC16F877A IS HAVING 256 BYTES OF DATA EEPROM.SO,ITS MEMORY RANGE IS
FROM B'00000000' TO B'11111111' OR IN HEX 0X00 TO 0XFF.
0X2100 IS THE EEPROM RESET VECTOR.
DE MEANS THE BYTE VALUE OF EEADR, STARTING FROM 0 MEMORY LOCATION
HERE 8 BYTES ARE USED FROM EEPROM MEMORY LOCATION-0X00 TO 0X07
VALUE B'00000001'OR IN HEX 0X01 VALUE IS PLACED IN 0 EEPROM DATA MEMORY.
VLUE B'00000010'OR IN HEX 0X02 VALUE IS PLACED IN 01 EEPROM DATA MEMORY.
IN THIS WAY B'10000000'OR IN HEX 0X80 IS PLACED IN 07 EEPROM DATA MEMORY.
AFTER ASSEMBLER DIRECTIVE,END, THE ASSEMBLER WILL NOT SEE OR ASSEMBLE ANYTHING. SO,ANY IMPORTANT DATA
OR USEFUL NOTE CAN BE WITTEN DOWN FOR EASY UNDERSTANDING THE PROGRAM.