o to kod programu.
pomóżcie
Kod: Zaznacz cały
#include <REG51.H>
sbit P1_0 = P1^0;
sbit P1_1 = P1^1;
sbit P1_2 = P1^2;
sbit P1_3 = P1^3;
sbit P1_4 = P1^4;
sbit P1_5 = P1^5;
sbit P1_6 = P1^6; //wskaznik czy ustawianie jest manualne
sbit P0_0 = P0^0;
sbit P0_1 = P0^1;
sbit P0_6 = P0^6;
sbit P0_7 = P0^7;
#define LED1 P1_0
#define LED2 P1_1
#define LED3 P1_2
#define LED4 P1_3
#define LED5 P1_4
#define LED6 P1_5
#define LEDM P1_6
#define SDA0 P0_0
#define SCL0 P0_1
#define SDA1 P0_6
#define SCL1 P0_7
unsigned int bdata swiatlo; //natezenie swiatla
unsigned int bdata manual; //zmienna mowiaca czy obsluga manualna (0) czy tez automat (1)
unsigned int bdata mnoznik; //mnoznik 4096
unsigned char bdata Var1, Var2, Var3;
volatile unsigned int bdata Key;
sbit B1 = Key^0;
sbit B2 = Key^1;
sbit B3 = Key^2;
sbit B4 = Key^3;
sbit B5 = Key^4;
sbit B6 = Key^5;
sbit B7 = Key^6;
sbit B8 = Key^7;
sbit B9 = Key^8;
sbit B10 = Key^9;
sbit B11 = Key^10;
sbit B12 = Key^11;
void ISR_Timer1(void) interrupt 3
{
TR1 = 0;
TH1 = 0xFF;
TL1 = 0xFF;
switch(manual)
{
case 0 :
manual=1;
LEDM=1;
break;
case 1 :
manual=0;
LEDM=0;
break;
}
TR1 = 1;
}
void Wait(int T)
{
int x;
for(x=0;x<T;x++){;}
}
void czytanie0(void)
{
int z;
for(z=1;z<13;z++)
{
SCL0 = 0;
SDA0 = 1;
Wait(200);
SCL0 = 1;
Wait(100); // /2
if(z==1)
{
B1 = SDA0;
}
if(z==2)
{
B2 = SDA0;
}
if(z==3)
{
B3 = SDA0;
}
if(z==4)
{
B4 = SDA0;
}
if(z==5)
{
B5 = SDA0;
}
if(z==6)
{
B6 = SDA0;
}
if(z==7)
{
B7 = SDA0;
}
if(z==8)
{
B8 = SDA0;
}
if(z==9)
{
B9 = SDA0;
}
if(z==10)
{
B10 = SDA0;
}
if(z==11)
{
B11 = SDA0;
}
if(z==12)
{
B12 = SDA0;
}
Wait(200);
}
}
void czytanie1(void)
{
int x;
for(x=1;x==13;x++)
{
SCL1 = 0;
SDA1 = 1;
Wait(200);
SCL1 = 1;
Wait(100); // /2
if(x==1)
{
B1 = SDA1;
}
if(x==2)
{
B2 = SDA1;
}
if(x==3)
{
B3 = SDA1;
}
if(x==4)
{
B4 = SDA1;
}
if(x==5)
{
B5 = SDA1;
}
if(x==6)
{
B6 = SDA1;
}
if(x==7)
{
B7 = SDA1;
}
if(x==8)
{
B8 = SDA1;
}
if(x==9)
{
B9 = SDA1;
}
if(x==10)
{
B10 = SDA1;
}
if(x==11)
{
B11 = SDA1;
}
if(x==12)
{
B12 = SDA1;
}
Wait(200);
}
}
void init()
{
LED1 = 0;
LED2 = 0;
LED3 = 0;
LED4 = 0;
LED5 = 0;
LED6 = 0;
LEDM = 0;
TMOD &= 0x5F;
TMOD |= 0x50;
TH1 = 0xFF;
TL1 = 0xFF;
TCON |= 0x40;
IE |= 0x08 ;
manual=0;
mnoznik=4096;
EA = 1;
}
void main(void)
{
init();
while(1)
{
if(manual==0)
{
czytanie0();
}
else
{
czytanie1();
}
if(65294<=Key)
{
LED1=1;
if(65295<=Key)
{
LED2=1;
if(65296<=Key)
{
LED3=1;
if(65297<=Key)
{
LED4=1;
if(65298<=Key)
{
LED5=1;
if(65299<=Key)
{
LED6=1;
}
}
}
}
}
}
}
}
Kod: Zaznacz cały
sbit P0_0 = P0^0;
sbit P0_1 = P0^1;
sbit P0_6 = P0^6;
sbit P0_7 = P0^7;
#define SDA0 P0_0
#define SCL0 P0_1
#define SDA1 P0_6
#define SCL1 P0_7
...
void czytanie0(void)
{
int z;
for(z=1;z<13;z++)
{
SCL0 = 0;
SDA0 = 1;
Wait(200);
SCL0 = 1;
Wait(100); // /2
if(z==1)
{
B1 = SDA0;
}
if(z==2)
{
B2 = SDA0;
}
if(z==3)
{
B3 = SDA0;
}
if(z==4)
{
B4 = SDA0;
}
if(z==5)
{
B5 = SDA0;
}
if(z==6)
{
B6 = SDA0;
}
if(z==7)
{
B7 = SDA0;
}
if(z==8)
{
B8 = SDA0;
}
if(z==9)
{
B9 = SDA0;
}
if(z==10)
{
B10 = SDA0;
}
if(z==11)
{
B11 = SDA0;
}
if(z==12)
{
B12 = SDA0;
}
Wait(200);
}
}Z góry wielki dzięki
Po co dwa podobne tematy? Wrzuciłem do jednego. Ddevil