STC8系列单片机内部集成了一个12位的15通道A/D转换器,使用STC8内部ADC时,要使AVref连接参考电压,ADC_AVcc和ADC_AGnd接好电源和地线!

内部ADC引脚可参考芯片手册ADC_CHS寄存器配置可得知

参考例程

#include <STC8.h>
#include <intrins.h>
#include <stdio.h>#define uchar unsigned char
#define uint unsigned int/*常量宏定义*/
#define FOSC        11059200    //MCU晶振
#define BAUD_RATE   115200      //波特率设置
#define BRT         (65536 - FOSC / BAUD_RATE / 4)//计算公式//========================================================================
//                            端口模式设置
//========================================================================
//准双向口
#define  P0_MODE_IO_PU(Pin)             P0M1 &= ~(Pin), P0M0 &= ~(Pin);
#define  P1_MODE_IO_PU(Pin)             P1M1 &= ~(Pin), P1M0 &= ~(Pin);
#define  P2_MODE_IO_PU(Pin)             P2M1 &= ~(Pin), P2M0 &= ~(Pin);
#define  P3_MODE_IO_PU(Pin)             P3M1 &= ~(Pin), P3M0 &= ~(Pin);
#define  P4_MODE_IO_PU(Pin)             P4M1 &= ~(Pin), P4M0 &= ~(Pin);
#define  P5_MODE_IO_PU(Pin)             P5M1 &= ~(Pin), P5M0 &= ~(Pin);
#define  P6_MODE_IO_PU(Pin)             P6M1 &= ~(Pin), P6M0 &= ~(Pin);
#define  P7_MODE_IO_PU(Pin)             P7M1 &= ~(Pin), P7M0 &= ~(Pin);
//高阻输入
#define  P0_MODE_IN_HIZ(Pin)            P0M1 |= (Pin), P0M0 &= ~(Pin);
#define  P1_MODE_IN_HIZ(Pin)            P1M1 |= (Pin), P1M0 &= ~(Pin);
#define  P2_MODE_IN_HIZ(Pin)            P2M1 |= (Pin), P2M0 &= ~(Pin);
#define  P3_MODE_IN_HIZ(Pin)            P3M1 |= (Pin), P3M0 &= ~(Pin);
#define  P4_MODE_IN_HIZ(Pin)            P4M1 |= (Pin), P4M0 &= ~(Pin);
#define  P5_MODE_IN_HIZ(Pin)            P5M1 |= (Pin), P5M0 &= ~(Pin);
#define  P6_MODE_IN_HIZ(Pin)            P6M1 |= (Pin), P6M0 &= ~(Pin);
#define  P7_MODE_IN_HIZ(Pin)            P7M1 |= (Pin), P7M0 &= ~(Pin);
//漏极开路
#define  P0_MODE_OUT_OD(Pin)            P0M1 |= (Pin), P0M0 |= (Pin);
#define  P1_MODE_OUT_OD(Pin)            P1M1 |= (Pin), P1M0 |= (Pin);
#define  P2_MODE_OUT_OD(Pin)            P2M1 |= (Pin), P2M0 |= (Pin);
#define  P3_MODE_OUT_OD(Pin)            P3M1 |= (Pin), P3M0 |= (Pin);
#define  P4_MODE_OUT_OD(Pin)            P4M1 |= (Pin), P4M0 |= (Pin);
#define  P5_MODE_OUT_OD(Pin)            P5M1 |= (Pin), P5M0 |= (Pin);
#define  P6_MODE_OUT_OD(Pin)            P6M1 |= (Pin), P6M0 |= (Pin);
#define  P7_MODE_OUT_OD(Pin)            P7M1 |= (Pin), P7M0 |= (Pin);
//推挽输出
#define  P0_MODE_OUT_PP(Pin)            P0M1 &= ~(Pin), P0M0 |= (Pin);
#define  P1_MODE_OUT_PP(Pin)            P1M1 &= ~(Pin), P1M0 |= (Pin);
#define  P2_MODE_OUT_PP(Pin)            P2M1 &= ~(Pin), P2M0 |= (Pin);
#define  P3_MODE_OUT_PP(Pin)            P3M1 &= ~(Pin), P3M0 |= (Pin);
#define  P4_MODE_OUT_PP(Pin)            P4M1 &= ~(Pin), P4M0 |= (Pin);
#define  P5_MODE_OUT_PP(Pin)            P5M1 &= ~(Pin), P5M0 |= (Pin);
#define  P6_MODE_OUT_PP(Pin)            P6M1 &= ~(Pin), P6M0 |= (Pin);
#define  P7_MODE_OUT_PP(Pin)            P7M1 &= ~(Pin), P7M0 |= (Pin);//========================================================================
//                              定义声明
//========================================================================#define   GPIO_PullUp     0   //上拉准双向口
#define GPIO_HighZ      1   //浮空输入
#define GPIO_OUT_OD     2   //开漏输出
#define GPIO_OUT_PP     3   //推挽输出#define   GPIO_Pin_0      0x01    //IO引脚 Px.0
#define GPIO_Pin_1      0x02    //IO引脚 Px.1
#define GPIO_Pin_2      0x04    //IO引脚 Px.2
#define GPIO_Pin_3      0x08    //IO引脚 Px.3
#define GPIO_Pin_4      0x10    //IO引脚 Px.4
#define GPIO_Pin_5      0x20    //IO引脚 Px.5
#define GPIO_Pin_6      0x40    //IO引脚 Px.6
#define GPIO_Pin_7      0x80    //IO引脚 Px.7
#define GPIO_Pin_LOW    0x0F    //IO低4位引脚
#define GPIO_Pin_HIGH   0xF0    //IO高4位引脚
#define GPIO_Pin_All    0xFF    //IO所有引脚#define GPIO_P0         0       //
#define GPIO_P1         1
#define GPIO_P2         2
#define GPIO_P3         3
#define GPIO_P4         4
#define GPIO_P5         5
#define GPIO_P6         6
#define GPIO_P7         7void Delay1ms(void)        //@11.0592MHz
{unsigned char i, j;i = 15;j = 90;do{while (--j);} while (--i);
}void Delay_ms(unsigned int time)
{unsigned int i;for(i=0; i<time; i++){Delay1ms();}
}//串口初始化
//定时器1做串口波特率
void uart1_Init(void)
{//串口工作模式2,允许串口接收SCON = 0x50;T2L = BRT;T2H = BRT>>8;AUXR = 0x15;//启动定时器ES = 1;//使能串口中断EA = 1;//使能总中断
}//重写putchar函数
char putchar(char ch)
{SBUF = ch;while(!TI);TI = 0;return ch;
}//ADC初始化
void ADC_Init(void)
{ADCCFG = 0x0f;            //设置ADC时钟为  计算公式为:系统时钟/2/16/SPEED[3:0] 具体查看芯片手册 P286ADC_CONTR = 0x80;       //使能ADC模块
}//读取ADC结果
uint ADC_Result(void)
{unsigned int adc_num;ADC_CONTR |= 0x40;           //启动AD转换_nop_();_nop_();while (!(ADC_CONTR & 0x20));    //查询ADC完成标志ADC_CONTR &= ~0x20;             //清完成标志adc_num = ADC_RES;  return adc_num;                 //返回ADC结果
}void main()
{unsigned int temp_adc;uart1_Init();                    //串口1初始化P1_MODE_IN_HIZ(GPIO_Pin_0);     //设置P1.0为高阻输入,设置为ADC口ADC_Init();                     //ADC初始化while(1){temp_adc = 0;temp_adc = ADC_Result();printf("P1.0端口ADC结果为:%d\n", temp_adc);Delay_ms(500);}
}

