📄 common.c
字号:
}
LEDFlag = 1;
}
////////////////////////////
/*
ucdLCDCounter++;
if(ucdLCDCounter >= 20)
{
ucdLCDCounter = 0;
//////////////////////////////
//if(LCDFlag == 1)
{
//P1 = 0x00;
LCDFlag = 0;
LEDFlag = 1;
//lcd_init(); //全黑
//lcd_string("ST");
lcd_wrdata('H');
//hard_10ms(2);
}
}
*/
/*
if(sys10mscounter!=0)
{
sys10mscounter--; //定时器10ms
}
if(syslimitcounter!=0)
{
syslimitcounter--; //定时器10ms
}
*/
}
void Display() interrupt 3 using 2 //T1中断 LED DISPLAY
{
TL1 = 0xf0;
TH1 = 0xf9;
if(LEDFlag == 1)
{
cs = 0;
P2 = 0;
P1 = P1&0xf0;
P1 = P1|ucidT1Acc;
P2 = uccTab[ucdLEDDisplayArray[ucidT1Counter%LengthOfLEDDisplayArray]];
//P2 = uccTab[ucdLEDDisplayArray[ucidT1Counter]];
//CurrentTestMode
if(CurrentTestMode == MANUAL)
{
if(1 == ucidT1Acc)
{
P2 = P2|0x80; //
}
}
if(CurrentTestItem == AD_DA)
{
if(4 == ucidT1Acc)
{
P2 = P2|0x80; //
}
}
//////////////////////////////////////////////////////////
ucidT1Acc = ucidT1Acc<<1;
ucidT1Counter = ucidT1Counter + 1;
if(ucidT1Acc >= 16)
{
ucidT1Counter = ucdLEDCounterStart;
ucidT1Acc = 1;
}
//LCDFlag = 1;
//cs = 0;
}
else
{
;
}
}
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
/****************Serial*******************/
//////////////////////////////////////////////////////////////////
void TreatCharToSend(UCHARDATA ucdCharToSend)
{
switch(ucdCharToSend)
{
case 0:
SBUF = '0';
break;
case 1:
SBUF = '1';
break;
case 2:
SBUF = '2';
break;
case 3:
SBUF = '3';
break;
case 4:
SBUF = '4';
break;
case 5:
SBUF = '5';
break;
case 6:
SBUF = '6';
break;
case 7:
SBUF = '7';
break;
case 8:
SBUF = '8';
break;
case 9:
SBUF = '9';
break;
case 10:
SBUF = 'A';
break;
case 11:
SBUF = 'b';
break;
case 12:
SBUF = 'c';
break;
case 13:
SBUF = 'd';
break;
case 14:
SBUF = 'E';
break;
case 15:
SBUF = 'F';
break;
case 16:
SBUF = ' ';
break;
default :
break;
}
}
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
UCHAR TreatCharReceived()
{
UCHAR ucTreatResult;
switch(SBUF)
{
case '0':
ucTreatResult = 0;
break;
case '1':
ucTreatResult = 1;
break;
case '2':
ucTreatResult = 2;
break;
case '3':
ucTreatResult = 3;
break;
case '4':
ucTreatResult = 4;
break;
case '5':
ucTreatResult = 5;
break;
case '6':
ucTreatResult = 6;
break;
case '7':
ucTreatResult = 7;
break;
case '8':
ucTreatResult = 8;
break;
case '9':
ucTreatResult = 9;
break;
case 'A':
ucTreatResult = 10;
break;
case 'a':
ucTreatResult = 10;
break;
case 'B':
ucTreatResult = 11;
break;
case 'b':
ucTreatResult = 11;
break;
case 'C':
ucTreatResult = 12;
break;
case 'c':
ucTreatResult = 12;
break;
case 'D':
ucTreatResult = 13;
break;
case 'd':
ucTreatResult = 13;
break;
case 'E':
ucTreatResult = 14;
break;
case 'e':
ucTreatResult = 14;
break;
case 'F':
ucTreatResult = 15;
break;
case 'f':
ucTreatResult = 15;
break;
case ' ':
ucTreatResult = 16;
break;
case '.': /* 约定的结束标志 */
ucTreatResult = 30;
break;
default : /* 无法识别时的处理 */
ucTreatResult = 18;
break;
}
return ucTreatResult;
}
//////////////////////////////////////////////////////////////////
void SerialPortCommunication(void) reentrant interrupt 4 using 3
{
if(TI)
{
TI=0;
if(ucidTXCounter < LengthOfLEDDisplayArray)
{
TreatCharToSend(ucdLEDDisplayArray[((ucidTXCounter)%LengthOfLEDDisplayArray)]);
ucidTXCounter++;
}
else
{
ucidTXCounter = 0;
}
}
if(RI)
{
RI=0;
//ucdRXArray[ucidRXCounter] =TreatCharReceived();
if((30 != TreatCharReceived()) && (ucidRXCounter < LengthOfLEDDisplayArray))
{
ucdRXArray[ucidRXCounter] = TreatCharReceived();
//ucdReceiveBuffer[ucdRXCounter] = SBUF;
ucidRXCounter++;
}
else
{
if(1 == WriteEEPROMComplete)
{
//WriteEEPROMLength = ucidRXCounter;
ucidRXCounter = 0;
WriteEEPROMFlag = 1;
WriteEEPROMComplete = 0;
}
}
//RReceive(); ucidRXCounter
//ucdReceiveArray[] = SBUF;
//t=inRxBuf;t++;
//if(t==RxBuf+LenRxBuf) t=RxBuf;
//if(t==outRxBuf) return; //RxBuf Full
//*inRxBuf=SBUF;
//inRxBuf=t;
}
}
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
/****************EEPROM*******************/
void mDelay(UCHARIDATA j)
{
UCHARIDATA i;
for(;j>0;j--)
{
for(i=0;i<125;i--)
{
;
}
}
}
/*发送起始条件*/
void Start(void) /*起始条件*/
{
Sda=1;
Scl=1;
_nop_ ();
_nop_ ();
_nop_ ();
Sda=0;
_nop_ ();
_nop_ ();
_nop_ ();
}
void Stop(void) /*停止条件*/
{
Sda=0;
Scl=1;
_nop_ ();
_nop_ ();
_nop_ ();
Sda=1;
_nop_ ();
_nop_ ();
_nop_ ();
}
void Ack(void) /*应答位*/
{
Sda=0;
_nop_ ();
_nop_ ();
_nop_ ();
Scl=1;
_nop_ ();
_nop_ ();
_nop_ ();
Scl=0;
}
void NoAck(void) /*反向应答位*/
{
Sda=1;
_nop_ ();
_nop_ ();
_nop_ ();
Scl=1;
_nop_ ();
_nop_ ();
_nop_ ();
Scl=0;
}
void Send(UCHARIDATA Data) /*发送数据子程序,Data为要求发送的数据*/
{
UCHARIDATA BitCounter=8; /*位数控制*/
UCHARIDATA temp; /*中间变量控制*/
do
{
temp=Data;
Scl=0;
_nop_ ();
_nop_ ();
_nop_ ();
if((temp&0x80)==0x80)/* 如果最高位是1*/
{
Sda=1;
}
else
{
Sda=0;
}
Scl=1;
temp=Data<<1; /*RLC*/
Data=temp;
BitCounter--;
}while(BitCounter);
Scl=0;
}
UCHAR Read(void) /*读一个字节的数据,并返回该字节值*/
{
UCHARIDATA temp=0;
UCHARIDATA temp1=0;
UCHARIDATA BitCounter=8;
Sda=1;
do
{
Scl=0;
_nop_ ();
_nop_ ();
_nop_ ();
Scl=1;
_nop_ ();
_nop_ ();
_nop_ ();
if(Sda) /*如果Sda=1;*/
{
temp=temp|0x01; /*temp的最低位置1*/
}
else
{
temp=temp&0xfe; /*否则temp的最低位清0*/
}
if(BitCounter-1)
{
temp1=temp<<1;
temp=temp1;
}
BitCounter--;
}while(BitCounter);
return(temp);
}
void ByteWrite(UCHARIDATA Data[],UCHARIDATA Address,UCHARIDATA Num)
{
UCHARIDATA i;
UCHARIDATA *PData;
PData=Data;
for(i=0;i<Num;i++)
{
Start(); /*发送启动信号*/
Send(0xa0); /*发送SLA+W*/
Ack();
Send(Address+i); /*发送地址*/
Ack();
Send(*(PData+i));
Ack();
Stop();
mDelay(20);
}
}
///////////////////////////PAGE WRITE////////////////////////////////////
void PageWrite(UCHARIDATA Data[],UCHARIDATA Address)
{
UCHARIDATA i;
UCHARIDATA *PData;
PData=Data;
Start(); /*发送启动信号*/
Send(0xa0); /*发送SLA+W*/
Ack();
Send(Address); /*发送地址*/
Ack();
for(i=0;i<6;i++)
{
Send(*(PData+i));
Ack();
}
Stop();
mDelay(20);
}
///////////////////////////RandomRead////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -