/*发送程序*/
#include <reg51.h>
#include <I2C.H>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar ad1;
/*uchar ad2;
uchar ad3;*/
#define PCF8591 0x90 //PCF8591 ???
sbit p1=P2^0;
/*sbit p2=P2^6;
sbit p3=P2^7;*/
void delay(uchar x)
{
uchar i,j;
for(j=0;j<x;j++)
for(i=0;i<110;i++);
}
/*******************************************************************
ADC???????[????]???????
*******************************************************************/
bit ISendByte(unsigned char sla,unsigned char c)
{
Start_I2c(); //???????
SendByte(sla); //???????????
if(ack==0)return(0);
SendByte(c); //????????
if(ack==0)return(0);
Stop_I2c(); //????????
return(1);
}
/*******************************************************************
ADC????????????
*******************************************************************/
unsigned char IRcvByte(unsigned char sla)
{ unsigned char c;
Start_I2c(); //???????
SendByte(sla+1); //???????????
if(ack==0)return(0);
c=RcvByte(); //???????0
Ack_I2c(1); //???????λ
Stop_I2c(); //????????
return(c);
}
/************??????**********************/
void main()
{
TMOD=0x20;
SCON=0x50;
TH1=0xFD;
TL1=0xFD;
TR1=1;
if(p1==0)
{SBUF=0x32;
while(!TI);
TI=0;
while(1)
{
ISendByte(PCF8591,0x40);
ad1=IRcvByte(PCF8591);
SBUF=ad1;
while(!TI);
TI=0;
delay(200);
delay(200);
} }
/*if(p2==0){SBUF=0x01;
while(!TI);
TI=0;
while(1)
{ISendByte(PCF8591,0x41);
ad2=IRcvByte(PCF8591);
SBUF=ad2;
while(!TI);
TI=0;
delay(200);
delay(200);
}}
if(p3==0){SBUF=0x02;
while(!TI);
TI=0;
while(1){
ISendByte(PCF8591,0x42);
ad3=IRcvByte(PCF8591);
SBUF=ad3;
while(!TI);
TI=0;
delay(200);
delay(200);
} } */
delay(200);
delay(200);
delay(200);
}
/*接收程序*/
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar ad;//?????????????
uint ms;
unsigned char Rx_buf[4],Rxnum=0;
sbit led1=P3^7;
sbit led2=P3^6;
sbit led3=P3^5;
/********************************************************************
* ???? : Delay_1ms()
* ???? : ??????????????? 1ms * x
* ???? : x (????????????)
* ??? : ??
***********************************************************************/
void delay(uint i)//1ms???
{
uchar x,j;
for(j=0;j<i;j++)
for(x=0;x<5;x++);
}
/************* ???? : Com_Init()
* ???? : ??????????????11.0592,??????9600????????ж?**********************/
void Com_Init()
{
TMOD=0x21;
SCON=0x50;
TH1=0xFD;
TL1=0xFD;
EA=1;
ES=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR1=1;
}
void LED1()
{
while(1)
{
//ad=255;
ms++;
delay(2);
if(ms>=256)
{ms=0;}
if(ms<ad)
{
led1=0;
}
else
{
led1=1;
}
}
}
void LED2()
{ while(1)
{
//ad=255;
ms++;
delay(2);
if(ms>=256)
{ms=0;}
if(ms<ad)
{
led2=0;
}
else
{
led2=1;
}
}
}
void LED3()
{
while(1)
{
//ad=255;
ms++;
delay(2);
if(ms>=256)
{ms=0;}
if(ms<Rx_buf[Rxnum])
{
led3=0;
}
else
{
led3=1;
}
}
}
void main()
{
delay(100);
Com_Init();
}
/*********** ?????ж????????? *****/
void ser() interrupt 4
{
if(RI)
{
RI=0;
ad=SBUF;
switch(ad)
{case 0x30:LED1();break;
case 0x31:LED2();break;
case 0x00:LED3();break;
}
}
}
|