typedef unsigned char BYTE;
typedef unsigned int WORD;
#include "reg51h"
#include "intrinsh"
/Declare SFR associated with the ADC /
sfr ADC_CONTR = 0xBC;
sfr ADC_RES = 0xBD;
sfr ADC_LOW2 = 0xBE;
sfr P1ASF = 0x9D;
sfr P2M0 = 0x96;
sfr P2M1 = 0x95;
/Define ADC operation const for ADC_CONTR/
#define ADC_POWER 0x80
#define ADC_FLAG 0x10
#define ADC_START 0x08
#define ADC_SPEEDLL 0x00
#define ADC_SPEEDL 0x20
#define ADC_SPEEDH 0x40
#define ADC_SPEEDHH 0x60
//延时
void Delay(WORD n)
{
WORD x;
while (n--)
{
x = 5000;
while (x--);
}
}
//初始AD寄存器
void InitADC()
{
P1ASF = 0xff;
ADC_RES = 0;
ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
Delay(2);
}
//AD转换
BYTE GetADCResult(BYTE ch)
{
ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
_nop_();
_nop_();
_nop_();
_nop_();
while (!(ADC_CONTR & ADC_FLAG));
ADC_CONTR &= ~ADC_FLAG;
return ADC_RES;
}
void main()
{ BYTE temp;
P2M1=0; P2M0=0x03; //P20和P21强推挽
InitADC();
while (1)
{
temp=GetADCResult(0);//转换P10
if(temp>1)
P2|=0x03; //P10有电压 P20和P21输出高
else
P2&=0xFC; //P10无电压 P20和P21输出低
}
}
这个不好一概而论。关键是要看你的这个格式文件是如何生成的?例如:如果是用户自己编写的 C 语言源程序,由用户自己使用特定的文件格式、且由 fwrite( ) 库函数创建的用户文件,那么就必须要由配对的 fread( ) 库函数按照特定的文件格式读取文件内容,只有这样,才能够正确读取出文件内容。如果不是按照特定的文件格式读取文件内容,那么是无法正确读取文件内容的。同理,如果你不知道文件的具体格式,那么是无法正确打开文件的。即使使用某一种编辑软件打开了该文件(例如:UltraEdit),那么肯定也是一堆毫无意义的乱码。
以上就是关于51单片机 C语言ADC程序怎么写全部的内容,包括:51单片机 C语言ADC程序怎么写、文件格式错误是什么原因、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)