Philips P89LPC903 ユーザーズマニュアル

ページ / 114
Philips Semiconductors
User’s Manual - Preliminary -
P89LPC901/902/903
FLASH PROGRAM MEMORY
2003 Dec 8     
98
r
Figure 14-4: Assembly language routine to erase/program a flash element
Figure 14-5: C-language routine to erase/program a flash element
;* 
Inputs: 
       
 
;* 
R5 = data to write(byte) 
 
 
  * 
;* 
R7 = element address(byte) 
              * 
;* 
Outputs: 
       
 
;* 
None 
       
 
 
CONF EQU  6CH 
 
WR_ELEM:  
 
MOV FMADRL,R7  
;write 
the 
address 
 
MOV 
FMCON,#CONF  
;load CONF command 
 MOV 
FMDAT,R5 
 ;write 
the 
data 
MOV 
R7,FMCON 
 
;copy status for return  
 MOV 
A,R7 
  ;read 
status 
 
ANL 
A,#0FH 
 
;save only four lower bits 
 
JNZ 
BAD 
 
 
;see if good or bad  
 
CLR 
 
 
;clear error flag if good 
 RET 
   ;and 
return 
BAD: 
 
SETB  C 
 
 
;set error flag if bad 
 RET 
   ;and 
return 
 
unsigned char  
Fm_stat; 
 
 
// status result 
 
bit PGM_EL (unsigned char, unsigned char); 
bit prog_fail; 
 
void main () 
 

 prog_fail=PGM_EL(0x02,0x1C); 

 
bit PGM_EL (unsigned char el_addr, unsigned char el_data) 
 { 
 
 
#define CONF 
0x6C   
// access flash elements 
 
 
FMADRL 
= el_addr;   
//write element address to addr reg 
 
FMCON = CONF; 
 
//load command, clears page reg 
 
FMDATA 
= el_data;   
//write 
data and start the cycle 
 
Fm_stat = FMCON;   
 
//read the result status 
 
if ((Fm_stat & 0x0F)!=0) prog_fail=1; else prog_fail=0; 
 return(prog_fail); 
 }