⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eeprom.ls1

📁 c8051f310xmodembootloader.rar
💻 LS1
📖 第 1 页 / 共 5 页
字号:
                     440                             ; SOURCE LINE # 40
                     441     ;     uchar temp=0;
                     442                             ; SOURCE LINE # 41
                     443     ;---- Variable 'temp?041' assigned to Register 'R6' ----
0000 E4              444             CLR     A
                     445     ;       uchar i=0;
                     446                             ; SOURCE LINE # 42
                     447     ;---- Variable 'i?042' assigned to Register 'R5' ----
0001 FD              448             MOV     R5,A
                     449     ;     temp=spi_write_data;   
                     450                             ; SOURCE LINE # 43
A51 MACRO ASSEMBLER  EEPROM                                                               08/03/2009 16:57:28 PAGE     8

0002 AE07            451             MOV     R6,AR7
                     452     ; 
                     453     ;     for(i=0;i<8;i++)  //send 8 bits
                     454                             ; SOURCE LINE # 45
0004                 455     ?C0001:
                     456     ;     {
                     457                             ; SOURCE LINE # 46
                     458     ;               X_SCK=0;  
                     459                             ; SOURCE LINE # 47
0004 C280            460             CLR     X_SCK
                     461     ;     
                     462     ;           if(temp & 0x80)//MSB first          
                     463                             ; SOURCE LINE # 49
0006 EE              464             MOV     A,R6
0007 30E704          465             JNB     ACC.7,?C0004
                     466     ;                       X_SI=1;
                     467                             ; SOURCE LINE # 50
000A D286            468             SETB    X_SI
000C 8002            469             SJMP    ?C0005
000E                 470     ?C0004:
                     471     ;               else
                     472     ;                       X_SI=0;
                     473                             ; SOURCE LINE # 52
000E C286            474             CLR     X_SI
0010                 475     ?C0005:
                     476     ;                
                     477     ;               temp=temp<<1;    
                     478                             ; SOURCE LINE # 54
0010 EE              479             MOV     A,R6
0011 25E0            480             ADD     A,ACC
0013 FE              481             MOV     R6,A
                     482     ; 
                     483     ;           X_SCK=1;                            
                     484                             ; SOURCE LINE # 56
0014 D280            485             SETB    X_SCK
                     486     ;     }
                     487                             ; SOURCE LINE # 57
0016 0D              488             INC     R5
0017 ED              489             MOV     A,R5
0018 B408E9          490             CJNE    A,#08H,?C0001
                     491     ;       
                     492     ; 
                     493     ; }  
                     494                             ; SOURCE LINE # 60
001B                 495     ?C0006:
001B 22              496             RET     
                     497     ; END OF _SPI_WriteByte
                     498     
                     499     ;    
                     500     ; 
                     501     ; 
                     502     ; /*-------------------------------------------------------
                     503     ;              SPI_ReadByte()
                     504     ; 
                     505     ; Function:  Read a byte of data from the device using
                     506     ;            SPI interface. 
                     507     ; Input:     None.
                     508     ; Output:    The data(one byte) been read,as a return value.
                     509     ; NOTE:            Using SPI Mode 3/0
                     510     ; --------------------------------------------------------*/
                     511     ; uchar SPI_ReadByte(void)
                     512     
----                 513             RSEG  ?PR?SPI_ReadByte?EEPROM
0000                 514     SPI_ReadByte:
                     515             USING   0
                     516                             ; SOURCE LINE # 73
A51 MACRO ASSEMBLER  EEPROM                                                               08/03/2009 16:57:28 PAGE     9

                     517     ; {
                     518                             ; SOURCE LINE # 74
                     519     ;       uchar temp=0;
                     520                             ; SOURCE LINE # 75
                     521     ;---- Variable 'temp?143' assigned to Register 'R7' ----
0000 E4              522             CLR     A
0001 FF              523             MOV     R7,A
                     524     ;       uchar i=0;
                     525                             ; SOURCE LINE # 76
                     526     ;---- Variable 'i?144' assigned to Register 'R6' ----
0002 FE              527             MOV     R6,A
                     528     ;     bit bit_in;
                     529     ; 
                     530     ;     temp=0x00;//initialize the data output
                     531                             ; SOURCE LINE # 79
                     532     ;    
                     533     ;     for(i=0;i<8;i++) 
                     534                             ; SOURCE LINE # 81
0003                 535     ?C0007:
                     536     ;       {
                     537                             ; SOURCE LINE # 82
                     538     ;               X_SCK=1;//Data is output on the SO line by the falling edge of SCK.  
                     539                             ; SOURCE LINE # 83
0003 D280            540             SETB    X_SCK
                     541     ;               temp=temp << 1;                         
                     542                             ; SOURCE LINE # 84
0005 EF              543             MOV     A,R7
0006 25E0            544             ADD     A,ACC
0008 FF              545             MOV     R7,A
                     546     ;       X_SCK=0;
                     547                             ; SOURCE LINE # 85
0009 C280            548             CLR     X_SCK
                     549     ;       bit_in=X_SO;            
                     550                             ; SOURCE LINE # 86
000B A281            551             MOV     C,X_SO
000D 9200     F      552             MOV     bit_in?145,C
                     553     ;       if(bit_in) temp=temp | 0x01;            
                     554                             ; SOURCE LINE # 87
000F 300003   F      555             JNB     bit_in?145,?C0009
0012 4401            556             ORL     A,#01H
0014 FF              557             MOV     R7,A
                     558     ;       }
                     559                             ; SOURCE LINE # 88
0015                 560     ?C0009:
0015 0E              561             INC     R6
0016 EE              562             MOV     A,R6
0017 B408E9          563             CJNE    A,#08H,?C0007
001A                 564     ?C0008:
                     565     ;       return (temp);
                     566                             ; SOURCE LINE # 89
                     567     ; }
                     568                             ; SOURCE LINE # 90
