找回密码
 立即注册
查看: 43|回复: 4

请教15W404AS P1.7读外部电压,移植到15W408AS读不准

[复制链接]

该用户从未签到

1

主题

2

回帖

21

积分

新手上路

积分
21
发表于 2024-5-13 16:30:55 | 显示全部楼层 |阅读模式
本帖最后由 ZRH 于 2024-5-13 16:32 编辑

WORD code Vbg_ROM _at_ 0x0ff7;
//WORD idata Vbg_RAM_at_0xef;
#define ADC_POWER 0x80;
#define ADC_FLAG 0x10;
#define ADC_START 0x08;
#define ADC_SPEEDLL 0x00;
#define ADC_SPEEDL 0x20;
#define ADC_SPEEDH 0x40;
#define ADC_SPEEDHH 0x60;
uInt8 tim_t;

/*内部BandGap 参考电压约为1.25V*/
void ADC_Vx(){
    uInt16 ADCbg;
        uInt16 ADCx;
        uInt16 Vx;
        uInt8 tmp_ADC;
        ADCbg=0;
        ADCx=0;
                /*t通过ADC的第0通道测试外部输入电压的ADC测量值*/
                ADC_RES=0;//清除结果寄存器
                P1ASF=0x00; /*不设P1ASF,从的第9通道读取内部Bandgap电压的ADC测量值*/
        ADC_CONTR=0x80;        //        ADC_CONTR=ADC_POWER|ADC_SPEEDLL;
                Delay1ms();    //ADC上电后延时
            ADC_CONTR=0x88;//ADC_CONTR=ADC_POWER|ADC_SPEEDLL|0|ADC_START;
                ;//_NOP_();  //等待4个NOP
                ;//_NOP_();
                ;//_NOP_();
                ;//_NOP_();                 
                        while(!(ADC_CONTR & 0x10));//while(~(ADC_CONTR&ADC_FLAG)){;}//等待ADCZ转换完成
                ADC_CONTR&=~ADC_FLAG;                   //清除ADC标志
                ADCbg=ADC_RES;//ADCx=ADC_RES;
                //ADCbg = (((uInt16)ADC_RES << 2)|((uInt16)ADC_RESL&3)); //ADCbg=ADC_RES;

        /*t通过ADC的第0通道测试外部输入电压的ADC测量值*/
        ADC_RES=0;//清除结果寄存器
        P1ASF=0x80; /*设P1ASF,从的第7通道读取外部输入电压的ADC测量值*/
        ADC_CONTR=0x87;
        //Delay1ms();    //ADC上电后延时
    ADC_CONTR=0x8f;//        ADC_CONTR=ADC_POWER|ADC_SPEEDLL|0|ADC_START;
        ;//_NOP_();  //等待4个NOP
        ;//_NOP_();
        ;//_NOP_();
        ;//_NOP_();
        while(!(ADC_CONTR & 0x10));//        while(~(ADC_CONTR & ADC_FLAG));//等待ADCZ转换完成
        ADC_CONTR&=~ADC_FLAG;          //清除ADC标志
        ADCx=ADC_RES;//ADCx= (((uInt16)ADC_RES << 2)|((uInt16)ADC_RESL&3));//ADCx=ADC_RES;
        /*t通过公式计算外部输入的实际电压值*/
        //Vx=Vbg_RAM*ADCx/ADCbg;   // 使用RAM中的Bandgap的电压参数进行计算
      // Vx=Vbg_ROM*ADCx/ADCbg;   // 使用ROM中的Bandgap的电压参数进行计算
      tmp_ADC=Vbg_ROM/ADCbg;
     Vx=tmp_ADC*ADCx;
   
        /*处理计算结果
        */
       
        /*-5°~+17°附常温增益值 */
        if((Vx>450)&&(Vx<670)){
                da_c1=0;
                da_c2=1;
                }
        /*低于-10°附低温增益值 */       
        if((Vx<400)&&(Vx>100)){
                da_c1=1;
                da_c2=1;
                }
        /*高于22°附高温增益值 */               
        if(Vx>720){   
                da_c1=0;
                da_c2=0;
                }
                               
}
  

回复 送花

使用道具 举报

该用户从未签到

1

主题

2

回帖

21

积分

新手上路

积分
21
 楼主| 发表于 2024-5-13 16:32:08 | 显示全部楼层
本帖最后由 ZRH 于 2024-5-13 16:33 编辑

1
回复 送花

使用道具 举报

  • TA的每日心情
    开心
    2024-1-24 13:08
  • 签到天数: 1 天

    [LV.1]初来乍到

    8

    主题

    686

    回帖

    1160

    积分

    超级版主

    积分
    1160
    发表于 2024-5-13 16:50:12 | 显示全部楼层
    本帖最后由 STCAI-32位8051 于 2024-5-13 16:51 编辑

    截图202405131647474339.jpg

    可以先用范例程序测试;另外STC15W404AS核STC15W408AS 存储地址是不同的,需要注意
    STC官网:https://www.stcai.com/
    QQ:2593903262
    微信号:18106296598
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    2

    回帖

    21

    积分

    新手上路

    积分
    21
     楼主| 发表于 2024-5-13 17:20:05 | 显示全部楼层
    谢谢,地址改了,解决了
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-1-24 13:08
  • 签到天数: 1 天

    [LV.1]初来乍到

    8

    主题

    686

    回帖

    1160

    积分

    超级版主

    积分
    1160
    发表于 2024-5-14 09:45:47 | 显示全部楼层
    ZRH 发表于 2024-5-13 17:20
    谢谢,地址改了,解决了

    STC官网:https://www.stcai.com/
    QQ:2593903262
    微信号:18106296598
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-6-3 09:19 , Processed in 0.061578 second(s), 48 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表