Vous êtes sur la page 1sur 3

F:\latest 877a\eeprom-table003\eeprom_tab3.

asm
;-----------------------------------------------------------------; READ FROM EEPROM TABLE AND SHOW STATUS IN PORTB,PORTC 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,PORTC 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
PORTC
EQU
0X07
PORTD
EQU
0X08
INTCON
EQU
0X0B
TRISB
EQU
0X86
;IN BANK1, SO BANK CHANGING REQUIRED
TRISC
EQU
0X87
;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

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

;GPR LOCATION VALUE SEND TO W


;MOVE TO BANK2
;W VALUE PUT INTO EEADR
;MOVE TO BANK 3
;DATA MEMORY ACCESSED
;EEPROM READ INITIATED
;FALL TO BANK 2
;EEDATA VALUE PUT INTO W
;FALL BACK TO BANK 0
1

F:\latest 877a\eeprom-table003\eeprom_tab3.asm
;RETURN TO WHERE CALLED FROM

RETURN
;-----------

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

INIT
BANKSEL
CLRF
CLRF
CLRF
BANKSEL

TRISD
TRISB
TRISC
TRISD
PORTD

;MOVE TO BANK
;PORTB SET AS
;PORTC SET AS
;PORTD SET AS
;FALL BACK TO

1.
OUTPUT.
OUTPUT.
OUTPUT.
BANK 0.

CLRF
CLRF
CLRF
MOVLW
MOVWF
MOVLW
MOVWF
GOTO

PORTB
PORTC
PORTD
0X08
INDEX
0X00
LOCATION
KHELA

;PORTB CLEARED.
;PORTC CLEARED.
;PORTD CLEARED.
;B'00001000' MOVED TO W.
;W VALUE SEND TO INDEX.
;W CLEARED.
;W VALUE MOVED INTO LOCATION.
;MOVE TO KHELA.

CLRF
CALL
MOVWF
CALL
CLRF
INCF
DECFSZ
GOTO

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

NOP
MOVLW
MOVWF
MOVLW
MOVWF
GOTO

0X08
INDEX
0X00
LOCATION
KHELA_TWO

START

KHELA
;READ ROUTINE CALLED.
;W VALUE MOVED TO PORTB.
;DELAY SUBROUTINE CALLED.
;LOCATION VALUE INCREASED BY 1.
;INDEX VALUE DECREASED TILL INDEX VALUE 0.

;PC DOES NOTHING. WASTE OF 1 CYCLE.

;MOVE TO KHELA_TWO.

KHELA_TWO
CLRF
CALL
MOVWF
CALL
CLRF
INCF
DECFSZ
GOTO
NOP
MOVLW
MOVWF
MOVLW
MOVWF
GOTO

PORTC
READ_EE
PORTC
DELAY
PORTC
LOCATION,F
INDEX,F
KHELA_TWO

CLRF
CALL
MOVWF
CALL
CLRF
INCF
DECFSZ
GOTO
CLRF
CALL

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

NOP
MOVLW
MOVWF
MOVLW
MOVWF
GOTO

0X08
INDEX
0X07
LOCATION
KHELA_KHELA

0X08
INDEX
0X00
LOCATION
NEW_KHELA

;W VALUE MOVED TO PORTC.

;MOVE TO NEW_KHELA.

NEW_KHELA

;W VALUE MOVED TO PORTD.

;B'00000111' VALUE SEND TO W.


;MOVE TO KHELA_KHELA
2

F:\latest 877a\eeprom-table003\eeprom_tab3.asm

KHELA_KHELA
CLRF
CALL
MOVWF
CALL
CLRF
DECF
DECFSZ
GOTO
CLRF

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

NOP
MOVLW
MOVWF
MOVLW
MOVWF
GOTO

0X08
INDEX
0X07
LOCATION
KHELA_THREE

;LOCATION VALUE DECREASED BY 1.

;MOVE TO KHELA_THREE.

KHELA_THREE
CLRF
CALL
MOVWF
CALL
CLRF
DECF
DECFSZ
GOTO

PORTC
READ_EE
PORTC
DELAY
PORTC
LOCATION,F
INDEX,F
KHELA_THREE

NOP
MOVLW
MOVWF
MOVLW
MOVWF
GOTO

0X08
INDEX
0X07
LOCATION
LAST_KHELA

;MOVE TO LAST_KHELA.

LAST_KHELA
CLRF
CALL
MOVWF
CALL
CLRF
DECF
DECFSZ
GOTO
NOP
CLRF
CALL
GOTO

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

;MOVE TO START.

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

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

;---------------------------------------------------------------END
;PROGRAM FINISHED.
;----------------------------------------------------------------

Vous aimerez peut-être aussi