001A                 569     ?C0011:
001A 22              570             RET     
                     571     ; END OF SPI_ReadByte
                     572     
                     573     ; 
                     574     ; 
                     575     ; 
                     576     ; /*---------------------------------------------------------
                     577     ;              AT25_GetStatusReg()
                     578     ; 
                     579     ; Function:  Read the Status Register of the AT25XXXA
                     580     ; Input:     None.
                     581     ; Output:    Content of the status register,as a return value.
                     582     ; -----------------------------------------------------------*/
A51 MACRO ASSEMBLER  EEPROM                                                               08/03/2009 16:57:28 PAGE    10

                     583     ; uchar AT25_GetStatusReg(void)
                     584     
----                 585             RSEG  ?PR?AT25_GetStatusReg?EEPROM
0000                 586     AT25_GetStatusReg:
                     587             USING   0
                     588                             ; SOURCE LINE # 101
                     589     ; {
                     590                             ; SOURCE LINE # 102
                     591     ;       uchar temp;
                     592     ;     
                     593     ;       X_CS=0;
                     594                             ; SOURCE LINE # 105
0000 C291            595             CLR     X_CS
                     596     ; 
                     597     ;       SPI_WriteByte(RDSR);
                     598                             ; SOURCE LINE # 107
0002 7F05            599             MOV     R7,#05H
0004 120000   F      600             LCALL   _SPI_WriteByte
                     601     ;       temp=SPI_ReadByte();
                     602                             ; SOURCE LINE # 108
0007 120000   F      603             LCALL   SPI_ReadByte
                     604     ;---- Variable 'temp?246' assigned to Register 'R7' ----
                     605     ; 
                     606     ;       X_CS=1; 
                     607                             ; SOURCE LINE # 110
000A D291            608             SETB    X_CS
                     609     ;       return temp;
                     610                             ; SOURCE LINE # 111
                     611     ; }
                     612                             ; SOURCE LINE # 112
000C                 613     ?C0012:
000C 22              614             RET     
                     615     ; END OF AT25_GetStatusReg
                     616     
                     617     ; 
                     618     ; 
                     619     ; /*---------------------------------------------------------
                     620     ;              AT25_IsReady()
                     621     ; 
                     622     ; Function:  Return 0 if AT25XXXA is busy and 1 if ready.
                     623     ; -----------------------------------------------------------*/
                     624     ; bit AT25_IsReady(void)
                     625     
----                 626             RSEG  ?PR?AT25_IsReady?EEPROM
0000                 627     AT25_IsReady:
                     628             USING   0
                     629                             ; SOURCE LINE # 120
                     630     ; {
                     631                             ; SOURCE LINE # 121
                     632     ;       
                     633     ;       if(0x01 & AT25_GetStatusReg()) return 0;
                     634                             ; SOURCE LINE # 123
0000 120000   F      635             LCALL   AT25_GetStatusReg
0003 EF              636             MOV     A,R7
0004 30E002          637             JNB     ACC.0,?C0013
0007 C3              638             CLR     C
0008 22              639             RET     
0009                 640     ?C0013:
                     641     ;       else return 1;
                     642                             ; SOURCE LINE # 124
0009 D3              643             SETB    C
                     644     ; }
                     645                             ; SOURCE LINE # 125
000A                 646     ?C0014:
000A 22              647             RET     
                     648     ; END OF AT25_IsReady
A51 MACRO ASSEMBLER  EEPROM                                                               08/03/2009 16:57:28 PAGE    11

                     649     
                     650     ; 
                     651     ; 
                     652     ; 
                     653     ; /*---------------------------------------------------------
                     654     ;              AT25_SetStatusReg()
                     655     ; 
                     656     ; Function:  Set the Status Register of the AT25XXXA
                     657     ; Input:     The Byte of the status register. NOTE: Only 
                     658     ;                  bit7(WPEN),bit3(BP1) and bit2(BP0) can be changed,
                     659     ;                  so this byte should in the form of: x000 xx00                
                     660     ; Output:    None. 
                     661     ; -----------------------------------------------------------*/
                     662     ; void AT25_SetStatusReg(uchar status_data)
                     663     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -