qqb0701 发表于 2023-4-13 20:11:43

stc单片机主程序中的ADC转换会被中断嵌套吗?

本帖最后由 qqb0701 于 2023-4-13 20:19 编辑

版主,stc单片机的主程序中的ADC转换如果未完成会被中断程序中的ADC转换中断吗?
因为单片机中只有一个ADC模块,转换的值公用一个寄存器。
主程序的ADC转换值和中断程序中的ADC转换的值会不会出错,会不会丢失数据?

这个问题困扰我好久了,因为控制电源时ADC检测值出错会损坏功率器件。

请解忧!!!

神农鼎 发表于 2023-4-13 21:25:45

看不懂描述,帮忙重新描述下

梁工 发表于 2023-4-13 23:37:41

ADC是一个外设,任何一个地方使用都要独占,主程序使用ADC,要等其转换完成,别的才可以启动转换。用一个使用志来宣示使用权限。
bit   B_ADC_USE;//标志正在使用

非中断使用:
B_ADC_USE = 1;//宣示使用权限
NOP(3);//3个NOP
ADC转换程序;
B_ADC_USE = 0;//使用结束

中断使用:
if(!B_ADC_USE)
{
   ADC转换程序;
}

一般建议在一个地方统一转换,用信息传递给实际使用的函数。

qqb0701 发表于 2023-4-15 21:06:22

梁工 发表于 2023-4-13 23:37
ADC是一个外设,任何一个地方使用都要独占,主程序使用ADC,要等其转换完成,别的才可以启动转换。用一个使 ...

谢谢,梁工。我也是这么用的,今天就是请专家验证需不需要这么做。

kksk 发表于 2023-4-15 21:32:29

ADC_CONTR有一个ADC_START位,写1开始转换,完成后自动清零,可以通过这一位进行判断(确保不会被程序手动清零)

神农鼎 发表于 2023-4-15 21:41:59


页: [1]
查看完整版本: stc单片机主程序中的ADC转换会被中断嵌套吗?