?? isd1700.c
字號:
#include "Includes.h"
//unsigned char ISDEvent=0;
//unsigned char ISDEvent2=0;
#define uint unsigned int
#define uchar unsigned char
void delay_50us(uint time1)
{
unsigned char i;
for(time1;time1>0;time1--)
{
//for(i=0;i<12;i++) 22.1184
for(i=0;i<6;i++) //11.0592 2007.12.03
{
_nop_();
}
}
}
void delay(uint msec)
{
for (msec; msec > 0; msec--)
{
// clrwatchdog();
delay_50us(20);
}
}
uchar spio(uchar BUF_ISD) //shaoliang
{
uchar i,dat=BUF_ISD;
SCLK=1;
SS=0;
for(i=0;i<8;i++)
{
SCLK=0;
_nop_(); _nop_();_nop_(); _nop_(); _nop_();
if(dat&0X01) MOSI=1;
else MOSI=0;
dat>>=1;
if(MISO)
dat=(dat|0X80);
SCLK=1;
_nop_(); _nop_(); _nop_(); _nop_();_nop_();
}
MOSI=0;
return(dat);
}
void rdstatus()
{
spio(0x05);
spio(0x00);
spio(0x00);
SS=1;
//delay(100); //延遲100ms
//SR0_L=spio(0x05);
//SR0_H=spio(0x00);
//SR1=spio(0x00);
}
void clrint()
{
spio(0x04); spio(0x00); SS=1;
}
void pu() //power up
{
spio(0x01); spio(0x00); SS=1;
delay(120);
//delay(60);
}
void pd() //power down
{
spio(0x07); spio(0x00); SS=1;
delay(100);
}
void reset()
{
spio(0x03); spio(0x00); SS=1;
delay(100);
}
void chk_mem()
{
spio(0x49); spio(0x00); SS=1; delay(150);
}
void wr_apc2() //aux輸出 音量最大000 command d7:d0 d11:d8
{
unsigned char SR0_L;
spio(0x65); spio(0x80); spio(0x04); // d7:d0 d11:d8
SS=1; delay(5) ;
spio(0x05);
spio(0x00);
spio(0x00);
SS=1;
SR0_L=0;
SR0_L=spio(0x05);
if((SR0_L&0x01)==0x01)
{
wr_apc2();
}
wr_nvcfg();
}
void wr_apc1() //線路輸入, aux 輸出
{
spio(0x45); spio(0xc0); spio(0x04); // d7:d0 d11:d8
SS=1; delay(1) ;
}
/*
void rd_apc()
{
spio(0x44);spio(0x00); spio(0x00);spio(0x00);
SS=1;
spio(0x44);spio(0x00); APCL=spio(0x00);APCH=spio(0x00);
}
void playall()
{
spio(0x40); spio(0x00); SS=1;
}
void rec()
{
spio(0x41); spio(0x00); SS=1;
}
void erase()
{
spio(0x42); spio(0x00); SS=1;
}
void eraseall()
{
spio(0x43); spio(0x00); SS=1;
}
void rd_play_ptr()
{
spio(0x06); spio(0x00); spio(0x00); spio(0x00);
SS=1;
}
void devid()
{
spio(0x09);spio(0x00);spio(0x00);
SS=1;
spio(0x09);spio(0x00);ID=spio(0x00);
}
senddata()
{
SBUF=SR0_L; while(TI==0); TI=0;
SBUF=SR0_H ; while(TI==0); TI=0;
SBUF=SR1; while(TI==0); TI=0;
}
*/
void stop()
{
spio(0x02);spio(0x00); SS=1;
}
/*void setplay(uchar segment)
{
stop();
clrint();
chk_mem();
switch (segment)
{
case 1:
spio(0x80);spio(0x00); spio(0x10);spio(0x00);spio(0x2a);spio(0x00);SS=1;
break;
case 2:
spio(0x80);spio(0x00); spio(0x2B);spio(0x00);spio(0x41);spio(0x00);SS=1;
break;
case 3:
spio(0x80);spio(0x00); spio(0x42);spio(0x00);spio(0x4e);spio(0x00);SS=1;
break;
case 4:
spio(0x80);spio(0x00); spio(0x4F);spio(0x00);spio(0x62);spio(0x00);SS=1;
break;
case 5:
spio(0x80);spio(0x00); spio(0x63);spio(0x00);spio(0x70);spio(0x00);SS=1;
break;
case 6:
spio(0x80);spio(0x00); spio(0x71);spio(0x00);spio(0x80);spio(0x00);SS=1;
break;
case 7:
spio(0x80);spio(0x00); spio(0x81);spio(0x00);spio(0x9e);spio(0x00);SS=1;
break;
case 8:
spio(0x80);spio(0x00); spio(0x9F);spio(0x00);spio(0xaf);spio(0x00);SS=1;
break;
case 9:
spio(0x80);spio(0x00); spio(0xB0);spio(0x00);spio(0xBc);spio(0x00);SS=1;
break;
case 10:
spio(0x80);spio(0x00); spio(0xBD);spio(0x00);spio(0xCB);spio(0x00);SS=1;
break;
default:
spio(0x80);spio(0x00); spio(0x10);spio(0x00);spio(0x2a);spio(0x00);SS=1;
break;
}
}*/
void setplay(uchar segment)
{
stop();
clrint();
chk_mem();
switch (segment)
{
case 0: //播放4元
spio(0x80);spio(0x00); spio(0x10);spio(0x00);spio(0x1a);spio(0x00);SS=1;
break;
case 1: //卡片無效 //播放4元
spio(0x80);spio(0x00); spio(0x1b);spio(0x00);spio(0x27);spio(0x00);SS=1;
break;
case 2: //學生卡 //卡片無效
spio(0x80);spio(0x00); spio(0x28);spio(0x00);spio(0x32);spio(0x00);SS=1;
break;
case 3: //新高職 //學生卡
spio(0x80);spio(0x00); spio(0x33);spio(0x00);spio(0x3d/*0x3D*/);spio(0x00);SS=1;
break;
case 4: //記名卡 //新高職
spio(0x80);spio(0x00); spio(0x3e);spio(0x00);spio(0x49);spio(0x00);SS=1;
break;
case 5: //家屬卡 //記名卡
spio(0x80);spio(0x00); spio(0x49);spio(0x00);spio(0x53);spio(0x00);SS=1;
break;
case 6: //教工卡 //家屬卡
spio(0x80);spio(0x00); spio(0x54);spio(0x00);spio(0x5D);spio(0x00);SS=1;
break;
case 7: //臨時卡 //教工卡
spio(0x80);spio(0x00); spio(0x5E);spio(0x00);spio(0x67);spio(0x00);SS=1;
break;
case 8: //無效卡 //臨時卡
spio(0x80);spio(0x00); spio(0x68);spio(0x00);spio(0x71);spio(0x00);SS=1;
case 9: //1 //無效卡
spio(0x80);spio(0x00); spio(0x72);spio(0x00);spio(0x76);spio(0x00);SS=1;
break;
//case 10:
// spio(0x80);spio(0x00); spio(0xBD);spio(0x00);spio(0xCB);spio(0x00);SS=1;
// break;
default:
//spio(0x80);spio(0x00); spio(0x10);spio(0x00);spio(0x2a);spio(0x00);SS=1;
break;
}
}
void wr_nvcfg()
{
spio(0x46);spio(0x00); SS=1;
}
unsigned char initisd1700()
{
unsigned char data ISDEvent=0,SR0_L;
dd: pu(); //上電
//rdstatus();
spio(0x05);
spio(0x00);
spio(0x00);
SS=1;
SR0_L=0;
//delay(100); //延遲100ms
SR0_L=spio(0x05);
//SR0_H=spio(0x00);
if((((SR0_L&0x04)==0x00)||((SR0_L&0x01)==0x01)) &&ISDEvent!=1)
{
ISDEvent++;
reset();
pd();
goto dd;
}
chk_mem();
wr_apc1();
wr_nvcfg();
if(ISDEvent==1) return 1;
else return 0;
//ISDEvent=0;
}
/*
void isdmain()
{
uchar serial=0;
uint aa=0;
delay(1000);
TMOD=0x20;
TL1=0xfd;TH1=0xfd; //波特率9600 8數據 1停止
SCON=0xd8;PCON=0x00;
TR1=1;
P0=0xFF;P2=0xFF; MOSI=0;
LED1=0;
SBUF=0x55;while(TI==0); TI=0;
SBUF=0xAA;while(TI==0); TI=0;
dd: pu(); //上電
rdstatus();
senddata();
// SBUF=SR0_L; while(TI==0); TI=0; //////////////////
if(PU_1700==0||CMD_ERR==1)
{
reset();
pd();
SBUF=0xAB; while(TI==0); TI=0; //
goto dd;
}
clrint();
rdstatus();
senddata();
devid();
SBUF=0xDD; while(TI==0); TI=0; //////////////////
SBUF=ID; while(TI==0); TI=0;
// wr_apc1();
rd_apc();
SBUF=0xAC; while(TI==0); TI=0;
SBUF=APCH; while(TI==0); TI=0;
SBUF=APCL; while(TI==0); TI=0;
aa: setplay(1);
rdstatus();
senddata(); //////////////////
if(CMD_ERR==1)
{
clrint();
SBUF=0xBC; while(TI==0); TI=0;
goto aa;
}
while(1)
{
if(key3==0)delay(20);
{
if(key3==0)
{
clrint();
chk_mem();
while(key3==0)
{
rec();
rdstatus();
while(REC_1700)
{
delay(50);
LED1=!LED1;
SBUF=0xCD; while(TI==0); TI=0;
}
}
clrint();
stop();
//delay(50);LED1=!LED1;
}
}
if(key1==0) delay(20) ;
{
if(key1==0)
{
// stop();
cc: chk_mem();
playall();
clrint();
rdstatus();
senddata();
if(CMD_ERR)
{
SBUF=0xBC; while(TI==0); TI=0;
goto cc;
}
while(key1==0);
}
}
LED2=!LED2; delay(50);//SBUF=0x1a;while(TI==0); TI=0;
}
}
*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -