⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 st3lib10.c

📁 SPWM三相波形发生器
💻 C
📖 第 1 页 / 共 5 页
字号:
//st3_st3lib10.c: (V1.0)    2002.1  dxs
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <absacc.h>
#include <reg52.h>
#include <usign.h>
#include <ctype.h>
#include <float.h>
#include <math.h>

//define int number 
#define		DEF_INT_EX0				0
#define		DEF_INT_TIME0			1
#define		DEF_INT_EX1				2
#define		DEF_INT_ASYNC			4
#define		DEF_INT_TIME2			5

//define  int T0 use-mode
#define		DEF_T0_NONE				0x00
#define		DEF_T0_ICREC			0x01
#define		DEF_T0_ICSEND			0x02

//define comm code
#define		DEF_COMMBUFF_LEN	0x100
#define		EXP_COMMBUFF_LEN		0x100

//define parity
#define		DEF_PARITY_NONE		0x00
#define		DEF_PARITY_EVEN		0x01
#define		DEF_PARITY_ODD		0x02

//define the high program switch address
#define		DEF_RAM_PAGE		0xffef
#define		DEF_PORT_DATECS		P1_1
#define		DEF_LCD_COL			0x10

#define		DEF_ADDR_LCDDATA	0x8021
#define		DEF_ADDR_LCDCOMM	0x8020
#define		DEF_HIGH_Card		0x8000
#define		DEF_HIGH_Key		0x8000
#define		DEF_HIGH_AddrICNo	0x8010
#define		DEF_HIGH_Date		0x8040
#define		DEF_HIGH_Card_Rest	0x8050

#define		DEF_CRC_OK				0xB8F0
//define modem return type
#define		DEF_MODEM_RESET			0x80
#define		DEF_MODEM_DIAL			0x90
#define		DEF_MODEM_DATAINFO		0xA0
#define		DEF_MODEM_REC			0xB0
#define		DEF_MODEM_SEND			0xC0
#define		DEF_MODEM_CONNECT		0xD0
//defien modem error dscr
#define		DEF_MODEM_STATUS_OK         0x00
#define		DEF_MODEM_STATUS_NOMODEM    0x01
#define		DEF_MODEM_STATUS_NOLINE     0x02
#define		DEF_MODEM_STATUS_BUSY       0x03
#define		DEF_MODEM_STATUS_NOCARRY    0x04
#define		DEF_MODEM_STATUS_NOANSWER   0x05
#define		DEF_MODEM_STATUS_NOHDLC		0x06
#define		DEF_MODEM_STATUS_USERCANCEL 0x07
#define		DEF_MODEM_STATUS_OVERTIME	0x08
#define		DEF_MODEM_STATUS_CRCERROR	0x09
//define modem return datainfo
#define		DEF_DATAINFO_BEGIN		0x01
#define		DEF_DATAINFO_END		0x02
#define		DEF_DATAINFO_CANCEL		0x03
//define modem rec-status
#define		DEF_REC_STATUS_NULL     0x00
#define		DEF_REC_STATUS_ADDR     0x01
#define		DEF_REC_STATUS_CTRL     0x02
#define		DEF_REC_STATUS_INFO     0x03
#define		DEF_REC_STATUS_CTRLCRC  0x04

#define	EXP_XTAL	   11059200	/* CPU Oscillator Frequency *///
#define	EXP_RHR	0x8000
#define	EXP_THR	0x8000
#define	EXP_DLL	0x8000
#define	EXP_DLM	0x8001
#define	EXP_IER	0x8001
#define	EXP_ISR	0x8002
#define	EXP_FCR	0x8002
#define	EXP_LCR	0x8003
#define	EXP_MCR	0x8004
#define	EXP_LSR	0x8005
#define	EXP_EFR	0x8002

#define		DEF_232_POWER		P1_2
#define		DEF_232_RXD			P3_0
#define		DEF_232_TXD			P3_1
#define		DEF_MODEM_RXD		P3_5
#define		DEF_MODEM_TXD		P1_7
#define		DEF_MODEM_TXC		P1_3
#define		DEF_MODEM_RXC		P1_0
#define		DEF_MODEM_DR		0x8002
#define		DEF_MODEM_ID		0x8006
#define		DEF_MODEM_CR0		0x8000
#define		DEF_MODEM_CR1		0x8001
#define		DEF_MODEM_TR		0x8003
//define printer status
#define		DEF_PRINT_OK        0x00
#define		DEF_PRINT_NOPAPER   0x01
#define		DEF_PRINT_LOWBATT	0x02
#define		DEF_PRINT_STATUS	0x8010
#define		DEF_PRINT_OUTDATA	0x8030
#define		DEF_PRINT_PRNCLK	0x8060
#define		DEF_PRINT_LATCH		0x8070
//st3 internal Keyboard value
#define		DEF_KEY_1      11
#define		DEF_KEY_2      10
#define		DEF_KEY_3      9
#define		DEF_KEY_4      7
#define		DEF_KEY_5      6
#define		DEF_KEY_6      5
#define		DEF_KEY_7      3
#define		DEF_KEY_8      2
#define		DEF_KEY_9      1
#define		DEF_KEY_0      14
#define		DEF_KEY_ESC    4
#define		DEF_KEY_ENTER  13
#define		DEF_KEY_CLEAR  15
#define		DEF_KEY_DOT    16
#define		DEF_KEY_F1     12
#define		DEF_KEY_F2     8

uchar *CrcTabL =
"\x00\x11\x23\x32\x46\x57\x65\x74\x8c\x9d\xaf\xbe\xca\xdb\xe9\xf8\x10\x01\x33\x22\x56\x47\x75\x64\x9c\x8d\xbf\xae\xda\xcb\xf9\xe8"
"\x21\x30\x02\x13\x67\x76\x44\x55\xad\xbc\x8e\x9f\xeb\xfa\xc8\xd9\x31\x20\x12\x03\x77\x66\x54\x45\xbd\xac\x9e\x8f\xfb\xea\xd8\xc9"
"\x42\x53\x61\x70\x04\x15\x27\x36\xce\xdf\xed\xfc\x88\x99\xab\xba\x52\x43\x71\x60\x14\x05\x37\x26\xde\xcf\xfd\xec\x98\x89\xbb\xaa"
"\x63\x72\x40\x51\x25\x34\x06\x17\xef\xfe\xcc\xdd\xa9\xb8\x8a\x9b\x73\x62\x50\x41\x35\x24\x16\x07\xff\xee\xdc\xcd\xb9\xa8\x9a\x8b"
"\x84\x95\xa7\xb6\xc2\xd3\xe1\xf0\x08\x19\x2b\x3a\x4e\x5f\x6d\x7c\x94\x85\xb7\xa6\xd2\xc3\xf1\xe0\x18\x09\x3b\x2a\x5e\x4f\x7d\x6c"
"\xa5\xb4\x86\x97\xe3\xf2\xc0\xd1\x29\x38\x0a\x1b\x6f\x7e\x4c\x5d\xb5\xa4\x96\x87\xf3\xe2\xd0\xc1\x39\x28\x1a\x0b\x7f\x6e\x5c\x4d"
"\xc6\xd7\xe5\xf4\x80\x91\xa3\xb2\x4a\x5b\x69\x78\x0c\x1d\x2f\x3e\xd6\xc7\xf5\xe4\x90\x81\xb3\xa2\x5a\x4b\x79\x68\x1c\x0d\x3f\x2e"
"\xe7\xf6\xc4\xd5\xa1\xb0\x82\x93\x6b\x7a\x48\x59\x2d\x3c\x0e\x1f\xf7\xe6\xd4\xc5\xb1\xa0\x92\x83\x7b\x6a\x58\x49\x3d\x2c\x1e\x0f"
;
uchar *CrcTabH =
"\x00\x89\x12\x9b\x24\xad\x36\xbf\x48\xc1\x5a\xd3\x6c\xe5\x7e\xf7\x81\x08\x93\x1a\xa5\x2c\xb7\x3e\xc9\x40\xdb\x52\xed\x64\xff\x76"
"\x02\x8b\x10\x99\x26\xaf\x34\xbd\x4a\xc3\x58\xd1\x6e\xe7\x7c\xf5\x83\x0a\x91\x18\xa7\x2e\xb5\x3c\xcb\x42\xd9\x50\xef\x66\xfd\x74"
"\x04\x8d\x16\x9f\x20\xa9\x32\xbb\x4c\xc5\x5e\xd7\x68\xe1\x7a\xf3\x85\x0c\x97\x1e\xa1\x28\xb3\x3a\xcd\x44\xdf\x56\xe9\x60\xfb\x72"
"\x06\x8f\x14\x9d\x22\xab\x30\xb9\x4e\xc7\x5c\xd5\x6a\xe3\x78\xf1\x87\x0e\x95\x1c\xa3\x2a\xb1\x38\xcf\x46\xdd\x54\xeb\x62\xf9\x70"
"\x08\x81\x1a\x93\x2c\xa5\x3e\xb7\x40\xc9\x52\xdb\x64\xed\x76\xff\x89\x00\x9b\x12\xad\x24\xbf\x36\xc1\x48\xd3\x5a\xe5\x6c\xf7\x7e"
"\x0a\x83\x18\x91\x2e\xa7\x3c\xb5\x42\xcb\x50\xd9\x66\xef\x74\xfd\x8b\x02\x99\x10\xaf\x26\xbd\x34\xc3\x4a\xd1\x58\xe7\x6e\xf5\x7c"
"\x0c\x85\x1e\x97\x28\xa1\x3a\xb3\x44\xcd\x56\xdf\x60\xe9\x72\xfb\x8d\x04\x9f\x16\xa9\x20\xbb\x32\xc5\x4c\xd7\x5e\xe1\x68\xf3\x7a"
"\x0e\x87\x1c\x95\x2a\xa3\x38\xb1\x46\xcf\x54\xdd\x62\xeb\x70\xf9\x8f\x06\x9d\x14\xab\x22\xb9\x30\xc7\x4e\xd5\x5c\xe3\x6a\xf1\x78"
;

#define		COMMAND_LEN				5
typedef struct
{
    uchar        Command[COMMAND_LEN];
    uchar        LengthIn;
    uchar       *DataIn;
    uchar        LengthExpected;
}	APDU_COMM;

typedef struct
{
    ulong       LengthOut;
    uchar      *DataOut;
    uint        Status;
}	APDU_RESP;

typedef struct
{
	uchar       year;
	uchar       month;
	uchar       day;
	uchar       hour;
	uchar       minute;
	uchar       second;
	uchar       hsecond;
	uchar       weekday;
}	stClock;

extern	void	MyApplication();
extern  void	EXT_AREA();
extern	void	AppRun();
extern	void	SysReset();
extern	uchar	_GetCBYTE(uint Addr);
extern	uint	MAGREAD(uchar *buff);
extern	void	_Pixel2(uchar QM, uchar WM, uchar *pxBuff1,uchar * pxBuff2);
extern	uchar	Read_at24( uint offset, uint count, uchar *buff);
extern	uchar	Write_at24(uint offset, uint count, uchar *buff);
extern	uchar	Read_mem( uint offset, uint count, uchar *buff);
extern	uchar	Write_mem(uint offset, uint count, uchar *buff);

void	_OutHighAddr(uchar HA);
void	_ChipSelect(uchar cs);
void	_SelAddrRam(void);
void	_SelAddrMain(void);
void	_SelAddrModem(void);
void	_SelAddr040(void);
void	_Delay(uint mSecond);
void	_Buzzer(void);
void	_Reset(void);
uchar	_Random(void);
void	_SetLED(uchar Level);
uchar	_ReverseData(uchar SouData);
void	_SysInit(void);
void	BCDtoChar(uchar *pBCD,  uint BCDLen,  uchar *pChar);
void	ChartoBCD(uchar *pChar, uint CharLen, uchar *pBCD);

