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

📄 udisk.lis

📁 AVR单片机平台Atmega32+CH375A芯片读写U盘代码
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0076           L48:
 0076           L47:
 0076                   .dbline -2
 0076           L42:
 0076                   .dbline 0 ; func end
 0076 0895              ret
 0078                   .dbend
 0078                   .dbfunc e xFileNameEnumer _xFileNameEnumer fV
                        .even
 0078           _xFileNameEnumer::
 0078                   .dbline -1
 0078                   .dbline 764
 0078           ;                       {
 0078           ;                               RETURN_SUCCESS;
 0078           ;                               nComBuff.AckData.VeryData.ModifyFileAttrVer.FileAttr = mCmdParam.Modify.mFileAttr;
 0078           ;                               nComBuff.AckData.VeryData.ModifyFileAttrVer.FileDate = mCmdParam.Modify.mFileDate;
 0078           ;                               nComBuff.AckData.VeryData.ModifyFileAttrVer.FileSize = mCmdParam.Modify.mFileSize;
 0078           ;                               nComBuff.AckData.VeryData.ModifyFileAttrVer.FileTime = mCmdParam.Modify.mFileTime;
 0078           ;                               nComBuff.AckData.FrameLen = FILE_ATTRI_BYTES+3;
 0078           ;                       }
 0078           ;                       B_status = S_OPEN;
 0078           ;                       break;
 0078           ;               default:
 0078           ;                       ReturnErrorCode(A_OPEN);
 0078           ;                       break;
 0078           ;       }
 0078           ; 
 0078           ; }
 0078           ; 
 0078           ; /************************************************************************
 0078           ; /接收到数据帧时的处理函数
 0078           ; *************************************************************************/        
 0078           ; void RecieveFrameProcess( void )
 0078           ; {
 0078           ;       if(nComBuff.AckData.Ack == R_RESET)
 0078           ;         return;
 0078           ;     switch( B_status)
 0078           ;       {
 0078           ;               case S_NOTREADY:            // 如果是未准备好状态
 0078           ;                       nComBuff.AckData.Ack = A_NOTREADY;
 0078           ;                       I2C_SEND_READY;               //发送已经准备好
 0078           ;                       nComBuff.AckData.FrameLen = 3;
 0078           ;             break;
 0078           ;               case S_READY:              //如果是准备好但未读写状态
 0078           ;                       StatusReady();
 0078           ;                       break;
 0078           ; 
 0078           ;               case S_OPEN:                                  //有文件打开的情况下
 0078           ;                       StatusOpen();
 0078           ;                       break;
 0078           ; 
 0078           ;               default:
 0078           ;                       break;
 0078           ;       
 0078           ;       }
 0078           ; 
 0078                   .dbline -2
 0078           L50:
 0078                   .dbline 0 ; func end
 0078 0895              ret
 007A                   .dbend
 007A                   .dbfunc e xWriteToExtBuf _xWriteToExtBuf fV
 007A           ;        mLength -> R16
                        .even
 007A           _xWriteToExtBuf::
 007A                   .dbline -1
 007A                   .dbline 827
 007A           ; }
 007A           ; 
 007A           ; /******************************************************************************
 007A           ; /全局变量的初始化
 007A           ; ******************************************************************************/
 007A           ; void variable(void)
 007A           ; {
 007A           ;     B_status=S_NOTREADY;
 007A           ;     SlaveSendLength = &nComBuff.ReqData.FrameLen;
 007A           ;     I2cReceiveData = (uchar*) &nComBuff;
 007A           ;     I2cSendData = (uchar*) &nComBuff;
 007A           ;     UartRx = temp;
 007A           ;     nComBuff.AckData.Ack = A_NOTREADY;
 007A           ;     nComBuff.AckData.FrameLen = 3;
 007A           ; }
 007A           ; //ICC-AVR application builder : 2007-7-15 10:41:34
 007A           ; // Target : M32
 007A           ; // Crystal: 8.0000Mhz
 007A           ; 
 007A           ; void port_init(void)
 007A           ; {
 007A           ;  PORTA = 0x00;
 007A           ;  DDRA  = 0x00;
 007A           ;  PORTB = 0xFF;
 007A           ;  DDRB  = 0x03;
 007A           ;  PORTC = 0xFF; 
 007A           ;  DDRC  = 0xC0;
 007A           ;  PORTD = 0xFF;
 007A           ;  DDRD  = 0xF1;
 007A           ; }
 007A           ; 
 007A           ; //Watchdog initialize
 007A           ; // prescale: 512K
 007A           ; void watchdog_init(void)
 007A           ; {
 007A           ;  WDR(); //this prevents a timout on enabling
 007A           ;  WDTCR = 0x0D; //WATCHDOG ENABLED - dont forget to issue WDRs
 007A           ; }
 007A           ; 
 007A           ; //TIMER0 initialize - prescale:1024
 007A           ; // desired value: 20mSec
 007A           ; // actual value: 19.952mSec (0.2%)
 007A           ; void timer0_init(void)
 007A           ; {
 007A           ;  TCCR0 = 0x00; //stop
 007A           ;  TCNT0 = 0x64; //set count
 007A           ;  OCR0  = 0xEA;  //set compare
 007A           ;  TCCR0 = 0x05; //start timer
 007A           ; }
 007A           ; 
 007A           ; #pragma interrupt_handler timer0_ovf_isr:12
 007A           ; void timer0_ovf_isr(void)
 007A           ; {
 007A           ;  TCNT0 = 0x64; //reload counter value
 007A           ;  WDR();
 007A           ;  if(ys20ms)
 007A           ;     ys20ms--;
 007A           ; 
 007A           ; }
 007A           ; 
 007A           ; //call this routine to initialize all peripherals
 007A           ; void init_devices(void)
 007A           ; {
 007A                   .dbline 828
 007A           ;  //stop errant interrupts until set up
 007A 0A95              dec R16
 007C                   .dbline -2
 007C           L51:
 007C                   .dbline 0 ; func end
 007C 0895              ret
 007E                   .dbsym r mLength 16 c
 007E                   .dbend
 007E                   .dbfunc e xReadFromExtBuf _xReadFromExtBuf fV
 007E           ;        mLength -> R16
                        .even
 007E           _xReadFromExtBuf::
 007E                   .dbline -1
 007E                   .dbline 832
 007E           ;  CLI(); //disable all interrupts
 007E           ;  port_init();
 007E           ;  watchdog_init();
 007E           ;  timer0_init();
 007E                   .dbline 833
 007E           ; 
 007E 0A95              dec R16
 0080                   .dbline -2
 0080           L52:
 0080                   .dbline 0 ; func end
 0080 0895              ret
 0082                   .dbsym r mLength 16 c
 0082                   .dbend
 0082                   .dbfunc e CH375LibInit _CH375LibInit fc
                        .even
 0082           _CH375LibInit::
 0082                   .dbline -1
 0082                   .dbline 841
 0082           ;  MCUCR = 0x00;
 0082           ;  GICR  = 0x00;
 0082           ;  TIMSK = 0x01; //timer interrupt sources
 0082           ;  SEI(); //re-enable interrupts
 0082           ;  //all peripherals are now initialized
 0082           ; }
 0082           ;          
 0082           ; 
 0082                   .dbline 842
 0082           ;          
 0082 85E0              ldi R24,5
 0084 80930000          sts _CH375LibConfig,R24
 0088                   .dbline 843
 0088           ; 
 0088 2224              clr R2
 008A 20921404          sts _DISK_BASE_BUF,R2
 008E                   .dbline 844
 008E           ;          
 008E 0E940000          xcall _CH375GetVer
 0092 0033              cpi R16,48
 0094 10F4              brsh L54
 0096                   .dbline 844
 0096 0FEF              ldi R16,255
 0098 02C0              xjmp L53
 009A           L54:
 009A                   .dbline 845
 009A           ; 
 009A 0E940000          xcall _CH375Init
 009E                   .dbline -2
 009E           L53:
 009E                   .dbline 0 ; func end
 009E 0895              ret
 00A0                   .dbend
 00A0                   .dbfile E:\xm\jxf\u盘读写模块\code\udisk_test0827\udisk.c
 00A0                   .dbfunc e main _main fV
 00A0           ;              j -> R20,R21
 00A0           ;              i -> R20
                        .even
 00A0           _main::
 00A0                   .dbline -1
 00A0                   .dbline 152
 00A0                   .dbline 154
 00A0 48EC              ldi R20,200
 00A2 50E0              ldi R21,0
 00A4           L57:
 00A4                   .dbline 155
 00A4 16D4              xcall _variable
 00A6                   .dbline 156
 00A6 04E6              ldi R16,100
 00A8 10E0              ldi R17,0
 00AA 0E940000          xcall _i2cSetBitrate
 00AE                   .dbline 157
 00AE 0E940000          xcall _i2cInit
 00B2                   .dbline 158
 00B2 21E0              ldi R18,1
 00B4 00E6              ldi R16,96
 00B6 0E940000          xcall _i2cSetLocalDeviceAddr
 00BA                   .dbline 159
 00BA 0027              clr R16
 00BC 0E940000          xcall _init_USART
 00C0                   .dbline 160
 00C0 5AD4              xcall _init_devices
 00C2                   .dbline 162
 00C2 8DD0              xcall _xDelay100uS
 00C4                   .dbline 163
 00C4 8AD0              xcall _delay_us
 00C6                   .dbline 164
 00C6 00E0              ldi R16,<L58
 00C8 10E0              ldi R17,>L58
 00CA 0E940000          xcall _put_s
 00CE                   .dbline 165
 00CE 4427              clr R20
 00D0 15C0              xjmp L62
 00D2           L59:
 00D2                   .dbline 166
 00D2                   .dbline 167
 00D2 82B3              in R24,0x12
 00D4 8F70              andi R24,15
 00D6 82BB              out 0x12,R24
 00D8                   .dbline 168
 00D8 84E1              ldi R24,20
 00DA 80930E00          sts _ys20ms,R24
 00DE           L63:
 00DE                   .dbline 169
 00DE           L64:
 00DE                   .dbline 169
 00DE 20900E00          lds R2,_ys20ms
 00E2 2220              tst R2
 00E4 E1F7              brne L63
 00E6                   .dbline 170
 00E6 82B3              in R24,0x12
 00E8 806F              ori R24,240
 00EA 82BB              out 0x12,R24
 00EC                   .dbline 171
 00EC 84E1              ldi R24,20
 00EE 80930E00          sts _ys20ms,R24
 00F2           L66:
 00F2                   .dbline 172
 00F2           L67:
 00F2                   .dbline 172
 00F2 20900E00          lds R2,_ys20ms
 00F6 2220              tst R2
 00F8 E1F7              brne L66
 00FA                   .dbline 174
 00FA           L60:
 00FA                   .dbline 165
 00FA 4395              inc R20
 00FC           L62:
 00FC                   .dbline 165
 00FC 4330              cpi R20,3
 00FE 48F3              brlo L59
 0100                   .dbline 176
 0100 C0DF              xcall _CH375LibInit
 0102 00930200          sts _OperReturn,R16

⌨️ 快捷键说明

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