我是希望通过光敏电阻的阻值变化控制LED灯灯的亮度,下面的代码只是控制开关而已。单片机接收的数据一直都是0。。。。下面是我编的代码:
#include<intrins.h>
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char v;
sbit ST=P2^0;
sbit OE=P2^1;
sbit EOC=P3^2;
sbit CLK=P2^6;
sbit led=P2^7;
sbit ALE=P2^2;
sbit AA=P2^3;
sbit BB=P2^4;
sbit CC=P2^5;
void systimer0_init(void)
{
TMOD=0x01;//设置为1时用或(|)
TH0 = 0xdc; // 定时10ms
TL0 = 0x00;
EA = 1;
ET0=1;
TR0=1;
}
void delayus(i)
{
for(i;i>0;i--);
}
uint ADC_0809()
{ uchar getdata;
ALE=ST=0;//关闭转换
OE=0;//关闭输出
AA=1;
BB=1;
CC=1;
ALE=ST=1;//开启转换
_nop_();
_nop_();
_nop_();
ALE=ST=0;//关闭转换
_nop_();
_nop_();
_nop_();
while(!EOC); //等待转换结束
OE=1;//开启数据输出允许
getdata=P0;//将数据取走,存放在变量getdata中
delayus(10);
v=getdata*1.0*5*1000/255;
OE=0;//关闭输出
return v;
}
void main(void)
{
ALE=ST=0;//关闭转换
OE=0;//关闭输出
led = 0;
systimer0_init();
while(1)
{
if(v==0.00)
led=1;
else
led=0;
}
}
void time_0() interrupt 1
{
TH0 = 0xDC;
TL0 = 0x00;
v=ADC_0809();
} |