STC 51单片机63——关于STC8H的ADC通道切换问题

使用STC8H时,发现在ADC中断中只能使用一个通道,即使切换了通道,那么数据要不为0,要不就是原先通道的电压。查阅手册,内容并不多,没有发现专门提到的问题。只能去试试,最后发现在ADC中断中,切换通道时,必须先关闭ADC,否则就会失败。以下代码:

void IOInit()

{

    P0M0 = 0x00;

    P0M1 = 0x07; //P0.0、P0.1、P0.2为ADC

    P1M0 = 0x00;

    P1M1 = 0x00;

    P2M0 = 0x00;

    P2M1 = 0x00;

    P3M0 = 0x00;

    P3M1 = 0x00;

    P4M0 = 0x00;

    P4M1 = 0x00;

    P5M0 = 0x00;

    P5M1 = 0x00;

      

         P1PU |=  0x03; //使能P1.0、P1.1的内部4.1k上拉电阻

        // P1NCS |=  0x03; //禁止施密特触发

        // P1SR &=  ~0x03; //电平转换速度快

        // P1DR &=  ~0x03; //增强电流

//      P1IE |=  0x01; //数字输入

}     

volatile u16 AdcChannel=0x48; //P0.0口AD转换

void AdcInit(void)

{

    P_SW2 |= 0x80;  //使能访问扩展RAM区特殊功能寄存器XFR

    ADCTIM = 0xbf;  //设置ADC内部时序,32个ADC工作时钟

       ADCEXCFG = 0x07; //16次AD平均值,进入中断

    P_SW2 &= 0x7f;  //禁止访问

    ADCCFG = 0x2f;  //设置ADC时钟为系统时钟/2/16,ADC数据右对齐

    ADC_CONTR = 0x80;   //使能ADC模块

    EADC = 1;        //使能ADC中断

    EA = 1;

    ADC_CONTR |= AdcChannel;  //启动P0.0口AD转换

}

// 交叉采集P00和P02的ADC数据,必须先关闭ADC!

u16 AdcValue=0,Adc8=0,Adc10=0;

u16 Ai=0,Aj=0,An=20; //An<300。如果An是u32,那么计算速度会很慢。

//只做了P0.0的ADC

void ADC_Isr() interrupt 5 //

