找回密码
 立即注册
查看: 481|回复: 3

AD转换请教

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-04-29 10:00:29
已绑定手机

12

主题

29

回帖

206

积分

中级会员

积分
206
发表于 2024-1-4 12:32:47 | 显示全部楼层 |阅读模式
//STC8G1K08A   想用P3.2脚输入电压测试AD转换情况,用其他脚来观看输出状态
#include <STC8G.H>//#include "STC8G.H"//#include "reg51.h"
#include "intrins.h"
unsigned char m1=0;
void main()
{         P3M1 = 0x04;//0000 0100
    P3M0 = 0x00;//1111 1011  01推挽输出;10高阻输入;设置P3.2为ADC口,其他为输出
    P5M1 = 0x00;//0000 0000
    P5M0 = 0x0F;//0000 1111推挽输出
    ADC_CONTR = 0xCA; //11XX 0000  7=1电源开,6=1启动AD转换, 3-0=0000,P3.2为AD位
    ADCCFG = 0x0f; //XX0X 1111 B5=0左对齐高8位,低4位,设置ADC时钟为系统时钟/2/16       
                P_SW2 |= 0x80;//何用?
                ADCTIM = 0x3f; //001 01010设置ADC内部时序 全用默认值
                P_SW2 &= 0x7f;//何用?
                EADC = 1;
                EA = 1; //使能ADC中断
                while (1)
                {         }                 
}                                                                                  
void ADC_Isr() interrupt 5
{   P55=!P55;//判断是否进中断
          ADC_CONTR &= ~0x20;  //0010 0000取反1101 1111 清中断标志
                ADC_CONTR |= 0x40;                          //继续AD转换
                m1= ADC_RES;  //读取ADC结果高8位
                if(m1<40){        P30=!P30;  }
                if(80<m1<160){ P31=!P31;          }
                if(m1>200){         P33=!P33 ;   }//  P54=!P54 ;
} //看到了P55有方波输出,说明已进中断,同时P30/31相同波形,
//为何调节电压0-5V变化,P33没输出方波,P30 P31也不变化?不知是那里搞错了,请多指教!
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:394
  • 最近打卡:2025-05-06 07:53:41

45

主题

381

回帖

1587

积分

金牌会员

静坐常思己过,闲谈莫论人非

积分
1587
发表于 2024-1-4 13:17:03 | 显示全部楼层
本帖最后由 rengran 于 2024-1-4 13:33 编辑

截图202401041331463627.jpg 截图202401041332295655.jpg
你端口配置有问题吧。
处事要代人所想,读书需切己用功
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:416
  • 最近打卡:2025-05-06 08:57:51
已绑定手机

39

主题

2010

回帖

6857

积分

论坛元老

积分
6857
发表于 2024-1-4 13:22:50 | 显示全部楼层
本帖最后由 乘风飞扬 于 2024-1-4 13:26 编辑

STC8G1K08A的P3.2对应的是ADC2, 应该设置 ADC_CONTR = 0xC2;
截图202401041322402100.jpg
截图202401041321274942.jpg

P_SW2的最高位是扩展寄存器访问使能,读写扩展寄存器前要使能。
ADCTIM寄存器属于扩展寄存器,所以设置ADCTIM前要设置扩展寄存器访问使能。
设置完后是可以不用关闭的,一直开着就行。
截图202401041324521063.jpg


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-04-29 10:00:29
已绑定手机

12

主题

29

回帖

206

积分

中级会员

积分
206
发表于 2024-1-4 15:18:56 | 显示全部楼层
谢了,是搞错了。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-6 23:37 , Processed in 0.109655 second(s), 72 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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