extern  uchar	Ide_AREA(uchar page,uchar form);//lxj
void			Ide_ARE(void);//lxj
uchar	Read_at24c( uint offset, uint count, uchar *buff);
uchar	Write_at24c(uint offset, uint count, uchar *buff);
uchar	_SysDataRead( uint offset, uint count, uchar *buff);
uchar	_SysDataWrite(uint offset, uint count, uchar *buff);

uchar	_DataBackup( uchar Block, Sector, uchar *dataBuf);
uchar	_DataRestore(uchar Block, Sector, uchar *dataBuf);

void	_InitXMEM(void);
void	_XMemToMem(uint DataLen,uchar* MemBuff, uchar XMemPage,uint XMemOffset);
void	_MemToXMem(uint DataLen,uchar XMemPage,uint XMemOffset,uchar* MemBuff);
uchar	_XMemPage(void);

uchar	_Read_mcard(uint offset, uint count, uchar *buff);
uchar	_Write_mcard(uint offset, uint count, uchar *buff);

uchar	_KeyBoardUnite(uchar kVal);
uchar	_KeyBoardGet(void);
uchar	_KeyBoardTest(void);

void	_SetBkLight(uchar Level);
void	_SetContrast(uchar Level);
void	_InitLCD(void);
void    _SetRevDisp(uchar Level);
void    _SetEntDisp(uchar Level);
uchar	_DispXY01( uchar LINE, uchar COLUM, uchar Level, uchar *DispStr);
void	_ClearScreen(void);
uchar	_DispXY( uchar LINE, uchar COLUM, uchar Level, uchar *DispStr);
void	_Display(uchar ucNoLine, uchar* pzText);
uchar	_DispTXT(uchar LINE, uchar COLUM, uchar *DispStr);
uchar	_CopyImage(uchar SCREEN_X, SCREEN_Y, BUFLEN_X, BUFLEN_Y, uchar *DataBuff);

void	_ClockSet(stClock* ptDateTime);
void	_ClockRead(stClock* ptDateTime);
uchar	_ClockByteInc(uchar DB);
void	_InitTimer(void);
ulong	_GetTickCount(void);
void	_ClearTickCount(void);

void	_AsyncOpen(uint Baud, uchar Parity);
void	_AsyncClose(void);
uchar	_AsyncPutTest(void);
void	_AsyncPut(uchar ucValue);
uchar	_AsyncGetTest(void);
uchar	_AsyncGet(void);
void	_AsyncSetReceive(uchar Level);

void	_EXP_Open(uint Baud, uchar Parity);
void	_EXP_Close(void);
uchar	_EXP_PutTest(void);
void	_EXP_Put(uchar ucValue);
uchar	_EXP_GetTest(void);
uchar	_EXP_Get(void);
void	_Dial_Tone(uchar tone_on);
void	_CardSetPower(uchar Level);
void	_CardSetCard(uchar ICSAM);
void	_CardSetReset(uchar Leval);
void    _MemCardEn(uchar Level);
void    _CardSetPGM(uchar Level);
void    _CardSetFUS(uchar Level);
void	_CardSetClock(uchar Leval);
void	_CardSetCLK4(uchar Level);
void	_CardPutByte(uchar IOData);
void	_CardPutBit(uchar IOBit);
uchar	_CardReadByte(void);
uchar	_CardReadBit(void);
uchar	_CardTestDoor(void);

void	_CardSetRecLimit(uint RecLimit);
uchar	_CardReadIOLimit(uchar *recdata,uchar Reverse);
uchar	_CardSmartReset(uchar *ResetData);
uchar	_CardSmartOpen(void);
void	_CardSmartClose(void);
uchar	_CardSmartApdu(APDU_COMM *apducom, APDU_RESP *apduresp);
void	_CardSmartApduSend(uchar *SendBuff,uchar SendLen,uchar FlagReverse);
void	_DisableICRec(void);
void	_EnableICRec(void);

uchar	_TestLock(void);
uchar	_TestFront(void);
uchar	_SetLock(uchar Level);

void	_Mag2Accept(uchar *track2Data);
void	_Mag3Accept(uchar *track3Data);
uchar	_MagAlterData(uchar *SouBuff, uchar DP, uchar CP, 
					  uchar *DesBuff, uint SouLen);
uchar	_MagTest(void);
void	_MagWrite(uchar* Mag2Buff,uchar Mag2Len,uchar* Mag3Buff, uchar Mag3Len);

extern  uchar   _Printer(uchar Level,uchar *Text);
uchar   _Print(uchar Level,uchar *Text);
extern  uchar   _PrintGraph(uchar Level,uchar *Dot);
extern	void    _PrintStep(uint  StepAmount);

uchar	_GetSysScreenRow(void);
uchar	_GetSysScreenCol(void);
uchar	_GetSysKeycapCount(void);
uchar	_GetSysClockCount(void);
uchar	_GetSysTimerCount(void);
uchar	_GetSysPrinterRow(void);
uchar	_GetSysPrinterCol(void);
uchar	_GetSysModemCount(void);
uchar	_GetSysMagRdCount(void);
uchar	_GetSysMagWtCount(void);
uchar	_GetSysICCardCount(void);
uchar	_GetSysCommCount(void);
uchar	_GetSysRamBlock(void);
uchar	_GetSysFlashBlock(void);
uchar	_GetSysFirstPrgBlk(void);
uchar	_GetSysBackupBlock(void);
uchar	_GetSysFirstBckBlk(void);

uint	CrcData(uint CrcBuff, uchar dd);
uchar	_ModemReset(void);
void	_ModemHangUp(void);
uchar	_ModemDl(uchar *pTelNo);
uchar	_ModemHeadTail(uchar ht);
void	_ModemGetErrStr(uchar ErrCode, uchar *ErrString);
void	_ModemDispErr(uchar ErrCode, DispLine);
void	_ModemSetStatus(uchar Val);
uchar	_ModemRc(uchar *RecBuff, uint *RecLen);
uchar	_ModemSd(uchar *SendBuff,  uint SendLen);

uchar	_ModemDial(uchar *pTelNo);
uchar	_ModemReceive(uchar *RecBuff, uint *RecLen, uint OverSecond);
uchar	_ModemSend(uchar *SendBuff,  uint SendLen);

uchar	PUB_TelNo[20];
uchar	PUB_AddrNo, PUB_AddrNo2;
uchar	PUB_NR, PUB_NS;
uchar	PUB_SendCtrlData;
bit 	PUB_ModemStatus;
bit 	PUB_SendData;

uchar	PixelBuff[768];
uchar	PUB_HIGH_Card;
uchar	PUB_HIGH_Date;
uchar	data	PUB_HIGH_AddrICNo;
uchar	data	PUB_HIGH_Addr;
uchar	PUB_XMEM_Page[32];
uchar	PUB_Key;
uchar	PUB_Free;
uchar	*PUB_Mag2Pt;
uchar	*PUB_Mag3Pt;

uchar	PUB_CommBuffR[DEF_COMMBUFF_LEN+2];
uchar	PUB_CommBuffT[DEF_COMMBUFF_LEN+2];
uint	PUB_CountRH, PUB_CountRT;
uint	PUB_CountTH, PUB_CountTT;
uchar	PUB_ByteTT;
uchar	PUB_Random;

uchar	PUB_CommParity;
uchar	PUB_Async_TI;
uchar	PUB_Async_RI;
uchar	PUB_Async_RecData;

uchar	EXP_CommBuffR[EXP_COMMBUFF_LEN];
uchar	EXP_CommBuffT[EXP_COMMBUFF_LEN];
uint	EXP_CountRH, EXP_CountRT;
uint	EXP_CountTH, EXP_CountTT;
uchar	EXP_ByteTT;
uchar	EXP_CommParity;
uchar	EXP_Async_TI;
uchar	EXP_Async_RI;
uchar	EXP_Async_RecData;
bit		R_P1_5,R_P1_6;
uchar	PUB_T0Type;
ulong	PUB_Hang_Timer;
uchar	data	PUB_Timer20;
uchar	data	PUB_Timer21;
uchar	data	PUB_Timer22;
uchar	data	PUB_Timer23;