{

         ADC_CONTR=0; //选择不同的通道,需要先关闭ADC,不然转化会出错!!!

    AdcValue = (ADC_RES<<8)+ADC_RESL;    //读取ADC结果

        

         if(AdcChannel==0x48){

                Adc8=Adc8+AdcValue;

                AdcChannel=0x4a;

              }     

              else{

                Adc10=Adc10+AdcValue;

                AdcChannel=0x48;

              }

                    

         Ai++;

         if(Ai>An){         

                     Ai=0;

                     Adc8=Adc8/An*2;

                     Adc10=Adc10/An*2;

//                  ShowU16(Adc8);

//                  ShowU16(Adc10);

//                  SendU8('\r');

//                  SendU8('\n');                     

                     if(Adc8>50){  //注意:该阈值可能随代码的增多而改变。

                                   Stop1_2=5;//限制步进电机转动

                                   STBY1=0;//步进电机1驱动失能;

                                   STBY2=0;//步进电机2驱动失能;                       

                     }     

//                  if(Adc10>270){  //电推杆检测效果不好,不建议使用

//                                Stop3_4=5;//限制推杆电机运动

//                                STBY3=0;//推杆电机驱动失能;                          

//                  }                   

                     Adc8=0;

                     Adc10=0;                      

         }

    ADC_CONTR=0x80;

    ADC_CONTR |= AdcChannel;     //继续AD转换

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/19827.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据处理如何入门

大数据处理的入门可以从以下几个方面入手&#xff1a; 1. 基础知识学习 在深入大数据领域之前&#xff0c;建议先掌握一些基础知识&#xff0c;包括数据类型、存储与处理的基本概念&#xff0c;以及常用的数据处理工具。例如&#xff0c;Python或Java编程语言在大数据领域应用…

Logistic Regression 逻辑回归中的sigmoid函数是什么?

Sigmoid函数是一种在数学、计算机科学,尤其是在机器学习和深度学习领域广泛应用的函数,以下是关于它的详细介绍: 定义与公式 Sigmoid函数的数学表达式为: S ( x ) = 1 1 + e − x S(x)=\frac{1}{1 + e^{-x}} S(x)=1+e−x1​,其中 x x x 可以是一个实数、向量或矩阵。当 …

什么是Spring Boot?

Spring Boot 是基于 Spring 框架的扩展工具&#xff0c;旨在简化 Spring 应用的初始搭建和开发流程。它通过约定优于配置和自动装配机制&#xff0c;减少了传统 Spring 开发中的繁琐配置&#xff0c;使开发者能快速构建独立运行、生产级别的应用。 Spring Boot 的核心特性 自动…

后端生成二维码,前端请求接口生成二维码并展示,且多个参数后边的参数没有正常传输问题处理

一、后端代码 1、controller GetMapping("/generateQRCode/{url}")ApiOperation(value "生成url链接二维码",notes "生成url链接二维码")public JsonResult<NewsQRCodeVo> generateQRCode(PathVariable String url,HttpServletRespons…

计算机网络(3)TCP格式/连接

1、TCP三大特点&#xff1a;面向连接、可靠、基于字节流 2、如何唯一确定一个TCP连接&#xff1f;TCP四元组&#xff1a;源地址、源端口、目的地址、目的端口 源地址和目标地址的字段(32 位)是在 IP 头部中&#xff0c;作用是通过 IP 协议发送报文给对方主机源端口和目标端口…

Visual Studio Code使用ai大模型编成

1、在Visual Studio Code搜索安装roo code 2、去https://openrouter.ai/settings/keys官网申请个免费的配置使用

Flowith.io 初探:DeepSeek-R1免费用,用画布式 AI 提升效率和创意

摘要 介绍了 Flowith.io&#xff0c;一款创新的画布式 AI 平台&#xff0c;旨在提升效率和创意。它通过独特的画布交互、Oracle AI 系统、知识花园和丰富的模型选择&#xff0c;为用户提供全新的 AI 体验。画布交互打破线性思维&#xff0c;Oracle AI 帮助任务拆解与执行&#…

JavaEE-SpringBoot快速入门

文章目录 本节目标Maven什么是Maven创建一个Maven项目maven项目功能maven的依赖管理全球仓库, 私服, 本地服务器, 配置国内镜像 第一个SpringBoot项目创建项目运行SpringBoot程序 SpringBoot原理初步Web服务器 总结 本节目标 了解什么是maven, 配置国内源使用Springboot创建项…

Win11配置wsl、ubuntu、docker

系统要求 安装WSL。 开通虚拟化&#xff1a; 准备工作 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartdism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestartwsl --set-default-versi…

数据结构 day02

3. 线性表 3.1. 顺序表 3.1.3. 顺序表编程实现 操作&#xff1a;增删改查 .h 文件 #ifndef __SEQLIST_H__ #define __SEQLIST_H__ #define N 10 typedef struct seqlist {int data[N];int last; //代表数组中最后一个有效元素的下标 } seqlist_t;//1.创建一个空的顺序表 seq…

C# 两种方案实现调用 DeepSeek API

目录 序 开发运行环境 访问API的一个通用方法 原生官网实现 申请 API key 调用实现 调用示例 腾讯云知识引擎原子调用 申请 API key 调用示例 小结 序 DeepSeek&#xff08;深度求索&#xff09; 最近可谓火爆的一塌糊涂&#xff0c;具体的介绍这里不再赘述&#x…

23. AI-大语言模型

文章目录 前言一、LLM1. 简介2. 工作原理和结构3. 应用场景4. 最新研究进展5. 比较 二、Transformer架构1. 简介2. 基本原理和结构3. 应用场景4. 最新进展 三、开源1. 开源概念2. 开源模式3. 模型权重 四、再谈DeepSeek 前言 AI‌ 一、LLM LLM&#xff08;Large Language Mod…

web前端第三次作业:登录窗口拖动效果

<!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>登录窗口拖动效果</title> <style>…

【PCIe 总线及设备入门学习专栏 1.1 -- PCI 设备访问方法】

文章目录 CPU 地址空间与PCI 地址空间PCI 地址空间CPU 地址空间Host Bridge PCI 设备连接框图PCI 硬件信号Configuration Commands CPU 地址空间与PCI 地址空间 PCI 地址空间 PCI总线具有32位数据/地址复用总线&#xff0c;所以其存储地址空间为2的32次方4GB。也就是PCI上的所…

CentOS 7超详细安装教程(含镜像)

1. 安装前准备 1.1 CentOS简介 CentOS&#xff08;Community Enterprise Operating System&#xff0c;中文意思是&#xff1a;社区企业操作系统&#xff09;是一种基于 Red Hat Enterprise Linux&#xff08;RHEL&#xff09;源代码构建的免费开源操作系统。它在稳定性、安全…

【Linux】详谈 进程控制

目录 一、进程是什么 二、task_struct 三、查看进程 四、创建进程 4.1 fork函数的认识 4.2 2. fork函数的返回值 五、进程终止 5.1. 进程退出的场景 5.2. 进程常见的退出方法 5.2.1 从main返回 5.2.1.1 错误码 5.2.2 exit函数 5.2.3 _exit函数 5.2.4 缓冲区问题补…

音视频入门基础:RTP专题(9)——FFmpeg接收RTP流的原理和内部实现

一、引言 由《音视频入门基础&#xff1a;RTP专题&#xff08;2&#xff09;——使用FFmpeg命令生成RTP流》可以知道&#xff0c;推流端通过下面FFmpeg命令可以将一个媒体文件转推RTP&#xff0c;生成RTP流&#xff1a; ffmpeg -re -stream_loop -1 -i input.mp4 -vcodec cop…

大模型Deepseek的使用_基于阿里云百炼和Chatbox

目录 前言1. 云服务商2. ChatBox参考 前言 上篇博文中探索了&#xff08;本地&#xff09;部署大语言模型&#xff0c;适合微调、数据高隐私性等场景。随着Deepseek-R1的发布&#xff0c;大语言模型的可及性得到极大提升&#xff0c;应用场景不断增加&#xff0c;对高可用的方…

zookeeper watch

目录 回顾回调&观察者模式&发布订阅模式Zookeeper 客户端/ 服务端 watchgetChildren 为例最后归纳 回顾回调&观察者模式&发布订阅模式 回调的思想 类A的a()方法调用类B的b()方法类B的b()方法执行完毕主动调用类A的callback()方法 回调分为同步回调和异步回调…

PAT乙组(1016 部分A+B 1017 A除以B)C语言超详细

文章目录 1016 部分AB1017 A除以B 1016 部分AB 输入样例 1&#xff1a; 3862767 6 13530293 3输出样例 1&#xff1a; 399输入样例 2&#xff1a; 3862767 1 13530293 8输出样例 2&#xff1a; 0代码长度限制 16 KB 时间限制 150 ms 内存限制 64 MB 栈限制 8192 KB 思路解析…