该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我的单片机程序是这样写的,不知道怎么回事,只能播第一段语音:
#include
#define uint unsigned int
/****引脚连接定义****/
sbit KEY=P0^1;
sbit CLK=P1^0;
sbit RST=P0^0;
sbit SDA=P1^1;
/****延时函数****/
void delay1ms(uint count) //1MS 延时子程序
{
uint i,j,k;
for(k=count;k>0;k--)
for(i=2;i>0;i--)
for(j=248;j>0;j--);
}
void delay100us(uint count) //100US 延时子程序
{
uint i;
uint j;
for(i=count;i>0;i--)
for(j=50;j>0;j--);
}
Send_oneline(long int addr)
{
long int i;
RST=1;
CLK=1;
SDA=1;
delay1ms(5); /*延时5MS*/
RST=0;
delay1ms(5); /*复位延时5MS*/
RST=1;
delay1ms(300); /*延时300MS*/
CLK=0;
delay1ms(2); /*延时2MS*/
for(i=0;i<16;i++)
{
if(addr & 1)
{
CLK=0;
SDA=1;
delay100us(1); /* 100us */
CLK=1;
delay100us(1); /* 100us */
}
else
{
CLK=0;
SDA=0;
delay100us(1); /* 100us */
CLK=1;
delay100us(1); /* 100us */
}
addr=addr>>1;
}
SDA=1;
delay1ms(20);
}
main()
{
unsigned int FD=0;
while(1)
{ if(KEY==0)
{
delay1ms(10);
if(KEY==0) //通过按键P1.1 来进行发码值的递增
{
Send_oneline(FD);
FD++;
if(FD==4) //一线串口时,语音段暂时最多为4 段
{
FD=0;
}
while(KEY); //等待按键释放,以免一次按键误判成几次
}
}
}
}