找回密码
 立即注册
查看: 300|回复: 8

求助 STC8G1K08A单片机 ADC 转换结果串口输出 始终为0 | 已解决

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

    [LV.1]初来乍到

    1

    主题

    2

    回帖

    11

    积分

    新手上路

    积分
    11
    发表于 2024-1-13 12:59:57 | 显示全部楼层 |阅读模式
    各位大佬好,有大神能帮我检查一下ADC的程序吗?谢谢!
    我正在学习单片机开发,我的需求是让单片机检测P3.3脚的电压,通过ADC转换,并用串口输出。
    P3.3和P3.2脚上万用表测量电压是1.420V和1.416V
    现在的问题是,上传单片机后,串口一直输出:
    1.                     ADC:0
    2.                     _____________
    3.                     ADC:0
    4.                     _____________
    5.                     ADC:0
    6.                     _____________
    7.                     ADC:0
    8.                     _____________
    复制代码
    我尝试更换引脚到P3.2、更改测量速度均为0。

    1. #include "STC8G.h"
    2. #include "stdio.h"
    3. #include "intrins.h"
    4. unsigned int Temp;
    5. void UART_Init() {  //串口模式初始化
    6.   SCON = 0x50;
    7.   TMOD = 0x00;  // 设置定时器1为模式0
    8.   TL1 = 0xE5;   // TL1存储低8位
    9.   TH1 = 0xFF;   // TH1存储高8位
    10.   TR1 = 1;      // 启动定时器1
    11.   AUXR = 0x40;  // 定时器1-1T模式
    12. }
    13. char putchar(char ch)   //定义printf串口发送函数
    14. {
    15.     SBUF = ch;          //串口1数据寄存器
    16.     while(TI == 0);     //串口1中断发送请求标志
    17.     TI = 0;
    18.     return ch;
    19. }
    20. void ADC_Init() {
    21.   P_SW2 |= 0x80;
    22.   ADCTIM = 0x3f;        //设置ADC内部时序
    23.   P_SW2 &= 0x7f;
    24.   ADC_CONTR = 0x8b;     //打开ADC电源、选择P3.3引脚
    25.   ADCCFG = 0x2f;
    26. }
    27. void Get_Temp() {
    28.   ADC_CONTR |= 0x40;                      //启动AD转换
    29.   _nop_();
    30.   _nop_();
    31.   while (!(ADC_CONTR & 0x20));            //查询ADC完成标志
    32.   ADC_CONTR &= ~0x20;                     //清完成标志
    33.   Temp = ADC_RESL;
    34.   Temp += ADC_RES*256;
    35.   printf("ADC:%u\n", Temp);
    36.   printf("_____________\n");
    37. }
    38. void main() {
    39. P3M0 = 0x00;   //设置P3.0、3.1串口为准双向口,其余为高祖输入
    40. P3M1 = 0xfc;
    41. UART_Init();
    42. ADC_Init();
    43.         while(1){
    44.                 Get_Temp();
    45.         }
    46. }
    复制代码



    1.PNG

    2.PNG

    3.PNG

    十分感激!

    回复 送花

    使用道具 举报

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

    [LV.7]常住居民III

    20

    主题

    1093

    回帖

    2603

    积分

    金牌会员

    积分
    2603
    发表于 2024-1-13 16:00:22 | 显示全部楼层
    P3.3 你试一试
    ADC_CONTR = 0x83;     //打开ADC电源、选择P3.3引脚
    1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
    参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
    技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 15:31
  • 签到天数: 157 天

    [LV.7]常住居民III

    5

    主题

    24

    回帖

    61

    积分

    注册会员

    积分
    61
    发表于 2024-1-13 16:44:35 | 显示全部楼层
    楼上正解
    截图202401131644269041.jpg
    回复 送花

    使用道具 举报

  • TA的每日心情
    难过
    2024-1-13 12:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    2

    回帖

    11

    积分

    新手上路

    积分
    11
     楼主| 发表于 2024-1-13 16:49:06 | 显示全部楼层
    _奶咖君_ 发表于 2024-1-13 16:00
    P3.3 你试一试
    ADC_CONTR = 0x83;     //打开ADC电源、选择P3.3引脚

    十分感谢,是我傻了,看错芯片的规格书了,按照您的指导修改后正常运行,麻烦您了,谢谢!
    附上正确的地址表:
    4.PNG

    点评

    看好你哟~  发表于 2024-1-13 17:40
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    难过
    2024-1-13 12:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    2

    回帖

    11

    积分

    新手上路

    积分
    11
     楼主| 发表于 2024-1-13 16:50:08 | 显示全部楼层

    感谢大佬帮忙,以后看规格书会更仔细一些,谢谢!
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    3

    主题

    9

    回帖

    95

    积分

    注册会员

    积分
    95
    发表于 2024-2-25 04:47:46 来自手机 | 显示全部楼层
    _奶咖君_ 发表于 2024-1-13 16:00
    P3.3 你试一试
    ADC_CONTR = 0x83;     //打开ADC电源、选择P3.3引脚

    ADC_CONTR |= 0x40;                      //启动AD转换
    这句为什么不需要修改为0x43
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 21:58
  • 签到天数: 111 天

    [LV.6]常住居民II

    10

    主题

    583

    回帖

    930

    积分

    高级会员

    积分
    930
    发表于 2024-2-25 08:03:29 | 显示全部楼层
    hjx5548 发表于 2024-2-25 04:47
    ADC_CONTR |= 0x40;                      //启动AD转换
    这句为什么不需要修改为0x43

    这句只是将ADC_CONTR.6即ADC_START这个位置1
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-3-15 13:23
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    0

    主题

    1

    回帖

    16

    积分

    新手上路

    积分
    16
    发表于 2024-3-5 14:05:54 | 显示全部楼层
    本帖最后由 Golf 于 2024-3-5 14:08 编辑

    为什么我用了你的程序他会一直处于检测ADC转换是否完成的那个循环那里,把循环屏蔽掉就可以正常运行了
    微信图片_20240305140720.png
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

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

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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