在u8中怎样通过isd来打补丁

在u8中怎样通过isd来打补丁,第1张

我也试了好多次 终于搞明白。

更新ISD到最新版本;

通过以前老的更新工具在服务器上下载补丁;

通过ISD配置服务器地址连接,下载后直接安装(如果客户端需要打也同样) 如有问题 请看我头像加后交流

#include <reg51h>

#define uchar unsigned char

#define uint unsigned int

//定义端口//

sbit SS = P1^0;

sbit SCK = P1^1;

sbit MOSI = P1^2;

sbit MISO = P1^3;

sbit PR = P1^4;//PLAY = 0;REC = 1;

sbit STOP = P1^5;

sbit AN = P1^6;

sbit LED = P1^7;

//定义ISD1700状态寄存器及各标志位//

uchar bdata SR0_L;//SR0寄存器低位、高位

uchar bdata SR0_H;

uchar bdata SR1;//SR1寄存器

uchar APC_L = 0, APC_H = 0;//APC寄存器

uchar PLAYADDL = 0, PLAYADDH = 0;//放音指针低位、高位

uchar RECADDL = 0, RECADDH = 0;//录音指针低位、高位

sbit CMD_ERR = SR0_L^0;//SPI指令无效标志位

sbit FULL = SR0_L^1;//芯片存储空间满标志位

sbit PU = SR0_L^2;//上电标志位

sbit EOM = SR0_L^3;//EOM标志位

sbit INT = SR0_L^4;// *** 作完成标志位

sbit RDY = SR1^0;//芯片空闲标志位

sbit ERASE = SR1^1;//擦除标志位

sbit PLAY = SR1^2;//放音标志位

sbit REC = SR1^3;//录音标志位

//定义标志位//

uchar bdata fang;

sbit PR_fang = fang^1;//录音、放音标志位,放音=0,录音=1

sbit Erase_fang = fang^4;//擦出标志位

sbit STOP_fang = fang^7;//停止放音标志位

//延时μs//

void delay(uint time)//延时n微秒

{

while(time!=0)

{

time--;

}

}

//延时ms//

void delayms(uint time)//延时n毫秒

{

  for(time; time>0; time--)

     {

        TH0 = 0xfc;                         

TL0 = 0x18;

        TR0 = 1;//计数器0启动

        while(TF0!=1);//计数溢出处理                       

        TF0 = 0;

        TR0 = 0;

     }

}

//CPU初始化//

void cpu_init (void)

{

P1 = 0xFF;

P2 = 0xFF;

P3 = 0xFF;

TMOD = 0x01;//定时器初始化,工作于方式1

EA = 0;//关中断

fang = 0;//标志位归0

LED = 1;//关指示灯

}

//发送、读回数据//

uchar isd_senddata (uchar dat)

{

uchar i, BUF_ISD = dat;

SS = 0;

SCK = 1;

delay(4);

for(i=0; i<8; i++)

{

SCK = 0;

if((BUF_ISD&0x01)==1)

{

MOSI = 1;

}

else

{

MOSI = 0;

}

BUF_ISD = BUF_ISD >> 1;

if(MISO)

{

BUF_ISD = BUF_ISD|0x80;

}

SCK = 1;

delay(6);

}

MOSI = 0;

return(BUF_ISD);

}

//上电//

void isd_pu (void)

{

isd_senddata (0x01);

isd_senddata (0x00);

SS = 1;

delayms(50);

}

//停止当前 *** 作//

void isd_stop (void)

{

isd_senddata (0x02);

isd_senddata (0x00);

SS = 1;

delayms(50);

}

//复位//

void isd_reset (void)

{

isd_senddata (0x03);

isd_senddata (0x00);

SS = 1;

}

//清除中断//

void isd_clr_int (void)

{

isd_senddata (0x04);

isd_senddata (0x00);

SS = 1;

}

//读状态寄存器内容//

void isd_rd_status (void)

{

isd_senddata (0x05);

isd_senddata (0x00);

isd_senddata (0x00);

SS = 1;

delay(2);

SR0_L = isd_senddata (0x05);

SR0_H = isd_senddata (0x00);

SR1 = isd_senddata (0x00);

SS = 1;

}

//读放音指针//

void isd_rd_playptr (void)

{

isd_senddata (0x06);

isd_senddata (0x00);

isd_senddata (0x00);

isd_senddata (0x00);

SS = 1;

delay(2);

SR0_L = isd_senddata (0x06);

SR0_H = isd_senddata (0x00);

PLAYADDL = isd_senddata (0x00);

PLAYADDH = isd_senddata (0x00);

SS = 1;

}

//下电//

void isd_pd (void)

{

isd_senddata (0x07);

isd_senddata (0x00);

SS = 1;

delayms(50);

}

//读录音指针//

void isd_rd_recptr (void)

{

isd_senddata (0x08);

isd_senddata (0x00);

isd_senddata (0x00);

isd_senddata (0x00);

SS = 1;

delay(2);

SR0_L = isd_senddata (0x08);

SR0_H = isd_senddata (0x00);

RECADDL = isd_senddata (0x00);

RECADDH = isd_senddata (0x00);

SS = 1;

}

//读芯片ID//

uchar isd_devid (uchar deviceNO)

{

isd_senddata (0x09);

isd_senddata (0x00);

isd_senddata (0x00);

SS = 1;

delay(2);

isd_senddata (0x09);

isd_senddata (0x00);

deviceNO = isd_senddata (0x00);

SS = 1;

return(deviceNO);

}

//放音//

void isd_play (void)

{

isd_senddata (0x40);

isd_senddata (0x00);

SS = 1;

}

//录音//

void isd_rec (void)

{

isd_senddata (0x41);

isd_senddata (0x00);

SS = 1;

}

//擦除//

void isd_erase (void)

{

isd_senddata (0x42);

isd_senddata (0x00);

SS = 1;

}

//全部擦出//

void isd_g_erase (void)

{

isd_senddata (0x43);

isd_senddata (0x00);

SS = 1;

}

//读APC寄存器内容//

void isd_rd_apc (void)

{

isd_senddata (0x44);

isd_senddata (0x00);

isd_senddata (0x00);

isd_senddata (0x00);

SS = 1;

delay(2);

SR0_L = isd_senddata (0x44);

SR0_H = isd_senddata (0x00);

APC_L = isd_senddata (0x00);

APC_H = isd_senddata (0x00);

SS = 1;

}

//写APC寄存器//

void isd_wr_apc2 (uchar apcdatl,apcdath)

{

isd_senddata (0x65);

isd_senddata (apcdatl);

isd_senddata (apcdath);

SS = 1;

}

//将APC寄存器内容写入NVCFG//

void isd_wr_nvcfg (uchar apcdatl,apcdath)

{

isd_senddata (0x46);

isd_senddata (apcdatl);

isd_senddata (apcdath);

SS = 1;

}

//将NVCFG内容写入APC//

void isd_ld_nvcfg (void)

{

isd_senddata (0x47);

isd_senddata (0x00);

SS = 1;

}

//快进//

void isd_fwd (void)

{

isd_senddata (0x48);

isd_senddata (0x00);

SS = 1;

}

//空检查//

void isd_chk_mem (void)

{

isd_senddata (0x49);

isd_senddata (0x00);

SS = 1;

}

//外部时钟的启用、关闭//

void isd_extclk (void)

{

isd_senddata (0x4a);

isd_senddata (0x00);

SS = 1;

}

//指定地址放音//

void isd_set_play (uchar saddl,saddh,eaddl,eaddh)

{

isd_senddata (0x80);

isd_senddata (0x00);

isd_senddata (saddl);

isd_senddata (saddh);

isd_senddata (eaddl);

isd_senddata (eaddh);

isd_senddata (0x00);

SS = 1;

}

//指定地址录音//

void isd_set_rec (uchar saddl,saddh,eaddl,eaddh)

{

isd_senddata (0x81);

isd_senddata (0x00);

isd_senddata (saddl);

isd_senddata (saddh);

isd_senddata (eaddl);

isd_senddata (eaddh);

isd_senddata (0x00);

SS = 1;

}

//指定地址擦除//

void isd_set_erase (uchar saddl,saddh,eaddl,eaddh)

{

isd_senddata (0x82);

isd_senddata (0x00);

isd_senddata (saddl);

isd_senddata (saddh);

isd_senddata (eaddl);

isd_senddata (eaddh);

isd_senddata (0x00);

SS = 1;

}

//芯片系统初始化//

void isd_init (void)

{

uchar i = 2;

SS = 1;

SCK = 1;

MOSI = 0;

do

{

isd_pu ();

isd_rd_status ();

}while(CMD_ERR||(!PU));

isd_wr_apc2 (0x40,0x04);

do

{

isd_rd_status ();

}while(RDY==0);

do

{

LED = 0;

delayms(300);

LED = 1;

delayms(300);

i--;

}while(i>0);

}

//isd1700的相关 *** 作//

void isdwork (void)

{

uchar i;

switch (fang)

{

case 0x00:

{

do

{

isd_rd_status ();

}while(RDY==0);

delayms(10);

isd_play ();

delayms(2);

LED = 0;

do

{

isd_rd_status ();

if(STOP==0)

{

delayms (10);

if(STOP==0)

{

LED = 1;

isd_clr_int ();

isd_stop ();

isd_reset ();

isd_pd ();

isd_init ();

return;

}

}

}while(PLAY==1);

LED = 1;

isd_clr_int ();

do

{

isd_rd_status ();

}while(RDY==0);

delayms (10);

isd_fwd ();

do

{

isd_rd_status ();

}while(RDY==0);

}

break;

case 0x02:

{

isd_clr_int ();

do

{

isd_rd_status ();

}while(RDY==0);

delayms(10);

isd_rec ();

delayms(2);

LED = 0;

do

{

isd_rd_status ();

if(FULL==1)

{

for(i=3; i>0; i--)

{

LED = 0;

delayms (300);

LED = 1;

delayms (200);

}

}

}while(AN==0);

isd_clr_int ();

isd_stop ();

LED = 1;

}

break;

case 0x10:

{

do

{

isd_rd_status ();

}while(RDY==0);

delayms (10);

isd_g_erase ();

delayms (2);

do

{

isd_rd_status ();

}while(RDY==0);

for(i=3; i>0; i--)

{

LED = 0;

delayms (300);

LED = 1;

delayms (200);

}

}

break;

case 0x80:

{

isd_clr_int ();

isd_stop ();

isd_reset ();

isd_pd ();

}

break;

}

}

//主程序//

void main (void)

{

uchar i;

cpu_init ();

delayms (1);

isd_init ();

while(1)

{

if(AN==0)

{

delayms (10);

if(AN==0)

{

if(PR==1)

{

PR_fang = 1;

}

else

{

PR_fang = 0;

}

isdwork ();

}

}

if(STOP==0)

{

delayms (10);

if(STOP==0)

{

for(i=100; i>0; i--)

{

if(STOP==1)

{

STOP_fang = 1;

isdwork ();

isd_init ();

break;

}

delayms(30);

}

if (STOP_fang==1)

{

fang = 0;

continue;

}

Erase_fang = 1;

isdwork ();

}

}

}

}

if后面括号,实际上判断BUF_ISD这个变量二进制的最后一位是为1还是为0,如果为1的话与0x01相与还是为1,为0时与0x01相与则为零;如果IF后面括号中的值为真(1)则执行MOSI=1;else后面则不执行,如果IF后面括号中的值为假(0)则执行else MOSI=0,而MOSI=1不执行。

哈哈!解释得够清楚吧!

#include <reg51h>

#define uchar unsigned char

#define uint unsigned int

//定义端口//

sbit SS = P1^0;

sbit SCK = P1^1;

sbit MOSI = P1^2;

sbit MISO = P1^3;

sbit PR = P1^4;//PLAY = 0;REC = 1;

sbit STOP = P1^5;

sbit AN = P1^6;

sbit LED = P1^7;

//定义ISD1700状态寄存器及各标志位//

uchar bdata SR0_L;//SR0寄存器低位、高位

uchar bdata SR0_H;

uchar bdata SR1;//SR1寄存器

uchar APC_L = 0, APC_H = 0;//APC寄存器

uchar PLAYADDL = 0, PLAYADDH = 0;//放音指针低位、高位

uchar RECADDL = 0, RECADDH = 0;//录音指针低位、高位

sbit CMD_ERR = SR0_L^0;//SPI指令无效标志位

sbit FULL = SR0_L^1;//芯片存储空间满标志位

sbit PU = SR0_L^2;//上电标志位

sbit EOM = SR0_L^3;//EOM标志位

sbit INT = SR0_L^4;// *** 作完成标志位

sbit RDY = SR1^0;//芯片空闲标志位

sbit ERASE = SR1^1;//擦除标志位

sbit PLAY = SR1^2;//放音标志位

sbit REC = SR1^3;//录音标志位

//定义标志位//

uchar bdata fang;

sbit PR_fang = fang^1;//录音、放音标志位,放音=0,录音=1

sbit Erase_fang = fang^4;//擦出标志位

sbit STOP_fang = fang^7;//停止放音标志位

//延时μs//

void delay(uint time)//延时n微秒

{

while(time!=0)

{

time--;

}

}

//延时ms//

void delayms(uint time)//延时n毫秒

{

for(time; time>0; time--)

{

TH0 = 0xfc;

TL0 = 0x18;

TR0 = 1;//计数器0启动

while(TF0!=1);//计数溢出处理

TF0 = 0;

TR0 = 0;

}

}

//CPU初始化//

void cpu_init (void)

{

P1 = 0xFF;

P2 = 0xFF;

P3 = 0xFF;

TMOD = 0x01;//定时器初始化,工作于方式1

EA = 0;//关中断

fang = 0;//标志位归0

LED = 1;//关指示灯

}

//发送、读回数据//

uchar isd_senddata (uchar dat)

{

uchar i, BUF_ISD = dat;

SS = 0;

SCK = 1;

delay(4);

for(i=0; i<8; i++)

{

SCK = 0;

if((BUF_ISD&0x01)==1)

{

MOSI = 1;

}

else

{

MOSI = 0;

}

BUF_ISD = BUF_ISD >> 1;

if(MISO)

{

BUF_ISD = BUF_ISD|0x80;

}

SCK = 1;

delay(6);

}

MOSI = 0;

return(BUF_ISD);

}

//上电//

void isd_pu (void)

{

isd_senddata (0x01);

isd_senddata (0x00);

SS = 1;

delayms(50);

}

//停止当前 *** 作//

void isd_stop (void)

{

isd_senddata (0x02);

isd_senddata (0x00);

SS = 1;

delayms(50);

}

//复位//

void isd_reset (void)

{

isd_senddata (0x03);

isd_senddata (0x00);

SS = 1;

}

//清除中断//

void isd_clr_int (void)

{

isd_senddata (0x04);

isd_senddata (0x00);

SS = 1;

}

//读状态寄存器内容//

void isd_rd_status (void)

{

isd_senddata (0x05);

isd_senddata (0x00);

isd_senddata (0x00);

SS = 1;

delay(2);

SR0_L = isd_senddata (0x05);

SR0_H = isd_senddata (0x00);

SR1 = isd_senddata (0x00);

SS = 1;

}

//读放音指针//

void isd_rd_playptr (void)

{

isd_senddata (0x06);

isd_senddata (0x00);

isd_senddata (0x00);

isd_senddata (0x00);

SS = 1;

delay(2);

SR0_L = isd_senddata (0x06);

SR0_H = isd_senddata (0x00);

PLAYADDL = isd_senddata (0x00);

PLAYADDH = isd_senddata (0x00);

SS = 1;

}

//下电//

void isd_pd (void)

{

isd_senddata (0x07);

isd_senddata (0x00);

SS = 1;

delayms(50);

}

//读录音指针//

void isd_rd_recptr (void)

{

isd_senddata (0x08);

isd_senddata (0x00);

isd_senddata (0x00);

isd_senddata (0x00);

SS = 1;

delay(2);

SR0_L = isd_senddata (0x08);

SR0_H = isd_senddata (0x00);

RECADDL = isd_senddata (0x00);

RECADDH = isd_senddata (0x00);

SS = 1;

}

//读芯片ID//

uchar isd_devid (uchar deviceNO)

{

isd_senddata (0x09);

isd_senddata (0x00);

isd_senddata (0x00);

SS = 1;

delay(2);

isd_senddata (0x09);

isd_senddata (0x00);

deviceNO = isd_senddata (0x00);

SS = 1;

return(deviceNO);

}

//放音//

void isd_play (void)

{

isd_senddata (0x40);

isd_senddata (0x00);

SS = 1;

}

//录音//

void isd_rec (void)

{

isd_senddata (0x41);

isd_senddata (0x00);

SS = 1;

}

//擦除//

void isd_erase (void)

{

isd_senddata (0x42);

isd_senddata (0x00);

SS = 1;

}

//全部擦出//

void isd_g_erase (void)

{

isd_senddata (0x43);

isd_senddata (0x00);

SS = 1;

}

//读APC寄存器内容//

void isd_rd_apc (void)

{

isd_senddata (0x44);

isd_senddata (0x00);

isd_senddata (0x00);

isd_senddata (0x00);

SS = 1;

delay(2);

SR0_L = isd_senddata (0x44);

SR0_H = isd_senddata (0x00);

APC_L = isd_senddata (0x00);

APC_H = isd_senddata (0x00);

SS = 1;

}

//写APC寄存器//

void isd_wr_apc2 (uchar apcdatl,apcdath)

{

isd_senddata (0x65);

isd_senddata (apcdatl);

isd_senddata (apcdath);

SS = 1;

}

//将APC寄存器内容写入NVCFG//

void isd_wr_nvcfg (uchar apcdatl,apcdath)

{

isd_senddata (0x46);

isd_senddata (apcdatl);

isd_senddata (apcdath);

SS = 1;

}

//将NVCFG内容写入APC//

void isd_ld_nvcfg (void)

{

isd_senddata (0x47);

isd_senddata (0x00);

SS = 1;

}

//快进//

void isd_fwd (void)

{

isd_senddata (0x48);

isd_senddata (0x00);

SS = 1;

}

//空检查//

void isd_chk_mem (void)

{

isd_senddata (0x49);

isd_senddata (0x00);

SS = 1;

}

//外部时钟的启用、关闭//

void isd_extclk (void)

{

isd_senddata (0x4a);

isd_senddata (0x00);

SS = 1;

}

//指定地址放音//

void isd_set_play (uchar saddl,saddh,eaddl,eaddh)

{

isd_senddata (0x80);

isd_senddata (0x00);

isd_senddata (saddl);

isd_senddata (saddh);

isd_senddata (eaddl);

isd_senddata (eaddh);

isd_senddata (0x00);

SS = 1;

}

//指定地址录音//

void isd_set_rec (uchar saddl,saddh,eaddl,eaddh)

{

isd_senddata (0x81);

isd_senddata (0x00);

isd_senddata (saddl);

isd_senddata (saddh);

isd_senddata (eaddl);

isd_senddata (eaddh);

isd_senddata (0x00);

SS = 1;

}

//指定地址擦除//

void isd_set_erase (uchar saddl,saddh,eaddl,eaddh)

{

isd_senddata (0x82);

isd_senddata (0x00);

isd_senddata (saddl);

isd_senddata (saddh);

isd_senddata (eaddl);

isd_senddata (eaddh);

isd_senddata (0x00);

SS = 1;

}

//芯片系统初始化//

void isd_init (void)

{

uchar i = 2;

SS = 1;

SCK = 1;

MOSI = 0;

do

{

isd_pu ();

isd_rd_status ();

}while(CMD_ERR||(!PU));

isd_wr_apc2 (0x40,0x04);

do

{

isd_rd_status ();

}while(RDY==0);

do

{

LED = 0;

delayms(300);

LED = 1;

delayms(300);

i--;

}while(i>0);

}

//isd1700的相关 *** 作//

void isdwork (void)

{

uchar i;

switch (fang)

{

case 0x00:

{

do

{

isd_rd_status ();

}while(RDY==0);

delayms(10);

isd_play ();

delayms(2);

LED = 0;

do

{

isd_rd_status ();

if(STOP==0)

{

delayms (10);

if(STOP==0)

{

LED = 1;

isd_clr_int ();

isd_stop ();

isd_reset ();

isd_pd ();

isd_init ();

return;

}

}

}while(PLAY==1);

LED = 1;

isd_clr_int ();

do

{

isd_rd_status ();

}while(RDY==0);

delayms (10);

isd_fwd ();

do

{

isd_rd_status ();

}while(RDY==0);

}

break;

case 0x02:

{

isd_clr_int ();

do

{

isd_rd_status ();

}while(RDY==0);

delayms(10);

isd_rec ();

delayms(2);

LED = 0;

do

{

isd_rd_status ();

if(FULL==1)

{

for(i=3; i>0; i--)

{

LED = 0;

delayms (300);

LED = 1;

delayms (200);

}

}

}while(AN==0);

isd_clr_int ();

isd_stop ();

LED = 1;

}

break;

case 0x10:

{

do

{

isd_rd_status ();

}while(RDY==0);

delayms (10);

isd_g_erase ();

delayms (2);

do

{

isd_rd_status ();

}while(RDY==0);

for(i=3; i>0; i--)

{

LED = 0;

delayms (300);

LED = 1;

delayms (200);

}

}

break;

case 0x80:

{

isd_clr_int ();

isd_stop ();

isd_reset ();

isd_pd ();

}

break;

}

}

//主程序//

void main (void)

{

uchar i;

cpu_init ();

delayms (1);

isd_init ();

while(1)

{

if(AN==0)

{

delayms (10);

if(AN==0)

{

if(PR==1)

{

PR_fang = 1;

}

else

{

PR_fang = 0;

}

isdwork ();

}

}

if(STOP==0)

{

delayms (10);

if(STOP==0)

{

for(i=100; i>0; i--)

{

if(STOP==1)

{

STOP_fang = 1;

isdwork ();

isd_init ();

break;

}

delayms(30);

}

if (STOP_fang==1)

{

fang = 0;

continue;

}

Erase_fang = 1;

isdwork ();

}

}

}

}

这个是按键录放的例程,你可以根据这个例程自己修改一下

这个文件我在网上查询了一下,没有找到该文件的任何信息,应该是随机命名的一个文件

你可以访问腾讯电脑管家官网,下载安装一个电脑管家

使用电脑管家的杀毒功能来查杀一下

就可以知道是否是病毒了,如果是病毒,那么清除即可

常见文件扩展名和它们的说明

ACE:Ace压缩档案格式

ACT:Microsoft office助手文件

AIF,AIFF:音频互交换文件,Silicon Graphic and Macintosh应用程序的声音格式

ANI:Windows系统中的动画光标

ARC:LH ARC的压缩档案文件

ARJ:Robert Jung ARJ压缩包文件

ASD:Microsoft Word的自动保存文件;Microsoft高级流媒体格式(microsoft advanced streaming

format,ASF)的描述文件;可用NSREX打开 Velvet Studio例子文件

ASF:Microsoft高级流媒体格式文件

ASM:汇编语言源文件,Pro/E装配文件

ASP:动态网页文件;ProComm Plus安装与连接脚本文件;Astound介绍文件

AST:Astound多媒体文件;ClarisWorks“助手”文件

Axx:ARJ压缩文件的分包序号文件,用于将一个大文件压至几个小的压缩包中(xx取01-99的数字)

A3L:Authorware 3x库文件

A4L:Authorware 4x库文件

A5L:Authorware 5x库文件

A3M,A4M:Authorware Macintosh未打包文件

A3W,A4W,A5W:未打包的Authorware Windows文件

B

BAK:备份文件

BAS:BASIC源文件

BAT:批处理文件

BIN:二进制文件

BINHex:苹果的一种编码格式

BMP:Windows或OS/2位图文件

BOOK:Adobe FrameMaker Book文件

BOX:Lotus Notes的邮箱文件

BPL:Borlard Delph 4打包库

BSP:Quake图形文件

BUN:CakeWalk 声音捆绑文件(一种MIDI程序)

C

C0l:台风波形文件

CAB:Microsoft压缩档案文件

CAD:Softdek的Drafix CAD文件

CAM:Casio照相机格式

CAP:压缩音乐文件格式

CAS:逗号分开的ASCⅡ文件

CCB:Visual Basic动态按钮配置文件

CCH:Corel图表文件

CCO:CyberChat数据文件

CCT:Macromedia Director Shockwave投影

CDA:CD音频轨道

CDF:Microsoft频道定义格式文件

CDI:Philip的高密盘交互格式

CDM:Visual dBASE自定义数据模块文件

CDR:CorelDRAW绘图文件;原始音频CD数据文件

CDT:CorelDRAW模板

CDX:CorelDRAW压缩绘图文件;Microsoft Visual FoxPro索引文件

CFG:配置文件

CGI:公共网关接口脚本文件

CGM:计算机图形元文件

CH:OS/2配置文件

CHK:由Windows磁盘碎片整理器或磁盘扫描保存的文件碎片

CHM:编译过的HTML文件

CHP:Ventura Publisher章节文件

CHR:字符集(字体文件)

CHT:ChartViem文件;Harvard Graphics矢量文件

CIF:Adaptec CD 创建器 CD映像文件

CIL:Clip Gallery下载包

CIM:SimCity 2000文件

CIN:OS/2改变控制文件用于跟踪INI文件中的变化

CLASS:Java类文件

CLP:Windows 剪贴板文件

CLL:Crick Software Clicker文件

CLS:Visual Basic类文件

CMD:Windows NT,OS/2的命令文件;DOS CD/M命令文件;dBASEⅡ程序文件

CPI:Microsoft MS-DOS代码页信息文件

CPL:控制面板扩展名,Corel颜色板

CPP:C++代码文件

CPR:Corel提供说明书文件

CPT:Corel 照片-绘画图像

CST:Macromedia Director Cast文件

CUR:Windows光标文件

D

DBF:dBASE文件,一种由Ashton-Tate创建的格式,可以被ACT!、Lipper、FoxPro、Arago、Wordtech、Xbase和类似数据库或与数据库有关产品识别;可用数据文件(能被Excel

97打开);Oracle 81x表格空间文件

DBX:DataBearn图像;Microsoft Visual FoxPro表格文件

DCT:Microsoft Visual FoxPro数据库容器

DCU:Delphi编译单元文件

DCX:Microsoft Visual FoxPro数据库容器;基于PCX的传真图像;宏

DIR:MacromediaDirector文件

DLL:动态链接库

DOC:FrameMaker或FrameBuilder文档;Word Star文档、Word

Perfect文档、Microsoft:Word文档;DisplayWrite文档

DOT:Microsoft Word文档模板

DPL:Borland Delph 3压缩库

DRV:驱动程序

DRW:Micrografx Designer/Draw;Pro/E绘画文件

DSF:Micrografx Designer VFX文件

DSG:DOOM保存的文件

DSM:Dynamic Studio音乐模块(MOD)文件

DSP:Microsoft Developer Studio工程文件

DSQ:Corel QUERY(查询)文件

DST:刺绣机图形文件

DSW:Microsoft Developer Studio工作区文件

DTA:World Bank(世界银行)的STARS数据文件

DTD:SGML文档类型定义(DTD)文件

DTED:地面高度数字数据(图形的数据格式)文件

DTF:Symantec Q&A相关的数据库数据文件

DTM:DigiTrakker模块文件

DUN:Microsoft拔号网络导出文件

DV:数字视频文件(MIME)

DWG:AutoCAD工程图文件;AutoCAD或Generic CADD老版本的绘图格式

DXR:Macromedia Director受保护(不可编辑)**文件

E

EDA:Ensoniq ASR磁盘映像

EDD:元素定义文档(FrameMaker+SGML文档)

EDE:Ensoniq EPS磁盘映像

EDK:Ensoniq KT磁盘映像

EDQ:Ensoniq SQ1/SQ2/Ks32磁盘映像

EDS:Ensoniq SQ80磁盘映像

EDV:Ensoniq VFX-SD磁盘映像

