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