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

📄 txt.h~

📁 用Mega32+VS1003做的MP3(FAT32文件系统浏览)——源代码
💻 H~
字号:
#ifndef _TXT_INCLUDED_
#define _TXT_INCLUDED_  
#include "fat.h"

//文本文件读取程序
//check ok 08/09/04
//实现功能:把文件 m_c[fpos] 打开.在液晶上显示出来   
void Read_Book(uchar fpos)//打开txt文件
{     
    unsigned long bfactor=0;//文件的扇区  
    unsigned long bclust=0;
    uchar count=0;     //扇区计数器
    uint pointpos=0;   //指针位置   
    unsigned long offlenth=0;//文件读取的大小  
    uchar x=0,y=0;
    uchar *p=0;          //指向txt文件
    uchar temp[2]={0,0}; //换扇区使用 
    bit bHz=0;           //字符或者中文  
	unsigned char mat[24]; //保存12X12点陈内容     
    bclust=m_c[fpos].Clust;       
    bfactor=fatClustToSect(bclust);     
    Cleardisplay(4);//第一次进入,清屏 
    keyval=0;//清除键值
    while(1)
    {       
        ReadBlockToBuff(bfactor,pbuffer);//读取文本到pbuffer  
        p=pbuffer;//指向txt数据首地址
        do
        {    
	        while(*p!=0)//数据未结束
	        { 
		        if(!bHz)
		        {
			        if(*p>0x80)bHz=1;//中文 
			        else             //字符
			        {      
                        if(y>125){x++;y=0;}//一行已满,换行  
				        if(x>3)break;//越界返回      
				        if(*p==13)//换行符号
				        {         
				            x++;y=0;
				            p++;pointpos++;//跳过 
				        }  
				        else Show_char(x,y,*p); 
				        p++;pointpos++; 
				        y+=6;  
			        }
		        }else
		        {     
		            bHz=0;//有汉字库    
		            if(y>119){x++;y=0;}//换行
			        if(x>3)break;//越界返回  
			        //临界处理   
			        if(pointpos==511)//保存上一扇区的最后一个字节,退出        
			        {
			            temp[0]=*p; //记录最后的字节                
			            break;     //此扇区数据已经读完
			        }
			        if(temp[0])//上一次没有显示完
			        {                         
			            temp[1]=*p;//取第二扇区的第一个字节
			            Get_HzMat(temp,mat);//显示上一次的最后一个字 (无字库不起动系统)
			            p++;pointpos++;//偏移一个字节
			            temp[0]=0;     //清除标记
			        }
			        else Get_HzMat(p,mat);//得到点阵数据 (无字库不起动系统)   
			        Show_font(x,y,mat);  
			        p+=2;pointpos+=2;//指针偏移 
			        y+=12; 
		        }
		        if(pointpos>511)break;
	        }  
            if(pointpos>=511)break;//一个扇区读取完毕,直接跳出,读下一个扇区,防止停顿
            while(1)
            {
                if(READY)keyval=key_process();
                if(keyval==NEXT)
                {     
                    if(offlenth+pointpos+1>=m_c[fpos].FileLen){keyval=0;return ;}//文件读取结束(长度结束)  
                    if(x>3){x=0;y=0;Cleardisplay(4);}//非结尾返回,屏幕已满,清屏    
                    keyval=0;
                    break;
                } 
                if(keyval==QUIT){keyval=0;return;} 
                keyval=0;//清除按键键值 
            }   
        }while(pointpos<511);  
        offlenth+=pointpos+1;//文件长度累加  
        pointpos=0;//清除指针计数器
        count++;   //扇区计数器加一   
        bfactor++; //扇区加         
        if(count>=SectorsPerCluster)
        {         
            count=0;
            bclust=fatNextCluster(bclust); 
            if(bclust==0x00)break;//读取完毕  
            bfactor=fatClustToSect(bclust);
        }    
    } 
}    
#endif

⌨️ 快捷键说明

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