找回密码
 立即注册
查看: 414|回复: 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
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:32
  • 最近打卡:2025-04-30 10:59:33

25

主题

1154

回帖

2391

积分

超级版主

积分
2391
发表于 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 | 显示全部楼层
谢谢,地址改了,解决了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:32
  • 最近打卡:2025-04-30 10:59:33

25

主题

1154

回帖

2391

积分

超级版主

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

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-4 10:26 , Processed in 0.121031 second(s), 73 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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