EFA:Ensoniq ASR文件

EFE:Ensoniq EPS文件

EFK:Ensoniq KT文件

EFQ:Ensoniq SQ1/SQ2/Ks32文件

EFS:Ensoniq SQ80文件

EFV:Ensoniq VFX-SD文件

EMD:ABT扩展模块

EMF:Windows增强元文件

EML:Microsoft Outlook Express邮件消息(MIME RTC822)文件

EXE:可执行文件(程序)

F

FAV:Microsoft Outlook导航条

FAX:传真类型图像

FCD:虚拟CD-ROM

FDF:Adobe Acrobat表单文档文件

FLA:Macromedia Flash**

FND:Microsoft Explorer保存的搜索文件(Find applet)

FON:系统字体

FRT:Microsoft FoxPro报表文件

FRX:Visual Basic表单文本;Microsoft FoxPro报表文件

FXP:经Microsoft FoxPro编译的源文件

G

GDM:铃声、口哨声和声音板模块格式

GetRight:GetRight未完成的下载文件

GHO:Norton 克隆磁盘映像

GID:Windows 95全局索引文件(包括帮助状态)

GIF:CompuServe位图文件

GL:动画格式

GRP:程序管理组

H

HEX:Macintosh BinHex20文件

HLP:帮助文件;Date CAD Windows帮助文件

HPP:C++程序头文件

HQX:Macintosh BinHex 40文件

HT:HyperTerminal(超级终端)

HTM,HTML:超文本文档

HTT:Microsoft超文本模板

HTX:扩展HTML模板

I

ICO:Windows图标

IDX:Microsoft FoxPro相关数据库索引文件;Symantec Q&A相关数据库索引文件;Microsoft Outlook

Express文件

IMG:GEM映像

INF:信息文件

INI:初始化文件;Mwave DSP Synth的“nwsynthini” GMS安装;Cravis Ultrasound bank安装

INP:Oracle 30版或早期版本的表单源代码

INRS:INRS远程通信声频

INS:InstallShield安装脚本;X-Internet签字文件;Ensoniq EPS字簇设备;Cell/ⅡMAC/PC抽样设备

INT:中间代码,当一个源程序经过语法检查后编译产生一个可执行代码

IOF:Findit文档

IQY:Microsoft Internet查询文件

ISO:根据ISD 9660有关CD-ROM文件系统标准列出CD-ROM上的文件

ISP:X-Internet签字文件

IST:数字跟踪设备文件

ISU:InstallShield卸装脚本

IT:脉冲跟踪系统音乐模块(MOD)文件

ITI:脉冲跟踪系统设备

ITS:脉冲跟踪系统抽样,Internet文档位置

IV:Open Inventor中使用的文件格式

IVD:超过20/20微观数据维数或变量等级文件

IVP:超过20/20的用户子集配置文件

IVT:超过20/20表或集合数据文件

IVX:超过20/20微数据目录文件

IW:Idlewild屏幕保护程序

IWC:Install Watch文档

J

J62:Ricoh照相机格式

JAR:Java档案文件(一种用于applet和相关文件的压缩文件)

JAVA:Java源文件

JAR:Java档案文件(一种用于applet和相关文件的压缩文件)

JAVA:Java源文件

JFF,JFIF,JIF:JPEG文件

JPE,JPEG,JPG:JPEG图形文件

JS:javascript源文件

JSP:HTML网页,其中包含有对一个Java servlet的参考

K

KAR:卡拉OK MIDI文件(文本+MIDI)

L

LAB:Visual dBASE标签文件

LBT,LBX:Microsoft FoxPro标签文件

LDB:Microsoft Access加锁文件

LHA:LZH更换文件后缀

LOG:日志文件

LZH:LH ARC压缩档案

M

M1V:MPEG相关文件(MIME"mpeg"类型)

M3D:Corel Motion 3D动画文件

M3U:MPEG URL(MIME声音文件)

MAM:Microsoft Access宏

MAQ:Microsoft Access查询文件

MAR:Microsoft Access报表文件

MBX:Microsoft Outlook保存email格式;Eudora邮箱

MCW:Microsoft Word的Macintosh文档

MDB:Microsoft Access数据库

MDN:Microsoft Access空数据库模板

MDW:Microsoft Access工作组文件

MID:MIDI音乐

MMM:Microsoft多媒体**

MOV:QuickTime for Windows**

MP2:第二层MPEG音频文件

MP3:第三层MPEG音频文件

MPA:MPEG相关文件,MIME“mpeg类型”

MPE,MPEG,MPG:MPEG动画文件

MPP:Microsoft工程文件;CAD绘图文件格式

MPR:Microsoft FoxPro菜单(已编译)

MSI:Windows 安装器包

MSN:Microsoft 网络文档;Descent Mission文件

O

OBD:Microsoft Office活页夹

OBJ:对象文件

OBZ:Microsoft Office活页夹向导

OCX:Microsoft对象链接与嵌入定制控件

ODS:Microsoft Outlook Express邮箱文件

OFT:Microsoft Outlook模板

OPX:OPL扩展DLL(动态链接库)

OSS:Microsoft Office查找文件

OST:Microsoft Exchange / Outlook 离线文件

P

PAL:压缩文件

PART:Go!Zilla部分下载文件

PAS:Pascal源代码

PCS:PICS动画文件

PDF:Adobe Acrobat

可导出文档格式文件(可用Web浏览器显示);Microsoft系统管理服务器包定义文件;NetWare打印机定义文件

PHP,PHP3:包含有PHP脚本的HTML网页

PHTML:包含有PHP脚本的HTML网页;由Perl分析解释的HTML

PM5:Pagemaker 50文件

PM6:Pagemaker 60文件