uchar	PUB_HIGH_Card_Rest;
uchar	PUB_Card_Counter;
uchar	PUB_Card_RecData;
uchar	PUB_Card_RecBuff;
uint	PUB_Card_SendBuff;
uchar	PUB_Card_TI;
uchar	PUB_Card_RI;
uchar	PUB_Card_ICNO;
uchar	PUB_Card_ICReverse[8];
uchar	PUB_Card_ICPCB[8];
uchar	PUB_Card_ICT01[8];
uchar	PUB_Card_Asy[8];
uint	PUB_Card_GuardTime;
uint	PUB_Card_RecLimit;

uchar   PUB_PrintStep;
uchar   PUB_PrintOutData;

_IntEx0()		interrupt DEF_INT_EX0
{
    TL0 = TH0;
    TR0 = 1;
    PUB_T0Type = DEF_T0_ICREC;
    PUB_Card_Counter = 0;
    ET0 = 1;
    EX0 = 0x00;
}

_IntTime0()		interrupt DEF_INT_TIME0
{
	switch ( PUB_T0Type )
	{
		case DEF_T0_ICREC:
			PUB_Card_Counter++;
			if ( PUB_Card_Counter < 9 )
			{
				PUB_Card_RecBuff = PUB_Card_RecBuff >> 1;
				if ( INT0 == 0x01) PUB_Card_RecBuff = PUB_Card_RecBuff | 0x80;
			}
			else
			{
				ET0 = 0x00;
				TR0 = 0x00;
				PUB_Card_RecData = PUB_Card_RecBuff;
				PUB_Card_RI = 0x01;
				PUB_T0Type = DEF_T0_NONE;
				IE0 = 0x00;
				EX0 = 0x01;
			}
			break;
		case DEF_T0_ICSEND:
			if ( PUB_Card_SendBuff & 0x01 )
				INT0 = 0x01;
			else
				INT0 = 0x00;
			PUB_Card_SendBuff = PUB_Card_SendBuff >> 1;
			PUB_Card_Counter++;
			if ( PUB_Card_Counter >= 12 )
			{
				ET0 = 0x00;
				TR0 = 0x00;
				PUB_T0Type = DEF_T0_NONE;
				PUB_Card_TI = 0x01;
				INT0 = 0x01;
			}
	}
}

_IntAsync()		interrupt DEF_INT_ASYNC
{
	if ( RI == 0 )
    {
		TI = 0;
	    PUB_Async_TI = 1;
		PUB_CountTT++;
		if (PUB_CountTT >= DEF_COMMBUFF_LEN-1)	PUB_CountTT = 0;
		if ( PUB_CountTH != PUB_CountTT )
		{
			PUB_ByteTT = PUB_CommBuffT[PUB_CountTT];
			ACC = PUB_ByteTT;
			TB8 = P;
			if ( PUB_CommParity == DEF_PARITY_ODD ) 
				TB8 = TB8 ^ 0x01;
			SBUF = PUB_ByteTT;
		}
    }
    else
    {
        RI = 0;
        PUB_Async_RecData = SBUF;
		switch ( PUB_CommParity )
		{
			case DEF_PARITY_ODD:
				ACC = PUB_Async_RecData;
				if ( (P^0x01) == RB8  )
					PUB_Async_RI = 1;
				break;
			case DEF_PARITY_EVEN:
				ACC = PUB_Async_RecData;
				if ( P == RB8  )
					PUB_Async_RI = 1;
				break;
			default:
				PUB_Async_RI = 1;
		}
		if ( PUB_Async_RI )
		{
			PUB_CommBuffR[PUB_CountRH] = PUB_Async_RecData;
			PUB_CountRH++;
			if (PUB_CountRH >= DEF_COMMBUFF_LEN-1)	PUB_CountRH = 0;
		}
	}
}

void int_ex1(void) interrupt DEF_INT_EX1
{uchar	ISR_st;
	P1_5=0;P1_6=1;
	do{
		while ( XBYTE[EXP_LSR]&0x01)
		{
        	EXP_Async_RecData = XBYTE[EXP_LSR];
			EXP_Async_RI = 0;
			if ( EXP_CommParity ==0)
					EXP_Async_RI = 1;
			else if ((EXP_Async_RecData&0x04)==0)
					EXP_Async_RI = 1;
	    	EXP_Async_RecData = XBYTE[EXP_RHR];
			if ( EXP_Async_RI )
			{
				EXP_CommBuffR[EXP_CountRH] = EXP_Async_RecData;
				EXP_CountRH++;
				if (EXP_CountRH >= EXP_COMMBUFF_LEN-1)	EXP_CountRH = 0;
			}
		}
		ISR_st=XBYTE[EXP_ISR];
		if ( (ISR_st&0x0f)==0x02)
		{
			EXP_Async_TI = 1;
			EXP_CountTT++;
			if (EXP_CountTT >= EXP_COMMBUFF_LEN-1)	EXP_CountTT = 0;
			if ( EXP_CountTH != EXP_CountTT )
			{
				EXP_ByteTT = EXP_CommBuffT[EXP_CountTT];
				XBYTE[EXP_THR] = EXP_ByteTT;
			}
		}
	}
	while(P3_3==0);
	P1_5 = R_P1_5;	P1_6 = R_P1_6;
}
/*
{uchar	ISR_st;
	P1_5=0;P1_6=1;
	ISR_st=XBYTE[EXP_ISR];
	if ( ((ISR_st&0x0f)==0x02)||( (ISR_st&0x0f)==0x01))
    {
	    EXP_Async_TI = 1;
		EXP_CountTT++;
		if (EXP_CountTT >= EXP_COMMBUFF_LEN-1)	EXP_CountTT = 0;
		if ( EXP_CountTH != EXP_CountTT )
		{
			EXP_ByteTT = EXP_CommBuffT[EXP_CountTT];
			XBYTE[EXP_THR] = EXP_ByteTT;
		}
    }
		while ( XBYTE[EXP_LSR]&0x01)
		{
        	EXP_Async_RecData = XBYTE[EXP_LSR];
			EXP_Async_RI = 0;
			if ( EXP_CommParity ==0)
					EXP_Async_RI = 1;
			else if ((EXP_Async_RecData&0x04)==0)
					EXP_Async_RI = 1;
	    	EXP_Async_RecData = XBYTE[EXP_RHR];
			if ( EXP_Async_RI )
			{
				EXP_CommBuffR[EXP_CountRH] = EXP_Async_RecData;
				EXP_CountRH++;
				if (EXP_CountRH >= EXP_COMMBUFF_LEN-1)	EXP_CountRH = 0;
			}
		}
		if(P3_3==0)
		{P1_7=P1_7^1;
		while ( XBYTE[EXP_LSR]&0x01)
		{
        	EXP_Async_RecData = XBYTE[EXP_LSR];
			EXP_Async_RI = 0;
			if ( EXP_CommParity ==0)
					EXP_Async_RI = 1;
			else if ((EXP_Async_RecData&0x04)==0)
					EXP_Async_RI = 1;
	    	EXP_Async_RecData = XBYTE[EXP_RHR];
			if ( EXP_Async_RI )
			{
				EXP_CommBuffR[EXP_CountRH] = EXP_Async_RecData;
				EXP_CountRH++;
				if (EXP_CountRH >= EXP_COMMBUFF_LEN-1)	EXP_CountRH = 0;
			}
		}
		ISR_st=XBYTE[EXP_ISR];
	if ( ((ISR_st&0x0f)==0x02)||( (ISR_st&0x0f)==0x01))
    {
	    EXP_Async_TI = 1;
		EXP_CountTT++;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -