📄 8583.c
字号:
#include<reg51.h>
#include<intrins.h>
#include"lcdapi.h"
#define nop4() _nop_();_nop_();_nop_();_nop_();
#define nop5() _nop_();_nop_();_nop_();_nop_();_nop_();
#define rAdd 0xa1
#define wAdd 0xa0
typedef unsigned char uchar;
sbit VSCL = P3^6;
sbit VSDA = P3^7;
uchar bdata rechar;
sbit one = rechar^0;
void AckIIC()
{
VSDA = 0;
VSCL = 1;
nop4();
VSCL = 0;
VSDA = 1;
}
void StartIIC()
{
VSDA = 1;//hi
VSCL = 1;
nop4();
VSDA = 0;//low
nop4();
VSCL = 0;
}
void StopIIC()
{
VSDA = 0;
VSCL = 1;
nop4();
VSDA = 1;
nop5();
VSDA = 0;
VSCL = 0;
}
bit CheckAckIIC()
{
bit flag;//有效为真
VSDA = 1;//prepare to read
VSCL = 1;//
flag = ~VSDA;//low ia avalible
VSCL = 0;
return flag;
}
void SendByteIIC(char schar)
{
unsigned char data i;
for(i = 8;i!=0;--i)
{
schar = schar<<1;
VSDA = CY;
VSCL = 1;
nop4();
VSCL = 0;
VSDA = 0;
}
}
void WriteByteEE(uchar addr,uchar wChar)
{
StartIIC();
SendByteIIC(wAdd);
CheckAckIIC();
SendByteIIC(addr);
CheckAckIIC();
SendByteIIC(wChar);
CheckAckIIC();
StopIIC();
}
void ReadByteIIC(uchar data * rchar)
{
uchar i;
for(i = 8; i ;i --)
{
rechar = rechar<<1;
VSDA = 1;
VSCL = 1; //make the data useful
_nop_();
_nop_();
one = VSDA;
VSCL = 0;
}
*rchar = rechar;
}
void ReadByteEE(uchar addr,uchar data * rchar)
{
StartIIC();
SendByteIIC(wAdd);
CheckAckIIC();
SendByteIIC(addr);
CheckAckIIC();
StartIIC();
SendByteIIC(rAdd);
CheckAckIIC();
ReadByteIIC(rchar);
StopIIC();
}
void init8583()
{
uchar i;
for(i = 0;i < 16; i ++)
{
WriteByteEE(i,0x00);
}
}
void main(){
uchar rchar;
init8583();
init_lcd();
WriteByteEE(0,0x80);
WriteByteEE(8,0xCA); //闹钟计时器
WriteByteEE(7,0x00);
WriteByteEE(0x0F,0x05);
WriteByteEE(0,0x04);
while(1)
{
ReadByteEE(7,&rchar);
DisChar(0x80,(rchar >> 4) + 0x30);
DisChar(0x81,(rchar & 0x0F) + 0x30);
ReadByteEE(0x0F,&rchar);
DisChar(0x82,(rchar >> 4) + 0x30);
DisChar(0x83,(rchar & 0x0F) + 0x30);
}
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -