34af9uc的个人空间 https://bbs.21ic.com/?818997 [收藏] [复制] [RSS]

日志

今天又重新写了一下ADC和串口程序

已有 132 次阅读2019-3-15 22:05 |系统分类:兴趣爱好



ADC采集串口返回采集值
/************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--){}
        }


}




}

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)