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

📄 nflash32.lis

📁 USB通信程序开发(附源码 精品)包括详细论文说明
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 04A2                 _flashRead::
 04A2 00D0              rcall push_gset4
 04A4                   .dbline -1
 04A4                   .dbline 348
                       ; /************************************************************
                       ; **工程名称:U盘固件程序开发
                       ; **编译器类型及版本:ICCAVR 6.26C
                       ; **日期:2004.4.30
                       ; **创建人:陈驰
                       ; **所属单位:湖南大学计算机与通信学院
                       ; 
                       ; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
                       ; **时钟频率:8MHZ
                       ; 
                       ; **函数功能:读FLASH函数
                       ; **函数输入参数及说明:无
                       ; 
                       ; **函数返回值:无
                       ; **在本函数以外定义的变量:
                       ; **调用的函数说明:无
                       ; 
                       ; **修改人:陈驰
                       ; **修改日期:2004.4.30
                       ; **修改说明:创建
                       ; *************************************************************/
                       ; void flashRead(void)
                       ; {
 04A4                   .dbline 351
                       ;     unsigned char i;
                       ;     unsigned char  temp;
                       ;     if(ReadResidueVal > 0){
 04A4 00E0              ldi R16,<L87
 04A6 10E0              ldi R17,>L87
 04A8 00D0              rcall lpm32
 04AA 50900900          lds R5,_ReadResidueVal+2+1
 04AE 40900800          lds R4,_ReadResidueVal+2
 04B2 30900700          lds R3,_ReadResidueVal+1
 04B6 20900600          lds R2,_ReadResidueVal
 04BA 2016              cp R2,R16
 04BC 3106              cpc R3,R17
 04BE 4206              cpc R4,R18
 04C0 5306              cpc R5,R19
 04C2 09F4              brne X3
 04C4 8DC0              rjmp L85
 04C6                 X3:
 04C6                   .dbline 351
 04C6                   .dbline 352
                       ;         ReadResidueVal -= 64;
 04C6 00E0              ldi R16,<L88
 04C8 10E0              ldi R17,>L88
 04CA 00D0              rcall lpm32
 04CC 50900900          lds R5,_ReadResidueVal+2+1
 04D0 40900800          lds R4,_ReadResidueVal+2
 04D4 30900700          lds R3,_ReadResidueVal+1
 04D8 20900600          lds R2,_ReadResidueVal
 04DC 201A              sub R2,R16
 04DE 310A              sbc R3,R17
 04E0 420A              sbc R4,R18
 04E2 530A              sbc R5,R19
 04E4 30920700          sts _ReadResidueVal+1,R3
 04E8 20920600          sts _ReadResidueVal,R2
 04EC 50920900          sts _ReadResidueVal+2+1,R5
 04F0 40920800          sts _ReadResidueVal+2,R4
 04F4                   .dbline 353
                       ;         temp = (unsigned char)(Flash_Read_Col + 64);
 04F4 80910B00          lds R24,_Flash_Read_Col
 04F8 9927              clr R25
 04FA 805C              subi R24,192  ; offset = 64
 04FC 9F4F              sbci R25,255
 04FE A82E              mov R10,R24
 0500                   .dbline 354
                       ;         fCOMMAND = Flash_Read_Sec;
 0500 20900A00          lds R2,_Flash_Read_Sec
 0504 209200A0          sts 40960,R2
 0508                   .dbline 355
                       ;         fADD = Flash_Read_Col;
 0508 20900B00          lds R2,_Flash_Read_Col
 050C 20920090          sts 36864,R2
 0510                   .dbline 356
                       ;         fADD = Flash_Read_addl;
 0510 20900C00          lds R2,_Flash_Read_addl
 0514 20920090          sts 36864,R2
 0518                   .dbline 357
                       ;         fADD = Flash_Read_addh;
 0518 20900D00          lds R2,_Flash_Read_addh
 051C 20920090          sts 36864,R2
 0520                   .dbline 358
                       ;         asm("nop \n nop");
 0520 0000              nop 
 0522 0000               nop
 0524                 L89:
 0524                   .dbline 359
 0524                 L90:
 0524                   .dbline 359
                       ;         while(!fRB);
 0524 849B              sbis 0x10,4
 0526 FECF              rjmp L89
 0528                   .dbline 360
                       ;         switch (Flash_Read_Sec)
 0528 C0900A00          lds R12,_Flash_Read_Sec
 052C DD24              clr R13
 052E CC20              tst R12
 0530 11F4              brne X4
 0532 DD20              tst R13
 0534 31F0              breq L95
 0536                 X4:
 0536 81E0              ldi R24,1
 0538 90E0              ldi R25,0
 053A C816              cp R12,R24
 053C D906              cpc R13,R25
 053E 81F0              breq L98
 0540 2EC0              rjmp L92
 0542                 X2:
 0542                   .dbline 361
                       ;         {
 0542                 L95:
 0542                   .dbline 363
                       ;             case 0x00:
                       ;                 if(temp == 0)
 0542 AA20              tst R10
 0544 39F4              brne L96
 0546                   .dbline 364
                       ;                 {
 0546                   .dbline 365
                       ;                     Flash_Read_Sec = 0x01;
 0546 81E0              ldi R24,1
 0548 80930A00          sts _Flash_Read_Sec,R24
 054C                   .dbline 366
                       ;                     Flash_Read_Col = 0x00;
 054C 2224              clr R2
 054E 20920B00          sts _Flash_Read_Col,R2
 0552                   .dbline 367
                       ;                 }else
 0552 25C0              rjmp L93
 0554                 L96:
 0554                   .dbline 368
                       ;                 {
 0554                   .dbline 369
                       ;                     Flash_Read_Col += 64;
 0554 80910B00          lds R24,_Flash_Read_Col
 0558 805C              subi R24,192    ; addi 64
 055A 80930B00          sts _Flash_Read_Col,R24
 055E                   .dbline 370
                       ;                 }
 055E                   .dbline 371
                       ;                 break;
 055E 1FC0              rjmp L93
 0560                 L98:
 0560                   .dbline 373
                       ;             case 0x01:
                       ;                 if(temp == 0)
 0560 AA20              tst R10
 0562 C1F4              brne L99
 0564                   .dbline 374
                       ;                 {
 0564                   .dbline 375
                       ;                     if(Flash_Read_addl == 255){
 0564 80910C00          lds R24,_Flash_Read_addl
 0568 8F3F              cpi R24,255
 056A 49F4              brne L101
 056C                   .dbline 375
 056C                   .dbline 376
                       ;                         Flash_Read_addl = 0x00;
 056C 2224              clr R2
 056E 20920C00          sts _Flash_Read_addl,R2
 0572                   .dbline 377
                       ;                         Flash_Read_addh ++;
 0572 80910D00          lds R24,_Flash_Read_addh
 0576 8F5F              subi R24,255    ; addi 1
 0578 80930D00          sts _Flash_Read_addh,R24
 057C                   .dbline 378
                       ;                     }else
 057C 05C0              rjmp L102
 057E                 L101:
 057E                   .dbline 379
                       ;                         Flash_Read_addl ++;
 057E 80910C00          lds R24,_Flash_Read_addl
 0582 8F5F              subi R24,255    ; addi 1
 0584 80930C00          sts _Flash_Read_addl,R24
 0588                 L102:
 0588                   .dbline 380
                       ;                     Flash_Read_Sec = 0x00;
 0588 2224              clr R2
 058A 20920A00          sts _Flash_Read_Sec,R2
 058E                   .dbline 381
                       ;                     Flash_Read_Col = 0x00;
 058E 20920B00          sts _Flash_Read_Col,R2
 0592                   .dbline 382
                       ;                 }else
 0592 05C0              rjmp L93
 0594                 L99:
 0594                   .dbline 383
                       ;                 {
 0594                   .dbline 384
                       ;                     Flash_Read_Col += 64;
 0594 80910B00          lds R24,_Flash_Read_Col
 0598 805C              subi R24,192    ; addi 64
 059A 80930B00          sts _Flash_Read_Col,R24
 059E                   .dbline 385
                       ;                 }
 059E                   .dbline 386
                       ;                 break;
 059E                 L92:
 059E                 L93:
 059E                   .dbline 389
                       ;         }
                       ;         
                       ;         D12_COMMAND = 0x05;//选择端点(指针指向0位置)
 059E 85E0              ldi R24,5
 05A0 8093017C          sts 31745,R24
 05A4                   .dbline 390
                       ;         cwait;
 05A4 0000              nop
 05A6                   .dbline 391
                       ;         D12_COMMAND = 0xf0;//写缓冲区
 05A6 80EF              ldi R24,240
 05A8 8093017C          sts 31745,R24
 05AC                   .dbline 392
                       ;         cwait;
 05AC 0000              nop
 05AE                   .dbline 400
                       ;         /****************************
                       ;           缓冲区数据结构:
                       ;           字节1:保留,可为任意值
                       ;           字节2:数据字节的数目/长度
                       ;           字节3:数据字节1
                       ;           字节4:数据字节2
                       ;         *****************************/
                       ;         D12_DATA = 0x00;//字节1
 05AE 2224              clr R2
 05B0 2092007C          sts 31744,R2
 05B4                   .dbline 401
                       ;         cwait;
 05B4 0000              nop
 05B6                   .dbline 402
                       ;         D12_DATA = 64;//字节2
 05B6 80E4              ldi R24,64
 05B8 8093007C          sts 31744,R24
 05BC                   .dbline 403
                       ;         csram;
 05BC 609301FC          sts 0xfc01,R22
 05C0                   .dbline 403
 05C0                   .dbline 404
                       ;         for(i=0;i<64;i++)
 05C0 AA24              clr R10
 05C2 06C0              rjmp L106
 05C4                 L103:
 05C4                   .dbline 405
 05C4                   .dbline 406
 05C4 20900080          lds R2,32768
 05C8 2092007C          sts 31744,R2
 05CC                   .dbline 407
 05CC 0000              nop
 05CE                   .dbline 408
 05CE                 L104:
 05CE                   .dbline 404
 05CE A394              inc R10
 05D0                 L106:
 05D0                   .dbline 404
 05D0 8A2D              mov R24,R10
 05D2 8034              cpi R24,64
 05D4 B8F3              brlo L103
 05D6                   .dbline 409
 05D6 8AEF              ldi R24,250
 05D8 8093017C          sts 31745,R24
 05DC                   .dbline 410
 05DC 609301FC          sts 0xfc01,R22
 05E0                   .dbline 410
 05E0                   .dbline 411
 05E0                 L85:
 05E0                   .dbline -2
 05E0                   .dbline 412
                       ;         {
                       ;             D12_DATA = fDATA;//写数据
                       ;             cwait;
                       ;         }
                       ;         D12_COMMAND = 0xfa;//设置缓冲区有效(满标志)
                       ;         csram;
                       ;     }
                       ; }
 05E0                 L84:
 05E0 00D0              rcall pop_gset4
 05E2                   .dbline 0 ; func end
 05E2 0895              ret
 05E4                   .dbsym r temp 10 c
 05E4                   .dbsym r i 10 c
                         .area lit(rom, con, rel)
 0000                 L88:
 0000 40000000          .word 64,0
 0004                 L87:
 0004 00000000          .word 0,0
                         .area data(ram, con, rel)
 000E                   .dbfile G:\source\NFlash32.c
 000E                 L8:
 000E                   .blkb 18
                         .area idata
 000E 25782C25782065726173652069732025   .byte 37,'x,44,37,'x,32,'e,'r,'a,'s,'e,32,'i,'s,32,37
 001E 7800              .byte 'x,0
                         .area data(ram, con, rel)
 0020                   .dbfile G:\source\NFlash32.c

⌨️ 快捷键说明

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