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

📄 upsd3400_usb_app.ls1

📁 uPSD34xx Disk driver
💻 LS1
📖 第 1 页 / 共 5 页
字号:
                     603     ;    {
                     604                             ; SOURCE LINE # 175
                     605     ;     poll = ((unsigned char volatile xdata *) 0x8000)[0x0000];
                     606                             ; SOURCE LINE # 176
0024 908000          607             MOV     DPTR,#08000H
0027 E0              608             MOVX    A,@DPTR
0028 FD              609             MOV     R5,A
                     610     ;---- Variable 'poll?243' assigned to Register 'R5' ----
                     611     ;                                              // read flash status from any address
                     612     ;                                          // within the defined flash address space
                     613     ;     error = poll & NVM_ERROR;                // save timeout error bit at DQ5
                     614                             ; SOURCE LINE # 179
0029 5420            615             ANL     A,#020H
002B FC              616             MOV     R4,A
                     617     ;---- Variable 'error?241' assigned to Register 'R4' ----
                     618     ;     poll = poll & NVM_DATA_POLL;             // look at D7
                     619                             ; SOURCE LINE # 180
002C CD              620             XCH     A,R5
002D 5480            621             ANL     A,#080H
002F CD              622             XCH     A,R5
                     623     ;     if (poll == NVM_DATA_POLL)               // compare DQ7
                     624                             ; SOURCE LINE # 181
0030 BD8004          625             CJNE    R5,#080H,?C0007
                     626     ;      {
                     627                             ; SOURCE LINE # 182
                     628     ;       done = TRUE;             // bulk erase OK, indicate successful exit criteria
                     629                             ; SOURCE LINE # 183
0033 7F01            630             MOV     R7,#01H
                     631     ;      }
                     632                             ; SOURCE LINE # 184
0035 8005            633             SJMP    ?C0004
0037                 634     ?C0007:
                     635     ;     else if (error == NVM_ERROR)             // check for timeout error
                     636                             ; SOURCE LINE # 185
0037 BC2002          637             CJNE    R4,#020H,?C0004
                     638     ;      {
                     639                             ; SOURCE LINE # 186
                     640     ;       err = TRUE;                            // indicate timeout error occurred
                     641                             ; SOURCE LINE # 187
003A 7E01            642             MOV     R6,#01H
                     643     ;      }
                     644                             ; SOURCE LINE # 188
                     645     ; 
                     646     ;    }
                     647                             ; SOURCE LINE # 190
003C                 648     ?C0004:
                     649     ;   while((done == FALSE) && (err == FALSE));
                     650                             ; SOURCE LINE # 191
003C EF              651             MOV     A,R7
A51 MACRO ASSEMBLER  UPSD3400_USB_APP                                                     09/13/2005 18:00:20 PAGE    11

003D 7003            652             JNZ     ?C0005
003F EE              653             MOV     A,R6
0040 60E2            654             JZ      ?C0006
0042                 655     ?C0005:
                     656     ; 
                     657     ; 
                     658     ;   if (err == TRUE)                  // make sure timeout error and dat poll didn't
                     659                             ; SOURCE LINE # 194
0042 BE0118          660             CJNE    R6,#01H,?C0011
                     661     ;                                              // occur simultaneously
                     662     ;    {
                     663                             ; SOURCE LINE # 196
                     664     ;     poll = ((unsigned char volatile xdata *) 0x8000)[0x000];
                     665                             ; SOURCE LINE # 197
0045 908000          666             MOV     DPTR,#08000H
0048 E0              667             MOVX    A,@DPTR
0049 FD              668             MOV     R5,A
                     669     ;                                              // Read flash status again
                     670     ;     poll = poll & NVM_DATA_POLL;           // get DQ7 of poll byte read from flash
                     671                             ; SOURCE LINE # 199
004A CD              672             XCH     A,R5
004B 5480            673             ANL     A,#080H
004D CD              674             XCH     A,R5
                     675     ;     if (poll == NVM_DATA_POLL)               // compare DQ7
                     676                             ; SOURCE LINE # 200
004E BD8006          677             CJNE    R5,#080H,?C0012
                     678     ;      {
                     679                             ; SOURCE LINE # 201
                     680     ;       done = TRUE;                           // the flash erased OK at the same
                     681                             ; SOURCE LINE # 202
0051 7F01            682             MOV     R7,#01H
                     683     ;                    // time timout error occured, indicate successful exit criteria
                     684     ;       err  = FALSE;
                     685                             ; SOURCE LINE # 204
0053 E4              686             CLR     A
0054 FE              687             MOV     R6,A
                     688     ;      }
                     689                             ; SOURCE LINE # 205
0055 8006            690             SJMP    ?C0011
0057                 691     ?C0012:
                     692     ;     else
                     693     ;      {
                     694                             ; SOURCE LINE # 207
                     695     ;       ((unsigned char volatile xdata *) 0x8000)[0x0555] = 0xF0;
                     696                             ; SOURCE LINE # 208
0057 908555          697             MOV     DPTR,#08555H
005A 74F0            698             MOV     A,#0F0H
005C F0              699             MOVX    @DPTR,A
                     700     ;                                 // reset the flash array (short reset instruction)
                     701     ;      }
                     702                             ; SOURCE LINE # 210
                     703     ;    }
                     704                             ; SOURCE LINE # 211
005D                 705     ?C0011:
                     706     ; 
                     707     ;   return err;
                     708                             ; SOURCE LINE # 213
005D CF              709             XCH     A,R7
005E EE              710             MOV     A,R6
005F CF              711             XCH     A,R7
                     712     ;  }
                     713                             ; SOURCE LINE # 214
0060                 714     ?C0014:
0060 22              715             RET     
                     716     ; END OF EraseMainFlashSector
                     717     
A51 MACRO ASSEMBLER  UPSD3400_USB_APP                                                     09/13/2005 18:00:20 PAGE    12

                     718     ; 
                     719     ; 
                     720     ; 
                     721     ; 
                     722     ; 
                     723     ; 
                     724     ; 
                     725     ; BOOL WriteToMainFlash(unsigned int addr,unsigned char wdat)
                     726     
----                 727             RSEG  ?PR?_WriteToMainFlash?UPSD3400_USB_APP
0000                 728     L?0127:
                     729             USING   0
0000 900000   F      730             MOV     DPTR,#UPSD_xreg+0E0H
0003 F0              731             MOVX    @DPTR,A
0004 AD00     F      732             MOV     R5,j?451
0006                 733     L?0128:
0006 AF00     F      734             MOV     R7,i?453+01H
0008 AE00     F      735             MOV     R6,i?453
000A                 736     _WriteToMainFlash:
                     737             USING   0
                     738                             ; SOURCE LINE # 222
                     739     ;---- Variable 'addr?344' assigned to Register 'R6/R7' ----
                     740     ;---- Variable 'wdat?345' assigned to Register 'R5' ----
                     741     ; /******************************************************************************
                     742     ;  Function   : BOOL WriteToMainFlash()
                     743     ;  Parameters : (unsigned int addr,unsigned char wbyte)
                     744     ;  Description: Writes 1 byte to Main Flash
                     745     ;  ******************************************************************************/
                     746     ;  {
                     747                             ; SOURCE LINE # 228
                     748     ;   data unsigned char err,error,done;
                     749     ;   data unsigned char poll,dat;
                     750     ; 
                     751     ;   err = FALSE;
                     752                             ; SOURCE LINE # 232
                     753     ;---- Variable 'err?346' assigned to Register 'R4' ----
000A E4              754             CLR     A
000B FC              755             MOV     R4,A
                     756     ; 
                     757     ;   if ( ((unsigned char volatile xdata *) 0)[addr] != wdat)
                     758                             ; SOURCE LINE # 234
000C 8F82            759             MOV     DPL,R7
000E 8E83            760             MOV     DPH,R6
0010 E0              761             MOVX    A,@DPTR
0011 6D              762             XRL     A,R5
0012 6057            763             JZ      ?C0015
                     764     ;    {
                     765                             ; SOURCE LINE # 235
                     766     ;     done = FALSE;
                     767                             ; SOURCE LINE # 236
                     768     ;---- Variable 'done?348' assigned to Register 'R1' ----
0014 E4              769             CLR     A
0015 F9              770             MOV     R1,A
                     771     ;     ((unsigned char volatile xdata *) 0)[0x8555] = 0xAA;
                     772                             ; SOURCE LINE # 237
0016 908555          773             MOV     DPTR,#08555H
0019 74AA            774             MOV     A,#0AAH
001B F0              775             MOVX    @DPTR,A
                     776     ;                                  // unlock main flash, write 0xAA to addess 0xX555
                     777     ;     ((unsigned char volatile xdata *) 0)[0x8AAA] = 0x55;
                     778                             ; SOURCE LINE # 239
001C 908AAA          779             MOV     DPTR,#08AAAH
001F 7455            780             MOV     A,#055H
0021 F0              781             MOVX    @DPTR,A
                     782     ;                                  // unlock main flash, write 0x55 to addess 0xXAAA
                     783     ;     ((unsigned char volatile xdata *) 0)[0x8555] = 0xA0;
A51 MACRO ASSEMBLER  UPSD3400_USB_APP                                                     09/13/2005 18:00:20 PAGE    13

                     784                             ; SOURCE LINE # 241
0022 908555          785             MOV     DPTR,#08555H
0025 74A0            786             MOV     A,#0A0H
0027 F0              787             MOVX    @DPTR,A
                     788     ;                                              // write 0xA0 command to program
                     789     ;     ((unsigned char volatile xdata *) 0)[addr] = wdat;
                     790                             ; SOURCE LINE # 243
0028 8F82            791             MOV     DPL,R7
002A 8E83            792             MOV     DPH,R6
002C ED              793             MOV     A,R5
002D F0              794             MOVX    @DPTR,A
                     795     ;                                              // write byte to flash
                     796     ;     dat = wdat & NVM_DATA_POLL;              // get bit DQ7 of the original dat
                     797                             ; SOURCE LINE # 245
002E 5480            798             ANL     A,#080H
0030 FD              799             MOV     R5,A
                     800     ;---- Variable 'dat?350' assigned to Register 'R5' ----
0031                 801     ?C0018:
                     802     ; 
                     803     ;     do                    // now use dat polling method to verify successful write
                     804     ;      {
                     805                             ; SOURCE LINE # 248
                     806     ;       poll = ((unsigned char volatile xdata *) 0)[addr];

⌨️ 快捷键说明

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