📄 jcsb78-01.bak
字号:
#include <reg52.h>
#include <INTRINS.H>
sbit SDA=P1^0;
sbit SCL=P1^2;
sbit EN=P3^0;
sbit GO1=P1^4;
sbit GO2=P1^5;
sbit LED1=P3^4;
sbit LED2=P3^5;
sbit LED3=P3^6;
void DelayXms(unsigned int i);
void I2CStart();
void I2CStop();
void I2CSent(unsigned char Data);
void Display(unsigned char d);
bit Wait();
bit key;
char l;
unsigned char co;
void DelayXms(unsigned int i)
{
unsigned char a;
unsigned int b;
for(b=0;b<i;b++)
for(a=0;a<255;a++);
}
void I2CStart( void )
{
SDA=1;
_nop_();
_nop_();
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
SDA=0;
_nop_();
_nop_();
_nop_();
SCL=0;
}
void I2CStop( void )
{
SDA=0;
_nop_();
_nop_();
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
SDA=1;
_nop_();
_nop_();
_nop_();
SCL=0;
}
void I2CSent(unsigned char Data)
{
unsigned char i,d;
bit ack;
SDA=1;
Resent:
d=Data;
for(i=0;i<8;i++)
{
if(d&0x80)
SDA=1;
else
SDA=0;
d<<=1;
_nop_();
_nop_();
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
SCL=0;
_nop_();
_nop_();
_nop_();
}
_nop_();
_nop_();
_nop_();
SDA=1;
_nop_();
_nop_();
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
ack=SDA;
SCL=0;
_nop_();
_nop_();
_nop_();
if(ack==1)goto Resent;
}
bit Wait()
{
bit L;
while(1)
{
if(GO1==0||GO2==0)
{
if(GO1==0)L=1;
if(GO2==0)L=0;
DelayXms(100);
while(GO1==0||GO2==0);
return L;
}
}
return L;
}
void Display(unsigned char d)
{
unsigned char i;
EA=0;
I2CStart();
I2CSent(0x70);
I2CSent(0xe0); //Device select A0=A1=A2=0
I2CSent(0xce); //Mode set
I2CSent(0xf0);
I2CSent(0x00);
for(i=0;i<10;i++)
{
I2CSent(d);
}
I2CStop();
I2CStart();
I2CSent(0x70);
I2CSent(0xe1); //Device select A0=A1=A2=0
I2CSent(0xce); //Mode set
I2CSent(0xf0);
I2CSent(0x00);
for(i=0;i<10;i++)
{
I2CSent(d);
}
I2CStop();
EA=1;
}
void Display1()
{
EA=0;
for(;co<80;)
{
re:
Display(0x00);
I2CStart();
I2CSent(0x70);
I2CSent(0xe0+co/40); //Device select A0=A1=A2=0
I2CSent(0xce); //Mode set 客人
I2CSent(0xf0);
I2CSent(co%40);
I2CSent(0xc0);
I2CStop();
key=Wait();
if(key==1)
{
if(co==0)return;
else
co--;
}
if(key==1)goto re;
else
co++;
}
EA=1;
}
void E1() interrupt 2
{
EA=0;
DelayXms(300);
l++;
if(l==4)l=1;
LED1=(bit)(l&0x01);
LED2=(bit)(l&0x02);
EA=1;
}
void E0() interrupt 0
{
EA=0;
DelayXms(300);
LED3=~LED3;
EA=1;
}
void main(void)
{
EN=1;
IE=0X85;
IE0=1;
IE1=0;
LED1=0;
LED2=1;
LED3=0;
while(1)
{
d1: Display(0xff);
if(Wait()==1)goto d5;
d2: Display(0x00);
if(Wait()==1)goto d1;
co=0;
d3: Display1();
if(key==1)goto d2;
d4: Display(0xaa);
key=Wait();
if(key==1)co=79;
if(key==1)goto d3;
d5: Display(0x55);
if(Wait()==1)goto d4;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -