/************SU*************/
/*******QQ774145445*********/
/********20170414***********/
/*****PWM实现语音播放*******/
/****************************************/
//1^1=0(^1取反)
//0^1=1
//1^0=1(^0不变)
//0^0=0
/****************************************/
#include <stc15.h>
#define B0 0x01
#define B1 0x02
#define B2 0x04
#define B3 0x08
#define B4 0x10
#define B5 0x20
#define B6 0x40
#define B7 0x80
/****************************************/
void yanshi();
void main()
{
/********串口1@9600@11059200*************/
PCON &= ~B6; //SMOD0清0
SCON |= B6|B4; //SM1方式1//串口允许
AUXR |= B2|B0; //不分频//定时器2
T2L = 0xE0; //设定定时初值
T2H = 0xFE; //设定定时初值
IE = B7|B4; //开中断//串口中断
AUXR |= B4; //启动定时器2
/**ADC初始化************************************************/
//P1M1 |=B2; //P1^2为高阻输入
//P1M0 &=~B2; //P1^2为高阻输入
P1ASF =0x01; //P1.0为A/D(只读存储器)
ADC_CONTR |=B7; //ADC_POWER 打开A/D电源
yanshi();
ADC_CONTR |=B5|B6; //SPEED1 SPEED0 90个时钟转换一次
//ADC_CONTR &=~B4; //ADC_FLAG 转换结束标志位(须软件清零)
//ADC_CONTR |=B3; //ADC_START 转换启动
//ADC_CONTR |=B1; //P1.2为A/D
//ADC_CONTR &=~(B2|B1|B0); //P1.0为A/D
//ADC_CONTR |=B3; //ADC_START 转换启动
//while (!(ADC_CONTR&B4));//等待转换结束//等待转换结束;;;;;;;;***这里写错了导致读回的为1024
//ADC_CONTR &=~B4; //ADC_FLAG 转换结束标志位(须软件清零)
//ADC_RES //高八位
//ADC_RESL //低二位
/****************************************/
for(;;)
{
ADC_CONTR |=B3; //ADC_START 转换启动
while (!(ADC_CONTR&B4));//等待转换结束//等待转换结束;;;;;;;;***这里写错了导致读回的为1024
ADC_CONTR &=~B4; //ADC_FLAG 转换结束标志位(须软件清零)
yanshi();
SBUF=ADC_RES;
yanshi();
SBUF=ADC_RESL;
yanshi();
}
}
/****************************************/
void duang() interrupt 4 //串口1中断
{
if(RI)
{
SBUF=P0=SBUF;
RI=0;
}
if(TI)
{
TI=0;
}
}
/****************************************/
void yanshi()
{
unsigned char za,zb,zc;
for(za=100;za>0;za--)
{
for(zb=100;zb>0;zb--)
{
for(zc=100;zc>0;zc--){}
}
}
}