#include<reg51.h>
#include<stdio.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit rst= P1^0;
sbit clk= P1^1;
sbit sda= P1^2;
sbit sbt= P1^3;
sbit key0=P2^0;
sbit key1=P2^1;
sbit key2=P2^2;
sbit key3=P2^3;
uchar addr;
/*void delay_10us(uchar n)
{
do
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}while(--n);
}
void delay_ms(uchar m)
{
do
{
delay_10us(131);
}while(--m);
} */
void delay_ms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void delay_10us(uint xus)
{
uint i,j;
for(i=xus;i>0;i--)
for(j=10;j>0;j--);
}
void Voice_On(uchar addr,uchar addr0) //2线发地址和数据的程序
{
uchar i;
// rst=0;
// delay_ms(5);
// rst=1;
// delay_ms(300);
clk=0;
delay_ms(2);
for(i=0;i<8;i++)
{
clk=0;
sda=addr&0x80;
delay_10us(15);
clk=1;
delay_10us(15);
addr<<=1;
}
clk=0;
for(i=0;i<8;i++)
{
clk=0;
sda=addr0&0x80;
delay_10us(15);
clk=1;
delay_10us(15);
addr0<<=1;
}
// rst=1;
clk=1;
sda=1;
}
void key()
{
if(key0==0)
{
delay_ms(10);
if(key0==0)
{
while(!key0);
addr++;
if(addr==2)
addr=0;
Voice_On(0,addr);
}
}
if(key1==0)
{
delay_ms(10);
if(key1==0)
{
while(!key1);
addr--;
if(addr==-1)
addr=1;
Voice_On(0,addr);
}
}
if(key2==0)
{
delay_ms(10);
if(key2==0)
{
while(!key2);
Voice_On(0xff,0xfe);
}
}
if(key3==0)
{
delay_ms(10);
if(key3==0)
{
while(!key3);
Voice_On(0xff,0xff);
}
}
}
void main()
{
P1=0xff;
P2=0xff;
Voice_On(0,0x01);
// Voice_On(0xff,0xfe);
//Voice_On(0x00,0x01);
// Voice_On(0,0x00);
// Voice_On(0xff,0xfe);
// Voice_On(0x00,0x01);
while(1)
{
//key();
}
}
我这有个竞赛做过的程序,你改一下试试好使不
追问我现在有程序了,但编译出现了问题
语音播报.C(46): error C100: unprintable character 0xA3 skipped
语音播报.C(46): error C100: unprintable character 0xA9 skipped
网上说是在拼音状态下输入了字符,按//可以显示,我不知道怎么回事