PPS:Microsoft Powerpoint幻灯片放映

PPT:Microsoft Powerpoint演示文稿

PRF:Windows系统文件,Macromedia导演设置文件

PSD:Adobe photoshop位图文件

PSM:Protracker Studio模型格式;Epic游戏的源数据文件

PST:Microsoft Outlook个人文件夹文件

PWL:Windows 95口令列表文件

Q

QIF:QuickTime相关图像(MIME);Quicken导入文件

QT,QTM:QuickTime**

QTI,QTIF:QuickTime相关图像

QTP:QuickTime优先文件

QTS:Mac PICT图像文件;QuickTime相关图像

QTX:QuickTime相关图像

R

RA:RealAudio声音文件

RAM:RealAudio元文件

RAR:RAR压缩档案(Eugene Roshall格式)

REC:录音机宏;RapidComm声音文件

REG:注册表文件

REP:Visual dBASE报表文件

RES:Microsoft Visual C++资源文件

RM:RealAudio视频文件

RMF:Rich Map格式(3D游戏编辑器使用它来保存图)

ROM:基于盒式磁带的家庭游戏仿真器文件(来自Atari

2600、Colecovision、Sega、Nintendo等盒式磁带里的ROM完全拷贝,在两个仿真器之间不可互修改)

Rxx:多卷档案上的RAR压缩文件(xx=1~99间的一个数字)

S

SAV:游戏保存文件

SB:原始带符号字节(8位)数据

SBK:Creative Labs的Soundfont 10 Bank文件;(Soundb laster)/EMU SonndFont v1x

Bank文件

SBL:Shockwave Flash对象文件

SCF:Windows Explorer命令文件

SCH:Microsoft Schedule+1

SCP:拨号网络脚本文件

SCR:Windows屏幕保护;传真图像;脚本文件

SFX:RAR自解压档案

SHTML:含有服务器端包括(SSI)的HTML文件

SPL:Shockwave Flash对象;DigiTrakker抽样

SQL:Informix SQL查询;通常被数据库产品用于SQL查询(脚本、文本、二进制)的文件扩展名

STM:shtml的短后缀形式,含有一个服务端包括(SSI)的HTML文件;Scream Tracker V2音乐模块(MOD)文件

STR:屏幕保护文件

SWA:在Macromedia导演文件(MP3文件)中的Shockwave声音文件

SWF:Shockwave Flash对象

SYS:系统文件

T

T64:Commodore 64仿真器磁带映像文件

THEME:Windows 95桌面主题文件

TIF,TIFF:标签图像文件格式(TIFF)位图

TMP:Windows临时文件

TRM:终端文件

TXT:ASCⅡ文本格式的声音数据

TZ:老的压缩格式文件

V

VBA:VBase文件

VBP:Microsoft Visual Basic工程文件

VBW:Microsoft Visual Basic工作区文件

VBX:Microsoft Visual Basic用户定制控件

VQE,VQL:Yamaha Sound-VQ定位器文件

VQF:Yamaha Sound-VQ文件(可能出现标准)

VRF:Oracle 7配置文件

VSL:下载列表文件(GetRight)

W

WAB:Microsoft Outlook文件

WAD:包含有视频、玩家水平和其他信息的DOOM游戏的大文件

WAL:Quake 2正文文件

WAV:Windows波形声形

WBK:Microsoft Word备份文件

WFM:Visual dBASE Windows表单

WFN:在CorelDRAW中使用的符号

WIZ:Microsoft Word向导

WRL:虚拟现实模型

WWL:Microsoft Word内插器文件

X

XLK:Microsoft Excel备份

XLL:Microsoft Excel内插器文件

XLM:Microsoft Excel宏

XLS:Microsoft Excel工作单

XLT:Microsoft Excel模板

XLV:Microsoft Excel VBA模块

XLW:Microsoft Excel工作簿/工作区

Z

ZAP:Windows软件安装配置文件

ZIP:Zip文件

000-999:用于为老版本(或备份)文件编号(比如:被安装程序改变的CONFIGSYS文件);又可用于为小范围的PC应用程序的多个用户相关数据文件编号

12M:Lotus 1-2-3 97 SmartMaster文件

123:Lotus 1-2-3 97文件

2D:VersaCAD的2维绘画文件

2GR,3GR:在Windows之下的VGA图形驱动程序/配置文件

386:在386或更高级处理器上使用的文件

3D:VersaCAD的3维绘画文件

3DM:3D NURBS建模器,Rhino

3DS:3D Studio(DOS下)格式文件

386:在386或更高级处理器上使用的文件

4GE:Informix 4GL编译后代码

4GL:Informix 4GL源代码

669:Composer 669;UNIX Composer音乐模型文件;669磁道模块

#01 及更高的号:为计算机演示而扫描的一系列**的文件编号方法

$$$:OS/2用来跟踪档案文件

@@@:用于安装过程中的屏幕文件和用于Microsoft Code view for C这样的应用程序的指导文件

//

// ISD4002-89c51开发板演示例程 C51版本

//

//

#include <reg51h>

sbit SS = P1^0; //片选

sbit SCLK = P1^1; //ISD4003时钟

sbit MOSI = P1^2; //数据输入

sbit MISO = P1^3; //数据输出

sbit LED = P1^7; //指示灯

sbit ISD_INT= P3^2; //中断

sbit AN = P1^6; //执行

sbit STOP = P1^5; //复位

sbit PR = P1^4; //PR=1录音 PR=0放音

void delay(unsigned int time) //延迟n微秒

{

while(time!=0)

{

time-- ;

}

}

void delayms(unsigned int time) //延迟n毫秒

{ TMOD=0x01;

for(time;time>0;time--)

{

TH0=0xfc;

TL0=0x18;

TR0=1;

while(TF0!=1)

{;}

TF0=0;

TR0=0;

}

}

//

//ISD4002 spi串行发送子程序,8位数据

//

void spi_send(unsigned char isdx)

{ unsigned char isx_counter;

SS=0; //ss=0,打开spi通信端

SCLK=0;

for(isx_counter=0;isx_counter<8;isx_counter++) //先发低位再发高位,依次发送。

{ if ((isdx&0x01)==1)

MOSI=1;

else

MOSI=0;

isdx=isdx>>1;

SCLK=1;

delay(2);

SCLK=0;

delay(2);

}

}

//

//发送stop指令

//

void isd_stop(void)

{ delay(10);

spi_send(0x30);

SS=1;

delayms(50);

}

//

//发送上电指令,并延迟50ms

//

void isd_pu(void)

{ delay(10);

SS=0;

spi_send(0x20);

SS=1;

delayms(50);

}

//

//发送掉电指令,并延迟50ms

//

void isd_pd(void)

{ delay(10);

spi_send(0x10);

SS=1;

delayms(50);

}

//

//发送play指令

//

void isd_play(void)

{

LED=0;

spi_send(0xf0);

SS=1;

}

//

//发送rec指令

//

void isd_rec(void)

{

LED=0;

spi_send(0xb0);

SS=1;

}

//

//发送setplay指令

//

void isd_setplay(unsigned char adl,unsigned char adh)

{

spi_send(adl); //发送放音起始地址低位

adh=adh|0xe0;

spi_send(adh); //发送放音起始地址高位

SS=1;

}

//

//发送setrec指令

//

void isd_setrec(unsigned char adl,unsigned char adh)

{

spi_send(adl); //发送放音起始地址低位

adh=adh|0xa0;

spi_send(adh); //发送放音起始地址高位

SS=1;

}

//

//芯片溢出,LED闪烁提醒停止录音

//

void isd_overflow(void)

{

while(AN==0)

{LED=1;

delayms(300);

LED=0;

delayms(300);

}

}

//

//检查芯片是否溢出(读OVF,并返回OVF值)

//

unsigned char chk_isdovf(void)

{

SS=0;

delay(2);

SCLK=0;

delay(2);

SCLK=1;

SCLK=0;

delay(2);

if (MISO==1)

{ SCLK=0;

SS =1; //关闭spi通信端

isd_stop(); //发送stop指令

return 1; //OVF为1,返回1

}

else

{ SCLK=0;

SS =1; //关闭spi通信端

isd_stop(); //发送stop指令

return 0; //OVF为0,返回0

}

}

//

//主程序

//功能:1录音时,按住AN键,LED点亮开始录音,松开AN即可停止录音

// 再次按下AN键,LED点亮开始录第二段音,依次类推,直到芯片溢出。

// 按stop键芯片复位

// 2放音时,按一下AN键,即播放一段语音。 按stop键芯片复位。

//

void main(void)

{unsigned char ovflog;

while(1)

{

P0=P1=P2=P3=0xff; //初始化

while (AN==1) //等待AN键按下

{

if (AN==0) //按键防抖动

{delayms(20);}

}

isd_pu(); //AN键按下,ISD上电并延迟50ms

isd_pd();

isd_pu();

if (PR==1) //如果PR=1则转入录音部分

{

delayms(500); //延迟录音

isd_setrec(0x00,0x00); //发送0x0000h地址的setplay指令

do

{ isd_rec(); //发送rec指令

delay(20);

while(AN==0) //等待录音完毕

{if (ISD_INT==0) //如果芯片溢出,进行LED闪烁提示,

isd_overflow(); //如果取消录音(松开AN键)则停止录音,芯片复位

}

if (ISD_INT==0)

break;

LED=1; //录音完毕,LED熄灭

isd_stop(); //发送停止命令

while(AN==1) //如果AN再次按下,开始录制下一段语音

{if(STOP==0) //如果按下STOP按键,则芯片复位

break;

if (AN==0)

delayms(500);

}

}while(AN==0);

}

else //如果PR==0则转入放音部分

{

while(AN==0){;}

isd_setplay(0x00,0x00); //发送setplay指令,从0x0000地址开始放音

do

{

isd_play(); //发送放音指令

delay(20);

while(ISD_INT==1) //等待放音完毕的EOM中断信号

{;}

LED=1;

isd_stop(); //放音完毕,发送stop指令

if (ovflog=chk_isdovf()) //检查芯片是否溢出 ,如溢出则停止放音,芯片复位

break;

while(AN==1) //等待AN键再次按下

{if (STOP==0)

 delayms(20);

 if (STOP==0)

  break;

if(AN==0)

delayms(20);

}

LED=0;

}while(AN==0); // AN键再次按下,播放下一段语音

}

isd_stop();

isd_pd();

}

}

/注意:与ISD4002/03不同的是,由于ISD4004芯片的语音地址是16位,在发送带地址指令(如setplay,setrec,setmc)时,需要先发送两个字节的地址信息,再发送一个字节的命令字,ISD4004的程序编写与ISD4002/03的区别,仅此而已。

//例如,ISD4004的setplay指令程序应为:

void isd_setplay(unsigned char adl,unsigned char adh)

{

delayms(1);

spi_send(adl); //发送放音起始地址低位

delay(2);

spi_send(adh); //发送放音起始地址高位

delay(2);

spi_send(0xe0); //发送setplay指令字节

SS=1;

}/

以上就是关于在u8中怎样通过isd来打补丁全部的内容,包括:在u8中怎样通过isd来打补丁、求控制ISD1820的stc89c52单片机程序、ISD1700 89C51单片机C51示例程序中 if(BUF_ISD&0X01) MOSI=1; else MOSI=0; 上述什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zz/10173000.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存