【STC8学习笔记】STC8A8K64S4A12 ADC模数转换,使用串口打印出来相关推荐

  1. STM32学习笔记(七) ADC模数转换测电平(普通和DMA模式)

    嵌入式系统在微控制领域(温度,湿度,压力检测,四轴飞行器)中占据着重要地位,这些功能的实现是由微处理器cpu(如stm32)和传感器以及控制器共同完成的,而连接他们,使它们能够互相正常交流的正是本小节 ...

  2. STM32F407霸天虎HAL库学习笔记——使用ADC采集MQ135的数据并通过OLED显示

    STM32F407霸天虎HAL库学习笔记--使用ADC采集MQ135的数据并通过OLED显示 一.软件准备 二.硬件准备 三.CubeMX配置 四.Keil MQ135.c MQ135.h main函 ...

  3. (实验4)单片机,STM32F4学习笔记,代码讲解【串口实验】【正点原子】【原创】

    文章目录 其它文章链接,独家吐血整理 实验现象 主程序 串口中断程序 代码讲解 其它文章链接,独家吐血整理 (实验3)单片机,STM32F4学习笔记,代码讲解[按键输入实验][正点原子][原创] (实 ...

  4. (实验50)单片机,STM32F4学习笔记,代码讲解【串口IAP实验】【正点原子】【原创】

    文章目录 ❤2023重新理解记录 其它文章链接,独家吐血整理 实验现象 主程序 IAP初始化程序 代码讲解 文章目录 ❤2023重新理解记录 其它文章链接,独家吐血整理 实验现象 主程序 IAP初始化 ...

  5. 小熊派gd32f303学习之旅(3)—串口打印第一个Hello world程序

    小熊派gd32f303学习之旅(3)-串口打印第一个Hello world程序 一.硬件连接 通过查看原理图我们可以看到,当[UART通信选择开关]拨向[AT-MCU]时,USB虚拟串口连接到MCU的 ...

  6. STM8学习笔记----普通IO口模拟串口功能

    串口在产品应用中很常见,但是单片机的默认带的串口往往比较少,有时候就会出现串口不够用,所以就想着能不能用普通IO口模拟串口来实现串口的功能. 要模拟串口首先要清楚串口数据传输过程中的原理. 常用的串口 ...

  7. IMX6ULL学习笔记(20)——UART串口使用

    一.UART简介 i.MX6U 芯片具有多达 8 个 UART 外设用于串口通讯,UART 是在 USART 基础上裁剪掉了同步通信功能,只支持异步通信.简单区分同步和异步就是看通信时需不需要对外提供 ...

  8. K210学习笔记(一) K210与STM32串口通信相关

    文章目录 前言 一.STM32 串口中断 接收K210板子发送的ASCII码整数 转换为 多位整形数据 二.MAIX BIT(K210)与STM32串口通讯 2.1 实现MAIX BIT与XCOM之间 ...

  9. 迪文屏幕T5L平台学习笔记五:C51使用UART2打印log

    上篇博客介绍了利用sprintf,实现数据转化,在文本框上显示字符串,这篇博客利用printf,实现串口打印log. 一.首先看UART2配置寄存器 这里我们选择模式1,选择SRELOH:L产生波特率 ...

最新文章

  1. 独家 | 手把手教你运用深度学习构建视频人脸识别模型(Python实现)
  2. NodeJS + PhantomJS 前端自动化资源监控
  3. SQL Server通过web方式进行远程维护,管理
  4. 汉诺塔的改编题(用栈求解,分别递归和非递归)
  5. kotlin 协程异常处理机制颠覆三观
  6. 免费下载|《云原生时代下的App开发》走进阿里云一站式应用研发平台EMAS
  7. gbk编码在线转换工具_TOOLFK工具-在线汉字/字母/人民币/简繁体转换工具
  8. urlib2和requests模拟登陆查询MD5
  9. mysql主从复制中间件_linux下mysql主从复制(第二篇读写分离) mycat 中间件
  10. oracle中NUMBER(10,2)含义
  11. Win10设置mac
  12. js批量向html容器内的元素赋值
  13. HDU 4746 Mophues(莫比乌斯反演)题解
  14. ASP使用ASPupload组件上传多个文件
  15. 贝格尔编排法的PHP实现
  16. 虽说中国是礼仪之邦,但是这个礼看来还是没有几个人学透
  17. 怎么确保数据在网络传输的安全性?
  18. 爬虫项目(一)爬虫+jsoup轻松爬知乎
  19. Scrapy抓取接口中文数据显示问号问题
  20. 软考复习笔记|项目管理过程与可行性分析及可行性分析报告编写

热门文章

  1. 关于中国省市的一份js代码
  2. Revit 求质心(重心点)
  3. 迅雷PK用户,到底谁更流氓?
  4. 概率图模型中的贝叶斯网络
  5. 重点计算机应用基础2010,计算机应用基础WIN7+OFFICE2010_课件重点.ppt
  6. 深入理解服务器CPU三大体系结构--SMP、NUMA、MPP
  7. 年年都有人说Java市场饱和,那Java行业到底是不是真的饱和了呢?
  8. 从零实现 FATFS+SD卡
  9. cmd中无法运行svn命令
  10. Prim和Kruskal算法应用----城市水管连接