【跟着小甲鱼学C语言】P31 局部变量和全局变量

本文深入探讨了局部变量和全局变量的区别,详细解释了全局变量的自动初始化特性以及如何使用extern关键字来处理变量的提前引用和跨文件定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

局部变量和全局变量

1.全局变量

定义在main函数外的变量就是全局变量。与其他变量不同的是,如果不初始化全局变量,其会自动初始化为0。如果main函数中声明了同名的变量,那么全局变量会被屏蔽

2.extern关键字

有两个作用:
1.当变量在定义前就被使用的时候,可以使用extern关键字告诉编译器,这个变量已经在后边定义过了。
2.表示这个变量或者函数已经在其他文件定义过了。

<think>嗯,用户想了解STC8单片机P31端口与ADC相关的配置使用方法。首先,我需要回忆一下STC8的ADC模块结构。根据引用[1],STC8的大部分IO口上电后都是高阻输入状态,使用前必须设置模式。P3.1作为ADC输入通道,可能需要先配置为模拟输入模式。 接下来,ADC相关的寄存器配置。STC8的ADC控制寄存器包括ADC_CONTR、ADC_RESADC_RESL等。需要设置采样通道、时钟分频、使能ADC电源等。例如,选择P3.1对应的通道,通道号可能是1,需要查数据手册确认。 然后是中断配置,如果用户需要使用中断方式读取结果,需要开启ADC中断全局中断。引用[2]提到基于库函数的ADC中断框架,可能涉及中断服务函数的编写。 还要注意转换速度的设置,ADC时钟分频影响转换时间。另,启动转换后需要等待完成或检测标志位。用户可能需要示例代码,所以得准备配置步骤代码片段,比如设置IO模式、初始化ADC、启动转换、读取结果等步骤。 还要考虑用户可能遇到的问题,比如如何计算实际电压值,是否需要参考电压,以及配置中的常见错误,比如忘记使能ADC电源或设置正确的通道。最后,生成相关问题,帮助用户深入理解,比如其他ADC通道的配置、如何提高精度等。</think>### STC8单片机P3.1端口ADC配置教程 #### 一、硬件特性说明 1. **P3.1的默认状态**: STC8单片机所有IO口上电后默认处于高阻输入状态(除P3.0/P3.1),使用前需设置IO模式为模拟输入[^1]。 2. **ADC通道对应关系**: P3.1对应ADC通道1,需通过寄存器配置选择该通道。 --- #### 二、配置步骤 ##### 1. 设置IO口模式 ```c P3M1 |= 0x02; // P3.1设为高阻输入模式 P3M0 &= ~0x02; // 确保模拟输入模式 ``` ##### 2. 初始化ADC模块 ```c ADC_CONTR = 0x81; // 使能ADC电源,设置时钟分频(假设为系统时钟/2) ADC_EXTTRIG = 0x00; // 关闭部触发,使用软件触发 ``` ##### 3. 选择ADC通道 ```c ADC_CONTR &= 0xF0; // 清空通道选择位 ADC_CONTR |= 0x01; // 选择通道1(P3.1) ``` ##### 4. 中断配置(可选) ```c EADC = 1; // 使能ADC中断 EA = 1; // 开启全局中断 ``` ##### 5. 启动ADC转换 ```c ADC_CONTR |= 0x40; // 启动转换 while (!(ADC_CONTR & 0x20)); // 等待转换完成 ADC_CONTR &= ~0x20; // 清除完成标志 ``` ##### 6. 读取转换结果 ```c uint16_t adc_value = (ADC_RES << 8) | ADC_RESL; ``` --- #### 三、关键寄存器说明 | 寄存器 | 功能描述 | |-----------|----------------------------| | ADC_CONTR | 控制ADC电源/时钟/通道/启动 | | ADC_RES | 存储高8位转换结果 | | ADC_RESL | 存储低2位转换结果 | --- #### 四、电压计算 转换结果与参考电压的关系: $$ V_{in} = \frac{adc\_value}{4095} \times V_{ref} $$ (STC8为12位ADC,$V_{ref}$通常取芯片供电电压) --- #### 五、注意事项 1. 首次转换建议丢弃,保证精度 2. 转换时间需满足: $$ t_{conv} \geq 10 \mu s $$ 3. 参考电压需保持稳定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值