📄 main.c
字号:
GICR=0x80; //开外部中断
sei();
Usart_init();
tishi();
Usart_Send_Str(pstr);
flag=1;
key=0xFF;
hj=0;
do_flag=0;
j=0;
f=0;
c=0;
CH375_PORT_INIT( );
while(1)
{
while(do_flag)
{
switch(key)
{
case 0x0:
case 0x1:
case 0x2:
case 0x3:
case 0x4:
case 0x5:
case 0x6:
if((!set_flag)&&(key==0x6))
{
if (c>503)c=0;
//p1=&data[c];p2=&data[c+12];p3=&data[c+24];p4=&data[c+36];
// dis_str(p1,p2,p3,p4);
//Start();
lcd_system1();
for(char o=0;o<12;o++)
{name_tem[o]=data[c+o];}
c=c+12;do_flag=0;
break;}
case 0x7:
case 0x8:
case 0x9:
if((!set_flag)&&(key==0x9))
{c=c-12;
if (c<0||c>503) c=0;
// Start();
lcd_system1();
for(char o=0;o<12;o++)
{name_tem[o]=data[c+o];}
do_flag=0;
break;}
j=0;hj=0;
if (set_flag){
if (s5==4)s5=0;
start_set();} do_flag=0;break;
case 0xd:
{j=0;hj=0;
i = CH375LibInit( );
mStopIfError( i );
mDelaymS1( 100 );
while ( CH375DiskStatus < DISK_CONNECT ) { /* 查询CH375中断并更新中断状态,等待U盘插入 */
if ( CH375DiskConnect( ) == ERR_SUCCESS ) {j=1;break;} /* 有设备连接则返回成功,CH375DiskConnect同时会更新全局变量CH375DiskStatus */
mDelaymS1( 100 );
}
mDelaymS1( 250 );
for ( i = 0; i < 5; i ++ ) {
mDelaymS1( 100 );
if ( CH375DiskReady( ) == ERR_SUCCESS )
{
break;} /* 查询磁盘是否准备好 */
}
t=0;
pCodeStr = (UINT8 *)"/*";
for ( c = 0; c < 254; c ++ ) { /* 最多搜索前254个文件 */
strcpy( (char *)mCmdParam.Open.mPathName, (char *)pCodeStr ); /* 搜索文件名,*为通配符,适用于所有文件或者子目录 */
i = strlen( (char *)mCmdParam.Open.mPathName ); /* 计算文件名长度,以处理文件名结束符 */
mCmdParam.Open.mPathName[ i ] = c; /* 根据字符串长度将结束符替换为搜索的序号,从0到255 */
i = CH375FileOpen( ); /* 打开文件,如果文件名中含有通配符*,则为搜索文件而不打开 */
if ( i == ERR_MISS_FILE ) break; /* 再也搜索不到匹配的文件,已经没有匹配的文件名 */
if ( i == ERR_FOUND_NAME ) { /* 搜索到与通配符相匹配的文件名,文件名及其完整路径在命令缓冲区中 */
//printf( " match file %03d#: %s\n", (unsigned int)c, mCmdParam.Open.mPathName ); /* 显示序号和搜索到的匹配文件名或者子目录名 */
if (t<504)
{
for (i=0;i<12;t++,i++)
data[t]=mCmdParam.Open.mPathName[i];
//Usart_Send_Data(data,11);
}
continue; /* 继续搜索下一个匹配的文件名,下次搜索时序号会加1 */
}
else { /* 出错 */
mStopIfError( i );
break;}}
c=0;
lcd("中国地质大学北京"," 文件已读取完毕", "请按键 6或 9选择"," 查看文件 ");
do_flag=0;break;}
case 0xe:
{j=0;hj=0;
set_flag=1;
s1=0;s2=0;s3=0;s4=0;s5=0;s6=0;x=0;t=0;
start_set();
do_flag=0;break;
}
case 0xf:
j=0;
if(set_flag)
{
h=0;
name[0]=s2;name[1]=s1;name[2]=s4;name[3]=s3;
Start3();
s1=0;s2=0;s3=0;s4=0;s5=0;s6=0;x=0;t=0;
set_flag=0;
}do_flag=0;break;
case 0x0a:
do_flag=0;
break;
case 0xb:
{
lcd("中国地质大学北京","................", " 数据传输中....","................");
//lcd("中国地质大学北京","................", " 数据传输中....","................");
UDR=0x55;
while(!(UCSRA&0x20));
UDR=0x55;
while(!(UCSRA&0x20));
UDR=0x55;
while(!(UCSRA&0x20));
UDR=0x55;
while(!(UCSRA&0x20));
UDR=0x55;
while(!(UCSRA&0x20));
i = CH375LibInit( );
mStopIfError( i );
mDelaymS1( 100 );
while ( CH375DiskStatus < DISK_CONNECT ) { /* 查询CH375中断并更新中断状态,等待U盘插入 */
if ( CH375DiskConnect( ) == ERR_SUCCESS ) {j=1;break;} /* 有设备连接则返回成功,CH375DiskConnect同时会更新全局变量CH375DiskStatus */
mDelaymS1( 100 );
}
mDelaymS1( 250 );
for ( i = 0; i < 5; i ++ ) {
mDelaymS1( 100 );
if ( CH375DiskReady( ) == ERR_SUCCESS )
{
break;} /* 查询磁盘是否准备好 */
}
//strcpy( (char *)mCmdParam.Open.mPathName, "/454500.TXT" );
for(char e=0;e<12;e++)
{
mCmdParam.Open.mPathName[e]=name_tem[e];
}
i = CH375FileOpen( );
for(i=0;i<64;i++)
{mCmdParam.Read.mSectorCount =1;
CH375FileRead();
if (s8==0) break;
//for(t=0;t<512;t++)
//{data[t]=FILE_DATA_BUF[t];}
Usart_Send_Data(FILE_DATA_BUF,512);
}
i = CH375FileClose( );
mStopIfError( i );
lcd("中国地质大学北京","................", " 数据传输结束..","................");
//lcd("中国地质大学北京","测试波形输出....", "1 正弦波 2 方波","3 三角波 4......");
//tishi1();
do_flag=0;
UDR=0x55;
while(!(UCSRA&0x20));
UDR=0x55;
while(!(UCSRA&0x20));
UDR=0x55;
while(!(UCSRA&0x20));
UDR=0x55;
while(!(UCSRA&0x20));
UDR=0x55;
while(!(UCSRA&0x20));
//lcd("中国地质大学北京","................", "....输出完毕....","................");
break;
}
case 0x0c:
{c=0;x=0;hj=0;
lcd("中国地质大学北京","................", " 数据传输中....","................");
i = CH375LibInit( );
mStopIfError( i );
mDelaymS1( 100 );
while ( CH375DiskStatus < DISK_CONNECT ) { /* 查询CH375中断并更新中断状态,等待U盘插入 */
if ( CH375DiskConnect( ) == ERR_SUCCESS ) {j=1;break;} /* 有设备连接则返回成功,CH375DiskConnect同时会更新全局变量CH375DiskStatus */
mDelaymS1( 100 );
}
mDelaymS1( 250 );
for ( i = 0; i < 5; i ++ ) {
mDelaymS1( 100 );
if ( CH375DiskReady( ) == ERR_SUCCESS )
{
break;} /* 查询磁盘是否准备好 */
}
mDelaymS1( 100 );
while ( CH375DiskStatus < DISK_CONNECT ) { /* 查询CH375中断并更新中断状态,等待U盘插入 */
if ( CH375DiskConnect( ) == ERR_SUCCESS ) {break;} /* 有设备连接则返回成功,CH375DiskConnect同时会更新全局变量CH375DiskStatus */
mDelaymS1( 100 );
}
mDelaymS1( 250 );
for ( i = 0; i < 5; i ++ ) {
mDelaymS1( 100 );
if ( CH375DiskReady( ) == ERR_SUCCESS )
{
break;} /* 查询磁盘是否准备好 */
}
if (h==100)
h=0;
mCmdParam.Create.mPathName[0]='/';
mCmdParam.Create.mPathName[1]=name[0]+0x30;
mCmdParam.Create.mPathName[2]=name[1]+0x30;
mCmdParam.Create.mPathName[3]=name[2]+0x30;
mCmdParam.Create.mPathName[4]=name[3]+0x30;
mCmdParam.Create.mPathName[5]=0X30+h/10;
mCmdParam.Create.mPathName[6]=0X30+h%10;
mCmdParam.Create.mPathName[7]='.';
mCmdParam.Create.mPathName[8]='T';
mCmdParam.Create.mPathName[9]='X';
mCmdParam.Create.mPathName[10]='T';
mCmdParam.Create.mPathName[11]='\0';
h++;
i = CH375FileOpen( ); /* 打开文件 */
if ( i == ERR_SUCCESS ) { /* 文件存在并且已经被打开,移动文件指针到尾部以便添加数据 */
mCmdParam.Locate.mSectorOffset = 0xffffffff; /* 移到文件的尾部,CH375子程序库内部是将文件长度按扇区长度512进行取整处理 */
i = CH375FileLocate( ); /* 以扇区为单位移到文件尾部,如果文件尾部有不足一个扇区的零头数据则被忽略,如果不做处理那么零头数据将可能被写入数据覆盖 */
mStopIfError( i );
}
else if ( i == ERR_MISS_FILE )
{
//strcpy( (char *)mCmdParam.Create.mPathName, "\\FF.TXT" );
i = CH375FileCreate( );
mStopIfError( i );
}
mDelaymS1( 150 );
UDR=0xFF;
while(!(UCSRA&0x20));
UDR=0xFF;
while(!(UCSRA&0x20));
UDR=0xFF;
while(!(UCSRA&0x20));
UDR=0xFF;
while(!(UCSRA&0x20));
UDR=0xFF;
while(!(UCSRA&0x20));
//x=0;
//sei();
UCSRB =0x98;
while(1&s7)
{
write_times++;
while(flag&s7);
flag=1;
j=1;
while(j&s7)
{
for(t=0;t<512;t++)
{
FILE_DATA_BUF[t]=data[t];
}
t=0;
mCmdParam.Write.mSectorCount=1;
CH375FileWrite( );
mCmdParam.Write.mSectorCount=0;
CH375FileWrite( );
j=0;
}
if (write_times==64) {
break;} //Usart_Send_Str(pstr);
}
write_times=0;
i = CH375FileClose( );
mStopIfError( i );
UCSRB =0x08;
for(t=0;t<512;t++)
{
data[t]=0;}
lcd("中国地质大学北京","................", " 数据传输结束..","................");
do_flag=0;
break;}
default:break;
}//switch
}//while(do_flag)
}//while(1)
}//main
SIGNAL(SIG_UART_RECV)
{
// if (write_times==5)cli();
data[x]= UDR;
x++;
///if (x%2)LED_0;
//else LED_1;
if (x==512) {x=0;flag=0;}
}
void DelayMs111(uint i) //1ms
{ uint j;
for(;i!=0;i--)
{for(j=4000;j!=0;j--)
{;}
}
}
uchar ZLG7290_GetKey(void)
{uchar rece;
rece=0;
rece=twi_read_byte(zlg7290,1);//键值寄存器Key地址是01H,所以此处Address=1;zlg7290为从机
DelayMs111(10);
return rece;
}
SIGNAL(SIG_INTERRUPT1) //INT1为7920送入的中断
{
do_flag=1;
key=ZLG7290_GetKey(); //取得按键数值
switch(key) //在LED上显示键值,原来的值右移一位。
{
case 0x01:key=1;break;
case 0x02:key=2;break;
case 0x03:key=3;break;
case 0x04:key=0xa;s7=0;s8=0;break;
case 0x09:key=4;break;
case 0x0A:key=5;break;
case 0x0B:key=6;break;
case 0x0C:key=0xb;s8=1;break;
case 0x19:key=0xe;break;
case 0x1A:key=0;break;
case 0x1B:key=0xf;break;
case 0x1C:key=0xd;break;
case 0x11:key=7;break;
case 0x12:key=8;break;
case 0x13:key=9;break;
case 0x14:key=0xc;s7=1;break;
default:key=0xfF;break;
}
if(key<0xa)
set();
if (set_flag)
if (s5==5)
s5=0;
if (s5!=5)
s5++;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -