C语言if只能执行第一个指令,C语言程序为什么我的第二个if里的语句无法实现?只能产生一个pwm波...

该博客主要介绍了一种单片机ADC(模拟数字转换器)的初始化配置、读取过程以及数据显示的方法。通过设置P1口作为ADC输入,使用定时器进行间隔控制,并在P0口显示ADC转换结果。当ADC读数达到一定阈值时,会改变外部设备的状态。整个程序涉及到了定时器、中断和ADC操作,适用于嵌入式系统开发。
摘要由CSDN通过智能技术生成

#include

#include

#include

// sbit  EN1=P3^0;

// sbit  IN1=P3^1;

sbit  IN2=P2^0;

sbit   IN1=P2^1;

sfr  AUXR       =   0x8e;

#define FOSC    11059200L

#define BAUD    9600

#define uchar unsigned char

typedef unsigned char BYTE;

typedef unsigned int WORD;

unsigned char x,y;

uchar t=0;

void Timer0Init(void);

void InitADC();

BYTE GetADCResult(BYTE ch);

void ShowResult();

void Delay(WORD n);

uchar count=0;

sfr T2H   = 0xd6;               //???2?8?

sfr T2L   = 0xd7;               //???2?8?

sfr ADC_CONTR   =   0xBC;           //ADC?????

sfr ADC_RES     =   0xBD;           //ADC?8???

sfr ADC_LOW2    =   0xBE;           //ADC?2???

sfr P1ASF       =   0x9D;           //P1??2???????

#define ADC_POWER   0x80            //ADC?????

#define ADC_FLAG    0x10            //ADC????

#define ADC_START   0x08            //ADC?????

#define ADC_SPEEDLL 0x00            //540???

#define ADC_SPEEDL  0x20            //360???

#define ADC_SPEEDH  0x40            //180???

#define ADC_SPEEDHH 0x60

/*----------------------------

??ADC???PC

----------------------------*/

void ShowResult()

{

x=GetADCResult(1);

// k=GetADCResult(7);

//    SendData(ADC_LOW2);           //???2???

}

/*----------------------------

??ADC??

----------------------------*/

BYTE GetADCResult(BYTE ch)

{

ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;

_nop_();                        //??4?NOP

_nop_();

_nop_();

_nop_();

while (!(ADC_CONTR & ADC_FLAG));//??ADC????

ADC_CONTR &= ~ADC_FLAG;         //Close ADC

return ADC_RES;                 //??ADC??

}

void InitADC()

{

P1ASF = 0xff;                   //??P1??AD?

ADC_RES = 0;                    //???????

ADC_CONTR = ADC_POWER | ADC_SPEEDLL;

Delay(2);                       //ADC?????

}

void Delay(WORD n)

{

WORD N;

while (n--)

{

N = 5000;

while (N--);

}

}

void Timer0Init(void)  //100??@11.0592MHz

{

AUXR |= 0x80;  //?????1T??

TMOD &= 0xF0;  //???????

TL0 = 0xAE;  //??????

TH0 = 0xFB;  //??????

TF0 = 0;  //??TF0??

TR0 = 1;  //???0????

EA=1;

}

void tiii () interrupt 1

{

count++;

if(count==t)

{

IN2=~IN2;

}

if(count==200)

{

IN2=~IN2;

count=0;

}

}

void main()

{

InitADC();

Timer0Init();

while(1)

{

x=GetADCResult(1);

P0=x;

if(x>=200)

{

t=15;

ET0=1;

}

else if(x<=50)

{

t=25;

ET0=1;

}

else

{

ET0=0;

}

}

}

我来回答

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值