wwwdege 发表于 2010-3-30 10:42:21

三星单片机10位 AD转换

三星8位单片机 有10位AD转换 转换结果存放在ADDATAH ADDATAL 中 ,其中ADDATAH存放高8位 ADDATAL存放低两位 现在疑问 低两位存放在ADDATAL中是以xx000000 形式存在还是以 000000xx的形式存在呢
我现在的形式是:
#define Uint        unsigned        int
#define Uchar        unsigned        char
#define Ulong        unsigned        long

.
.
.
Uchar i,h
Uint ADDATA;

ADCON = 0x77;         //开始转换,ad7通道,
while(!GET_BIT(ADCON,bit3));   //转换完成?
i = ADDATAH;//高八位
h=ADDATAL;// 低两位                                       
ADDATA=((Uint)i)<<2+h;//把i强制转换成Uint类型 //???这种做法符合语法吗

按照这种方式能不能得到10位的AD转换数据呢

halloween 发表于 2010-3-30 11:14:40

AdcData=( (ADDATAH<<2)+ADDATAL );

wwwdege 发表于 2010-3-30 20:12:17

回复【1楼】halloween
-----------------------------------------------------------------------

谢谢

billmcu 发表于 2012-10-25 18:50:02

u8 ADC_8Bit(u8 ch)
{
    ADCON = (ch << 4) | 0x04;
    NOP;NOP;
    ADCON |= 0x01;
    do
    {
      NOP;NOP;
    }while((ADCON & 0x08) == 0);
    return ADDATAH;
}

u16 ADC_10Bit(u8 ch)
{
    u16 ad_value;
    ADCON = (ch << 4)| 0x04;
    NOP;NOP;
    ADCON |= 0x01;
    do
    {
      NOP;NOP;
    }while((ADCON & 0x08) == 0);
    ad_value = ADDATAH;
    ad_value <<= 2;
    ad_value += ADDATAL;
    return ad_value;
}

关于三星单片机的问题可以到sambbs.com技术论坛交流
页: [1]
查看完整版本: 三星单片机10位 AD转换