📄 ch375ev0.lis
字号:
040C ; col+=16;
040C ; }
040C ; }*/
040C ; mBufferPoint++;
040C ; mLength--;
040C ; }
040C ; /* do { //对于C51,这个DO+WHILE结构比上面的WHILE效率高,速度快
040C ; CH375_WR_DAT_PORT( DATA_BUFFER[mLength] );
040C ; mBufferPoint++;
040C ; } while ( --mLength );*/
040C ; CH375_WR_CMD_PORT( CMD_DISK_WR_GO ); /* 继续执行USB存储器的写操作 */
040C 07E5 ldi R16,87
040E 1ADE xcall _CH375_WR_CMD_PORT
0410 .dbline 331
0410 ; }
0410 .dbline 332
0410 ; else break; /* 返回错误状态 */
0410 L92:
0410 .dbline 333
0410 L88:
0410 .dbline 305
0410 6150 subi R22,1
0412 7040 sbci R23,0
0414 L90:
0414 .dbline 305
0414 6030 cpi R22,0
0416 6707 cpc R22,R23
0418 01F7 brne L87
041A X9:
041A L89:
041A .dbline 334
041A ; }
041A ; if ( mBlockCount == 0 ) {
041A 6030 cpi R22,0
041C 6707 cpc R22,R23
041E 31F4 brne L96
0420 X10:
0420 .dbline 334
0420 .dbline 335
0420 ; mIntStatus = mWaitInterrupt( ); /* 等待中断并获取状态 */
0420 4DDE xcall _mWaitInterrupt
0422 402F mov R20,R16
0424 .dbline 336
0424 ; if ( mIntStatus == USB_INT_SUCCESS ) return( 0 ); /* 操作成功 */
0424 0431 cpi R16,20
0426 11F4 brne L98
0428 .dbline 336
0428 0027 clr R16
042A 02C0 xjmp L86
042C L98:
042C .dbline 337
042C ; }
042C L96:
042C .dbline 339
042C ; // if ( mIntStatus == USB_INT_DISCONNECT ) return( mIntStatus ); /* U盘断开 */
042C ; mClearError( ); /* 清除U盘错误以便重试 */
042C F9DE xcall _mClearError
042E .dbline 340
042E ; return( mIntStatus ); /* 操作失败 */
042E 042F mov R16,R20
0430 .dbline -2
0430 L86:
0430 0E940000 xcall pop_gset4
0434 2496 adiw R28,4
0436 .dbline 0 ; func end
0436 0895 ret
0438 .dbsym r col 22 i
0438 .dbsym r j 22 i
0438 .dbsym r mBlockCount 22 i
0438 .dbsym r mIntStatus 20 c
0438 .dbsym r mBufferPoint 10 pc
0438 .dbsym r mLength 12 c
0438 .dbsym l iSectorCount 12 c
0438 .dbsym l iLbaStart 8 l
0438 .dbend
0438 .dbfunc e mInitSTDIO _mInitSTDIO fV
.even
0438 _mInitSTDIO::
0438 .dbline -1
0438 .dbline 356
0438 ; }
0438 ;
0438 ; struct _HD_MBR_DPT {
0438 ; unsigned char PartState;
0438 ; unsigned char StartHead;
0438 ; unsigned int StartSec;
0438 ; unsigned char PartType;
0438 ; unsigned char EndHead;
0438 ; unsigned int EndSec;
0438 ; unsigned long StartSector;
0438 ; unsigned long TotalSector;
0438 ; };
0438 ;
0438 ; /* 为printf和getkey输入输出初始化串口 */
0438 ; void mInitSTDIO( )
0438 ; {
0438 .dbline 364
0438 ; /* SCON = 0x50;
0438 ; PCON = 0x80;
0438 ; TMOD = 0x20;
0438 ; TH1 = 0xf3; // 24MHz晶振, 9600bps//
0438 ; TR1 = 1;
0438 ; TI = 1;*/
0438 ;
0438 ; UCSR1B = 0x00; //disable while setting baud rate
0438 2224 clr R2
043A 20929A00 sts 154,R2
043E .dbline 365
043E ; UCSR1A = 0x00;
043E 20929B00 sts 155,R2
0442 .dbline 366
0442 ; UCSR1C = 0x06;
0442 86E0 ldi R24,6
0444 80939D00 sts 157,R24
0448 .dbline 367
0448 ; UBRR1L = 0x67; //set baud rate lo
0448 87E6 ldi R24,103
044A 80939900 sts 153,R24
044E .dbline 368
044E ; UBRR1H = 0x00; //set baud rate hi
044E 20929800 sts 152,R2
0452 .dbline 369
0452 ; UCSR1B = 0x1C; //1c
0452 8CE1 ldi R24,28
0454 80939A00 sts 154,R24
0458 .dbline -2
0458 L100:
0458 .dbline 0 ; func end
0458 0895 ret
045A .dbend
045A .dbfunc e main _main fI
045A ; c -> R10
045A ; i -> R12,R13
045A ; mIntStatus -> R14
.even
045A _main::
045A 2297 sbiw R28,2
045C .dbline -1
045C .dbline 373
045C ;
045C ; }
045C ;
045C ; main() {
045C .dbline 375
045C ; unsigned char c, mIntStatus;
045C ; unsigned int i=0;
045C CC24 clr R12
045E DD24 clr R13
0460 .dbline 377
0460 ; //-------------------------------------------------------
0460 ; init_devices();
0460 0E940000 xcall _init_devices
0464 .dbline 379
0464 ; //-----------------------------------------------------------------------------
0464 ; CH375_PORT_INIT(); //首先将串口初始化为9600 因为CH375默认的波特率是9600
0464 E2D0 xcall _CH375_PORT_INIT
0466 .dbline 380
0466 ; SET_BAUDRATE(); //设置CH375的串口通讯波特率 57600
0466 F2D0 xcall _SET_BAUDRATE
0468 .dbline 381
0468 ; CH375_PORT_INIT_57600();//重新调整波特率 单片机串口波特率57600
0468 CFD0 xcall _CH375_PORT_INIT_57600
046A .dbline 383
046A ; //-----------------------------------------------------------------------------
046A ; initLCDM(); //初始化LCD
046A 0E940000 xcall _initLCDM
046E .dbline 384
046E ; CleanScreen();
046E 0E940000 xcall _CleanScreen
0472 .dbline 389
0472 ; //Welcome_interface(); //显示欢迎界面
0472 ;
0472 ; //-------------------------------------------------------
0472 ;
0472 ; LED_OUT_ACT( ); /* 开机后LED亮一下以示工作 */
0472 .dbline 389
0472 80916500 lds R24,101
0476 8F7E andi R24,239
0478 80936500 sts 101,R24
047C .dbline 389
047C .dbline 389
047C .dbline 390
047C ; mDelaymS( 100 ); /* 延时100毫秒 */
047C 04E6 ldi R16,100
047E CFDD xcall _mDelaymS
0480 .dbline 391
0480 ; LED_OUT_INACT( );
0480 .dbline 391
0480 80916500 lds R24,101
0484 8061 ori R24,16
0486 80936500 sts 101,R24
048A .dbline 391
048A .dbline 391
048A .dbline 394
048A ; //mInitSTDIO( );
048A ; // printf( "Start\n" );
048A ; ShowText(10,5,"开始");
048A 80E0 ldi R24,<L102
048C 90E0 ldi R25,>L102
048E 9983 std y+1,R25
0490 8883 std y+0,R24
0492 25E0 ldi R18,5
0494 30E0 ldi R19,0
0496 0AE0 ldi R16,10
0498 10E0 ldi R17,0
049A 0E940000 xcall _ShowText
049E .dbline 395
049E ; c = mCH375Init( ); /* 初始化CH375 */
049E 23DE xcall _mCH375Init
04A0 A02E mov R10,R16
04A2 .dbline 413
04A2 ; //if ( c );// printf( "Error @CH375Init\n" );
04A2 ; /* {
04A2 ; ShowText(10,21,"初始化错误!");
04A2 ; while ( 1 )
04A2 ; {
04A2 ; LED_OUT_ACT( ); //LED闪烁
04A2 ; mDelaymS( 80 );
04A2 ; LED_OUT_INACT( );
04A2 ; mDelaymS( 80 );
04A2 ; }
04A2 ; } */
04A2 ; //printf( "Insert USB disk\n" );
04A2 ;
04A2 ;
04A2 ;
04A2 ;
04A2 ;
04A2 ; ShowText(10,21,"等待插入U盘......");
04A2 80E0 ldi R24,<L103
04A4 90E0 ldi R25,>L103
04A6 9983 std y+1,R25
04A8 8883 std y+0,R24
04AA 25E1 ldi R18,21
04AC 30E0 ldi R19,0
04AE 0AE0 ldi R16,10
04B0 10E0 ldi R17,0
04B2 0E940000 xcall _ShowText
04B6 L104:
04B6 .dbline 414
04B6 ; do { /* 等待U盘连接 */
04B6 .dbline 415
04B6 ; mIntStatus = mWaitInterrupt( ); /* 等待中断并获取状态 */
04B6 02DE xcall _mWaitInterrupt
04B8 E02E mov R14,R16
04BA .dbline 416
04BA L105:
04BA .dbline 416
04BA ; } while ( mIntStatus != USB_INT_CONNECT ); /* U盘没有连接或者已经拔出 */
04BA 8E2D mov R24,R14
04BC 8531 cpi R24,21
04BE D9F7 brne L104
04C0 .dbline 417
04C0 ; mDelaymS( 200 ); /* 延时等待U盘进入正常工作状态 */
04C0 08EC ldi R16,200
04C2 ADDD xcall _mDelaymS
04C4 .dbline 419
04C4 ; //printf( "InitDisk\n" );
04C4 ; ShowText(10,37,"已插入U盘......");
04C4 80E0 ldi R24,<L107
04C6 90E0 ldi R25,>L107
04C8 9983 std y+1,R25
04CA 8883 std y+0,R24
04CC 25E2 ldi R18,37
04CE 30E0 ldi R19,0
04D0 0AE0 ldi R16,10
04D2 10E0 ldi R17,0
04D4 0E940000 xcall _ShowText
04D8 L108:
04D8 .dbline 421
04D8 ; loop:
04D8 ; c = mInitDisk( ); /* 初始化U盘,实际是识别U盘的类型,不影响U盘中的数据,在所有读写操作之前必须进行此步骤 */
04D8 39DE xcall _mInitDisk
04DA A02E mov R10,R16
04DC .dbline 422
04DC ; if ( c )// printf( "Error @InitDisk, %02X\n", c );
04DC 0023 tst R16
04DE D1F0 breq L109
04E0 .dbline 423
04E0 ; {
04E0 .dbline 424
04E0 ; ShowText(10,53,"初始化U盘错误");
04E0 80E0 ldi R24,<L111
04E2 90E0 ldi R25,>L111
04E4 9983 std y+1,R25
04E6 8883 std y+0,R24
04E8 25E3 ldi R18,53
04EA 30E0 ldi R19,0
04EC 0AE0 ldi R16,10
04EE 10E0 ldi R17,0
04F0 0E940000 xcall _ShowText
04F4 0EC0 xjmp L113
04F6 L112:
04F6 .dbline 426
04F6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -