找回密码
 立即注册
查看: 215|回复: 2

A/D多通道转换请教

[复制链接]
  • TA的每日心情
    难过
    2024-1-4 12:29
  • 签到天数: 2 天

    [LV.1]初来乍到

    3

    主题

    1

    回帖

    43

    积分

    新手上路

    积分
    43
    发表于 2024-2-27 16:23:18 | 显示全部楼层 |阅读模式
    #include <STC8G.H>//#include "STC8G.H"//#include "reg51.h"
    #include "intrins.h"
    #include<math.h> //包函abs绝对值函数
    unsigned char i=0; m1=0; X1=0; L1=0;m4=0; max=0; min=0xff; channel=0;//XIN_SU=0; LAO_SU=0; mX=0;
    unsigned int  up_sum=0;/*上升数和*/   down_sum=0; /*下降数和*/
    // 函数: u8   Get_ADC8bitResult(u8 channel) // 描述: 查询法读一次ADC结果. // 参数: channel: 选择要转换的ADC. // 返回: 8位ADC结果.
    unsigned char Get_ADC8bitResult(unsigned char channel)  //channel = 0~7  ADC初始化
    {         ADC_CONTR=0xe0;         //7=1电源开,6=1启动AD转换,5=1转换完成标志软件清0,
                    //ADC_RES = 0; ADC_RESL = 0;
                    ADC_CONTR=(ADC_CONTR & 0xe0)|channel;//1110 0010 7=1电源开,6=1启动AD转换,5=1转换完成标志软件清0,4与PWM相关,3:0(8G1K08A)ADC通道选择:0000=P3.0/ADC0;0001=P3.1/ADC1;0010=P3.2/ADC2;0011=P3.3/ADC3;0100=P5.4/ADC4;0101=P5.5/ADC5
        _nop_(); _nop_();  _nop_(); _nop_();
                    while((ADC_CONTR & 0x20) == 0)   //等AD转换完成
        ADC_CONTR &= ~0x20;           //清完成标志
        return  ADC_RES ;
    }
    void main()
    {         WDT_CONTR = 0x23; //7溢出标志,软件清零 5=1软/硬,启动看门狗定时器。4=1清零看门狗定时器,3=1IDLE 模式时看门狗继续计数,2-0分频系数    使能看门狗,溢出时间约为0.5s
                    P3M1 = 0x0C;//0000 1100  改P32/33高阻输入 P30/31推挽输出
                    P3M0 = 0x03;//0000 0011  01推挽输出;10高阻输入;00准双向口
                    P5M1 = 0x00;//0000 0000                                                                                                        0000 0000
                    P5M0 = 0x30;//1100 0000        P55 P54推挽输出                                  0000 0000准双向口
                    P5=0;       //P5输出=0;   
                    while (1)
                    {                /******* m1=Get_ADC8bitResult(2); //P32脚
                                    if( m1>30){        P54=1 ;} else{P54=0;}               
                   *********/                                
                                    X1=Get_ADC8bitResult(3); //P33脚                                
                                    if(X1>120){        P55=1 ;} else{P55=0;}               
                                    WDT_CONTR |= 0x10;// WDT_CONTR = 0x34; //5=1软/硬,启动看门狗定时器。 4=1清零看门狗定时器  清看门狗,否则系统复位IDLE     WDT_CONTR |= 0x10
    }                }
    //为何不想取不同通道 P32 P33值,变成了都是P32脚的值了???如下单通道都正常
    /*********单独用P33输入 P55输出正常
                    {                        // m1=Get_ADC8bitResult(2); //P32脚
                                            //if( m1>30){        P54=1 ;} else{P54=0;}               
                                  
                                            X1=Get_ADC8bitResult(3); //P33脚                                
                                            if(X1>120){        P55=1 ;} else{P55=0;}               
                                    WDT_CONTR |= 0x10;// WDT_CONTR = 0x34; //5=1软/硬,启动看门狗定时器。 4=1清零看门狗定时器  清看门狗,否则系统复位IDLE     WDT_CONTR |= 0x10
                    }                 
    ******/
    /*********单独用P32输入 P54输出正常
                    {                        // m1=Get_ADC8bitResult(2); //P32脚
                                            //if( m1>30){        P54=1 ;} else{P54=0;}               
                                  
                                            X1=Get_ADC8bitResult(3); //P33脚                                
                                            if(X1>120){        P55=1 ;} else{P55=0;}               
                                    WDT_CONTR |= 0x10;// WDT_CONTR = 0x34; //5=1软/硬,启动看门狗定时器。 4=1清零看门狗定时器  清看门狗,否则系统复位IDLE     WDT_CONTR |= 0x10
                    }                 
    ******/

    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    3 天前
  • 签到天数: 101 天

    [LV.6]常住居民II

    41

    主题

    1016

    回帖

    6971

    积分

    荣誉版主

    冲哥视频教程和各种开源资料QQ交流群884047237,可群

    积分
    6971
    QQ
    发表于 2024-2-27 16:41:19 | 显示全部楼层
    不应该啊, 建议先看看范例程序,看下来你的adc都没有初始化诶。先好好看看这个
    截图202402271641107769.jpg

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 143 天

    [LV.7]常住居民III

    27

    主题

    1343

    回帖

    4187

    积分

    论坛元老

    积分
    4187
    发表于 2024-2-27 18:02:57 | 显示全部楼层
    参考开天斧例程包例子:08-16路ADC轮询-每路16次ADC转换取中间8次求平均值-串口1返回结果
    论坛下载地址:
    https://www.stcaimcu.com/plugin. ... /~cateid=8&key=
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-20 01:04 , Processed in 0.059126 second(s), 41 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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