📄 nflash32.lis
字号:
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 + -