www.pudn.com > Moniterrfid.rar > rfid.$$$


 //******************************************************************************************  A    1 :V17 
//                                          头文件处理  A    2 : 
//******************************************************************************************  A    3 : 
#include	<18F252.H> A    4 : 
 //////// Standard Header file for the PIC18F252 device ////////////////  B    1 :I1 
#device PIC18F252  B    2 : 
#nolist  B    3N:X0 
//////// Program memory: 16384x16  Data RAM: 1536  Stack: 31  B    4N: 
//////// I/O: 23   Analog Pins: 5  B    5N: 
//////// Data EEPROM: 256  B    6N: 
//////// C Scratch area: 00   ID Location: 2000  B    7N: 
//////// Fuses: LP,XT,HS,RC,EC,EC_IO,H4,RC_IO,PROTECT,NOPROTECT,OSCSEN  B    8N: 
//////// Fuses: NOOSCSEN,NOBROWNOUT,BROWNOUT,WDT1,WDT2,WDT4,WDT8,WDT16,WDT32  B    9N: 
//////// Fuses: WDT64,WDT128,WDT,NOWDT,BORV20,BORV27,BORV42,BORV45,PUT,NOPUT  B   10N: 
//////// Fuses: CCP2C1,CCP2B3,NOSTVREN,STVREN,NODEBUG,DEBUG,NOLVP,LVP,WRT  B   11N: 
//////// Fuses: NOWRT,NOWRTD,WRTD,NOWRTB,WRTB,WRTC,NOWRTC,CPD,NOCPD,CPB  B   12N: 
//////// Fuses: NOCPB,EBTR,NOEBTR,EBTRB,NOEBTRB  B   13N: 
////////   B   14N: 
////////////////////////////////////////////////////////////////// I/O  B   15N: 
// Discrete I/O Functions: SET_TRIS_x(), OUTPUT_x(), INPUT_x(),  B   16N: 
//                         PORT_B_PULLUPS(), INPUT(),  B   17N: 
//                         OUTPUT_LOW(), OUTPUT_HIGH(),  B   18N: 
//                         OUTPUT_FLOAT(), OUTPUT_BIT()  B   19N: 
// Constants used to identify pins in the above are:  B   20N: 
  B   21N: 
#define PIN_A0  31744  B   22N: 
#define PIN_A1  31745  B   23N: 
#define PIN_A2  31746  B   24N: 
#define PIN_A3  31747  B   25N: 
#define PIN_A4  31748  B   26N: 
#define PIN_A5  31749  B   27N: 
#define PIN_A6  31750  B   28N: 
  B   29N: 
#define PIN_B0  31752  B   30N: 
#define PIN_B1  31753  B   31N: 
#define PIN_B2  31754  B   32N: 
#define PIN_B3  31755  B   33N: 
#define PIN_B4  31756  B   34N: 
#define PIN_B5  31757  B   35N: 
#define PIN_B6  31758  B   36N: 
#define PIN_B7  31759  B   37N: 
  B   38N: 
#define PIN_C0  31760  B   39N: 
#define PIN_C1  31761  B   40N: 
#define PIN_C2  31762  B   41N: 
#define PIN_C3  31763  B   42N: 
#define PIN_C4  31764  B   43N: 
#define PIN_C5  31765  B   44N: 
#define PIN_C6  31766  B   45N: 
#define PIN_C7  31767  B   46N: 
  B   47N: 
////////////////////////////////////////////////////////////////// Useful defines  B   48N: 
#define FALSE 0  B   49N: 
#define TRUE 1  B   50N: 
  B   51N: 
#define BYTE int  B   52N: 
#define BOOLEAN short int  B   53N: 
  B   54N: 
#define getc getch  B   55N: 
#define fgetc getch  B   56N: 
#define getchar getch  B   57N: 
#define putc putchar  B   58N: 
#define fputc putchar  B   59N: 
#define fgets gets  B   60N: 
#define fputs puts  B   61N: 
  B   62N: 
////////////////////////////////////////////////////////////////// Control  B   63N: 
// Control Functions:  RESET_CPU(), SLEEP(), RESTART_CAUSE()  B   64N: 
// Constants returned from RESTART_CAUSE() are:  B   65N: 
  B   66N: 
#define WDT_TIMEOUT      4       B   67N: 
#define MCLR_FROM_SLEEP  8       B   68N: 
#define NORMAL_POWER_UP  12      B   69N: 
#define BROWNOUT_RESTART 14      B   70N: 
  B   71N: 
////////////////////////////////////////////////////////////////// Timer 0  B   72N: 
// Timer 0 (AKA RTCC)Functions: SETUP_COUNTERS() or SETUP_TIMER0(),  B   73N: 
//                              SET_TIMER0() or SET_RTCC(),  B   74N: 
//                              GET_TIMER0() or GET_RTCC()  B   75N: 
// Constants used for SETUP_TIMER0() are:  B   76N: 
#define RTCC_INTERNAL   0  B   77N: 
#define RTCC_EXT_L_TO_H 32  B   78N: 
#define RTCC_EXT_H_TO_L 48  B   79N: 
  B   80N: 
#define RTCC_DIV_1      8  B   81N: 
#define RTCC_DIV_2      0  B   82N: 
#define RTCC_DIV_4      1  B   83N: 
#define RTCC_DIV_8      2  B   84N: 
#define RTCC_DIV_16     3  B   85N: 
#define RTCC_DIV_32     4  B   86N: 
#define RTCC_DIV_64     5  B   87N: 
#define RTCC_DIV_128    6  B   88N: 
#define RTCC_DIV_256    7  B   89N: 
  B   90N: 
#define RTCC_OFF        0x80    B   91N: 
  B   92N: 
#define RTCC_8_BIT      0x40    B   93N: 
  B   94N: 
// Constants used for SETUP_COUNTERS() are the above  B   95N: 
// constants for the 1st param and the following for  B   96N: 
// the 2nd param:  B   97N: 
  B   98N: 
////////////////////////////////////////////////////////////////// WDT  B   99N: 
// Watch Dog Timer Functions: SETUP_WDT() or SETUP_COUNTERS() (see above)  B  100N: 
//                            RESTART_WDT()  B  101N: 
//  B  102N: 
#define WDT_ON      0x100     B  103N: 
#define WDT_OFF     0         B  104N: 
  B  105N: 
////////////////////////////////////////////////////////////////// Timer 1  B  106N: 
// Timer 1 Functions: SETUP_TIMER_1, GET_TIMER1, SET_TIMER1  B  107N: 
// Constants used for SETUP_TIMER_1() are:  B  108N: 
//      (or (via |) together constants from each group)  B  109N: 
#define T1_DISABLED         0  B  110N: 
#define T1_INTERNAL         0x85  B  111N: 
#define T1_EXTERNAL         0x87  B  112N: 
#define T1_EXTERNAL_SYNC    0x83  B  113N: 
  B  114N: 
#define T1_CLK_OUT          8  B  115N: 
  B  116N: 
#define T1_DIV_BY_1         0  B  117N: 
#define T1_DIV_BY_2         0x10  B  118N: 
#define T1_DIV_BY_4         0x20  B  119N: 
#define T1_DIV_BY_8         0x30  B  120N: 
  B  121N: 
////////////////////////////////////////////////////////////////// Timer 2  B  122N: 
// Timer 2 Functions: SETUP_TIMER_2, GET_TIMER2, SET_TIMER2  B  123N: 
// Constants used for SETUP_TIMER_2() are:  B  124N: 
#define T2_DISABLED         0  B  125N: 
#define T2_DIV_BY_1         4  B  126N: 
#define T2_DIV_BY_4         5  B  127N: 
#define T2_DIV_BY_16        6  B  128N: 
  B  129N: 
////////////////////////////////////////////////////////////////// Timer 3  B  130N: 
// Timer 3 Functions: SETUP_TIMER_3, GET_TIMER3, SET_TIMER3  B  131N: 
// Constants used for SETUP_TIMER_3() are:  B  132N: 
//      (or (via |) together constants from each group)  B  133N: 
#define T3_DISABLED         0  B  134N: 
#define T3_INTERNAL         0x85  B  135N: 
#define T3_EXTERNAL         0x87  B  136N: 
#define T3_EXTERNAL_SYNC    0x83  B  137N: 
  B  138N: 
#define T3_DIV_BY_1         0  B  139N: 
#define T3_DIV_BY_2         0x10  B  140N: 
#define T3_DIV_BY_4         0x20  B  141N: 
#define T3_DIV_BY_8         0x30  B  142N: 
  B  143N: 
////////////////////////////////////////////////////////////////// CCP  B  144N: 
// CCP Functions: SETUP_CCPx, SET_PWMx_DUTY  B  145N: 
// CCP Variables: CCP_x, CCP_x_LOW, CCP_x_HIGH  B  146N: 
// Constants used for SETUP_CCPx() are:  B  147N: 
#define CCP_OFF                         0  B  148N: 
#define CCP_CAPTURE_FE                  4  B  149N: 
#define CCP_CAPTURE_RE                  5  B  150N: 
#define CCP_CAPTURE_DIV_4               6  B  151N: 
#define CCP_CAPTURE_DIV_16              7  B  152N: 
#define CCP_COMPARE_SET_ON_MATCH        8  B  153N: 
#define CCP_COMPARE_CLR_ON_MATCH        9  B  154N: 
#define CCP_COMPARE_INT                 0xA  B  155N: 
#define CCP_COMPARE_INT_AND_TOGGLE      0x2         B  156N: 
#define CCP_COMPARE_RESET_TIMER         0xB  B  157N: 
#define CCP_PWM                         0xC  B  158N: 
#define CCP_PWM_PLUS_1                  0x1c  B  159N: 
#define CCP_PWM_PLUS_2                  0x2c  B  160N: 
#define CCP_PWM_PLUS_3                  0x3c  B  161N: 
#define CCP_USE_TIMER3                  0x100         B  162N: 
long CCP_1;  B  163N:V18 
#byte   CCP_1    =                      0xfbe         B  164N: 
#byte   CCP_1_LOW=                      0xfbe         B  165N: 
#byte   CCP_1_HIGH=                     0xfbf         B  166N:V19 
long CCP_2;  B  167N:V20V21 
#byte   CCP_2    =                      0xfbb         B  168N: 
#byte   CCP_2_LOW=                      0xfbb         B  169N: 
#byte   CCP_2_HIGH=                     0xfbc         B  170N:V22 
////////////////////////////////////////////////////////////////// SPI  B  171N: 
// SPI Functions: SETUP_SPI, SPI_WRITE, SPI_READ, SPI_DATA_IN  B  172N: 
// Constants used in SETUP_SSP() are:  B  173N: 
#define SPI_MASTER       0x20  B  174N: 
#define SPI_SLAVE        0x24  B  175N: 
#define SPI_L_TO_H       0  B  176N: 
#define SPI_H_TO_L       0x10  B  177N: 
#define SPI_CLK_DIV_4    0  B  178N: 
#define SPI_CLK_DIV_16   1  B  179N: 
#define SPI_CLK_DIV_64   2  B  180N: 
#define SPI_CLK_T2       3  B  181N: 
#define SPI_SS_DISABLED  1  B  182N: 
  B  183N: 
#define SPI_SAMPLE_AT_END 0x8000  B  184N: 
#define SPI_XMIT_L_TO_H  0x4000  B  185N: 
  B  186N: 
////////////////////////////////////////////////////////////////// UART  B  187N: 
// Constants used in setup_uart() are:  B  188N: 
// FALSE - Turn UART off  B  189N: 
// TRUE  - Turn UART on  B  190N: 
#define UART_ADDRESS 2  B  191N: 
#define UART_DATA    4  B  192N: 
// TRUE  - Turn UART on  B  193N: 
////////////////////////////////////////////////////////////////// INTERNAL RC  B  194N: 
// Constants used in setup_oscillator() are:  B  195N: 
#define OSC_TIMER1  1  B  196N: 
#define OSC_NORMAL  0  B  197N: 
  B  198N: 
////////////////////////////////////////////////////////////////// ADC  B  199N: 
// ADC Functions: SETUP_ADC(), SETUP_ADC_PORTS() (aka SETUP_PORT_A),  B  200N: 
//                SET_ADC_CHANNEL(), READ_ADC()  B  201N: 
// Constants used in SETUP_ADC_PORTS() are:  B  202N: 
#define NO_ANALOGS             0x86         // None  B  203N: 
#define ALL_ANALOG             0x80         // A0 A1 A2 A3 A5 E0 E1 E2 Ref=Vdd  B  204N: 
#define ANALOG_RA3_REF         0x81         // A0 A1 A2 A5 E0 E1 E2 Ref=A3  B  205N: 
#define A_ANALOG               0x82         // A0 A1 A2 A3 A5 Ref=Vdd  B  206N: 
#define A_ANALOG_RA3_REF       0x83         // A0 A1 A2 A5 Ref=A3  B  207N: 
#define RA0_RA1_RA3_ANALOG     0x84         // A0 A1 A3 Ref=Vdd  B  208N: 
#define RA0_RA1_ANALOG_RA3_REF 0x85         // A0 A1 Ref=A3  B  209N: 
#define ANALOG_RA3_RA2_REF              0x88   // A0 A1 A5 E0 E1 E2 Ref=A2,A3  B  210N: 
#define ANALOG_NOT_RE1_RE2              0x89   // A0 A1 A2 A3 A5 E0 Ref=Vdd  B  211N: 
#define ANALOG_NOT_RE1_RE2_REF_RA3      0x8A   // A0 A1 A2 A5 E0 Ref=A3  B  212N: 
#define ANALOG_NOT_RE1_RE2_REF_RA3_RA2  0x8B   // A0 A1 A5 E0 Ref=A2,A3  B  213N: 
#define A_ANALOG_RA3_RA2_REF            0x8C   // A0 A1 A5 Ref=A2,A3  B  214N: 
#define RA0_RA1_ANALOG_RA3_RA2_REF      0x8D   // A0 A1 Ref=A2,A3  B  215N: 
#define RA0_ANALOG                      0x8E   // A0  B  216N: 
#define RA0_ANALOG_RA3_RA2_REF          0x8F   // A0 Ref=A2,A3  B  217N: 
// Constants used for SETUP_ADC() are:  B  218N: 
#define ADC_OFF                0              // ADC Off  B  219N: 
#define ADC_CLOCK_DIV_2        1  B  220N: 
#define ADC_CLOCK_DIV_4    0x101    B  221N: 
#define ADC_CLOCK_DIV_8     0x41  B  222N: 
#define ADC_CLOCK_DIV_16   0x141    B  223N: 
#define ADC_CLOCK_DIV_32    0x81  B  224N: 
#define ADC_CLOCK_DIV_64   0x181    B  225N: 
#define ADC_CLOCK_INTERNAL  0xc1              // Internal 2-6us  B  226N: 
  B  227N: 
// Constants used in READ_ADC() are:  B  228N: 
#define ADC_START_AND_READ     7   // This is the default if nothing is specified  B  229N: 
#define ADC_START_ONLY         1  B  230N: 
#define ADC_READ_ONLY          6  B  231N: 
  B  232N: 
////////////////////////////////////////////////////////////////// INT  B  233N: 
// Interrupt Functions: ENABLE_INTERRUPTS(), DISABLE_INTERRUPTS(),  B  234N: 
//                      EXT_INT_EDGE()  B  235N: 
//  B  236N: 
// Constants used in EXT_INT_EDGE() are:  B  237N: 
#define L_TO_H              0x40  B  238N: 
#define H_TO_L                 0  B  239N: 
// Constants used in ENABLE/DISABLE_INTERRUPTS() are:  B  240N: 
#define GLOBAL                    0xF2C0  B  241N: 
#define INT_RTCC                  0xF220  B  242N: 
#define INT_TIMER0                0xF220  B  243N: 
#define INT_TIMER1                0x9D01  B  244N: 
#define INT_TIMER2                0x9D02  B  245N: 
#define INT_TIMER3                0xA002  B  246N: 
#define INT_EXT                   0xF210  B  247N: 
#define INT_EXT1                  0xF008  B  248N: 
#define INT_EXT2                  0xF010  B  249N: 
#define INT_RB                    0xF208  B  250N: 
#define INT_AD                    0x9D40  B  251N: 
#define INT_RDA                   0x9D20  B  252N: 
#define INT_TBE                   0x9D10  B  253N: 
#define INT_SSP                   0x9D08  B  254N: 
#define INT_CCP1                  0x9D04  B  255N: 
#define INT_CCP2                  0xA001  B  256N: 
#define INT_BUSCOL                0xA008  B  257N: 
#define INT_LOWVOLT               0xA004  B  258N: 
#define INT_EEPROM                0xA010  B  259N: 
  B  260N: 
#list  B  261 :X1E 
 B  261 : 
#device 	ICD=TRUE  A    5 : 
#fuses		HS,NOWDT,NOLVP  A    6 : 
#use		delay(clock=4000000)  A    7 :V24V26 
#use		rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)  A    8 : 
#use		fast_io(c)  A    9 : 
#use		fast_io(a)  A   10 : 
#use		fast_io(b)  A   11 : 
//******************************************************************************************  A   12 : 
//                                          IO口处理  A   13 : 
//******************************************************************************************  A   14 : 
#define		RF_DATA_IN	PIN_C2  A   15 : 
#bit		Time_Out=	0xff2.2  A   16 :V30 
#bit		Star_Timer=	0xfd5.7  A   17 :V31 
//******************************************************************************************  A   18 : 
//                                          变量处理  A   19 : 
//******************************************************************************************  A   20 : 
// LCD 模块命令  A   21 : 
#define	DISP_ON		0x0C	//开显示  A   22 : 
#define	DISP_ON_C	0x0E	//开显示, 开指针  A   23 : 
#define	DISP_ON_B	0x0F	//开显示, 开指针,开闪烁  A   24 : 
#define	DISP_OFF	0x08	//关显示  A   25 : 
#define	CLR_DISP	0x01	//清显示的操作数  A   26 : 
#define	ENTRY_INC	0x06	//操作数  A   27 : 
#define	ENTRY_INC_S	0x07	//操作数  A   28 : 
#define	ENTRY_DEC	0x04	//操作数  A   29 : 
#define	ENTRY_DEC_S	0x05	//操作数  A   30 : 
#define	DD_RAM_ADDR	0x80	//初始化第一行显示的操作数  A   31 : 
#define	DD_RAM_UL	0xc0	//初始化第二行显示的操作数  A   32 : 
//*******************************************************  A   33 : 
int16		TIMER_1=0;  A   34 :V32V33 
int8		moniter_Data[11],normal_Data[11];  A   35 :V34V35 
int8		sendData[11];  A   36 :V36 
int1		Check_Data_bit;  A   37 :V37 
int8		temp;  A   38 :V38 
int8		flag,jing;  A   39 :V39V40 
int16		last_timer,width,haha;  A   40 :V41V42V43 
int8		timeout=0,bit_over=1,bitdata=0;  A   41 :V44V45V46 
int8		a=0,b=0;  A   42 :V47V48 
  A   43 : 
//******************************************************************************************  A   44 : 
//                                          寄存器处理  A   45 : 
//******************************************************************************************  A   46 : 
#byte		ADCON0=0xfc2  A   47 : 
#byte		ADCON1=0xfc1  A   48 :V49 
#byte		TRISA=0xf92  A   49 :V50 
#byte		ADRESH=0xfc4  A   50 :V51 
#byte		STATUS=0xfd8  A   51 :V52 
#byte		PORTA=0xf80  A   52 :V53 
#byte		PORTB=0xf81  A   53 :V54 
#byte		TRISA=0xf92  A   54 :V55 
#byte		TRISB=0xf93  A   55 : 
#byte		SPBRG=0xfaf  A   56 :V56 
#byte		TXSTA=0xfac  A   57 :V57 
#byte		RCSTA=0xfab  A   58 :V58 
#byte		TRISC=0xf94  A   59 :V59 
#byte		PIE1=0xf9d  A   60 :V60 
#byte		RCREG=0xfae  A   61 :V61 
#define		GO		2  A   62 : 
#define		C		0  A   63 : 
#define		RCIE	5  A   64 : 
#bit		tim3Str=	0xfb1.0  A   65 :V62 
#bit		over=		flag.0  A   66 :V63 
#bit	LCD_DB7=    	PORTB.5    A   67 :V64 
#bit	LCD_DB6=    	PORTB.4    A   68 :V65 
#bit	LCD_DB5=    	PORTB.3    A   69 :V66 
#bit	LCD_DB4=    	PORTB.2    A   70 :V67 
#bit	LCD_E=    		PORTA.5    A   71 :V68 
#bit	LCD_RS=    		PORTB.1    A   72 :V69 
#bit	LCD_DB7_DIR=	TRISB.5     A   73 :V70 
#bit	LCD_DB6_DIR=	TRISB.4     A   74 :V71 
#bit	LCD_DB5_DIR=	TRISB.3     A   75 :V72 
#bit	LCD_DB4_DIR=	TRISB.2     A   76 :V73 
#bit	LCD_E_DIR=		TRISA.5     A   77 :V74 
#bit	LCD_RS_DIR=		TRISB.1    A   78 :V75 
#bit	CFE_DIR=		TRISA.2  A   79 :V76 
#bit	CFE	=			PORTA.2				  A   80 :V77 
//******************************************************************************************  A   81 : 
//                                          函数声明处理  A   82 : 
//******************************************************************************************  A   83 : 
void moniter(void);  A   84 :V78f335P335 
void moniter_Inti(void);  A   85 :f336P336 
void moniter_Clern_Number(void);  A   86 :f337P337 
void moniter_Recive(void);  A   87 :f338P338 
//******************************************************************************************  A   88 : 
void normal(void);  A   89 :f339P339 
void normal_Inti(void);  A   90 :f340P340 
void normal_Clern_Number(void);  A   91 :f341P341 
void normal_Recive(void);  A   92 :f342P342 
//*******************************************************************************  A   93 : 
void simulation_Inti(void);  A   94 :f343P343 
void simulation(void);  A   95 :f344P344 
void TIMER3_isr(void);  A   96 :f345P345 
//*******************************************************************************  A   97 : 
void InitADKEY(void);  A   98 :f346P346 
int8 GetADKEY(void);  A   99 :f347P347 
void InitLCD(void);  A  100 :f348P348 
void putcLCD(int8 Byte);  A  101 :f349V94P349 
void SendCmd(int8 Byte);  A  102 :f350V96P350 
void clrLCD(void);  A  103 :f351P351 
void write(int8 Byte);  A  104 :f352V99P352 
//******************************************************************************************  A  105 : 
//                                          监听模块  A  106 : 
//******************************************************************************************  A  107 : 
#INT_CCP1  A  108 : 
void rise (void)  A  109 :f353 
{  A  110 :{52 
		if(a==1)  A  111 : 
	{  A  112 : 
		b=1;  A  113 :{56 
		if(CCP_1320)  A  133 : 
	{  A  134 : 
		if(width>330&&width<800)  A  135 :{76 
		{  A  136 : 
			bitdata=1;  A  137 :{81 
			bit_over=1;  A  138 : 
			last_timer=CCP_1;  A  139 : 
		}  A  140 :}82 
		else  A  141 : 
		{  A  142 : 
		timeout=1;  A  143 :{84 
		}  A  144 :}85 
	}  A  145 :}86 
}  A  146 :}87 
#INT_CCP2  A  147 : 
void fall (void)  A  148 :f354 
{  A  149 :{89 
		a=1;  A  150 : 
	if(CCP_2320)  A  160 : 
	{  A  161 : 
		if(width>330&&width<800)  A  162 :{102 
		{  A  163 : 
			bitdata=0;  A  164 :{107 
			bit_over=1;  A  165 : 
			last_timer=CCP_2;  A  166 : 
		}  A  167 :}108 
		else  A  168 : 
		{  A  169 : 
		timeout=1;  A  170 :{110 
		}  A  171 :}111 
	}  A  172 :}112 
}  A  173 :}113 
void moniter_Inti(void)  A  174 :f336 
{  A  175 :{114 
	setup_ccp1(CCP_CAPTURE_RE);    							// Configure CCP1 to capture rise  A  176 : 
	setup_ccp2(CCP_CAPTURE_FE);    							// Configure CCP2 to capture fall  A  177 : 
	setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);    				// Start timer 1  A  178 : 
	setup_timer_0(RTCC_INTERNAL|RTCC_OFF|RTCC_8_BIT|RTCC_DIV_1);  A  179 : 
	set_tris_c(0x86);  A  180 : 
	disable_interrupts(GLOBAL);  A  181 : 
	enable_interrupts(INT_CCP1);  A  182 : 
	enable_interrupts(INT_CCP2);  A  183 : 
}  A  184 :}117 
//************************************************************  A  185 : 
void moniter_Clern_Number(void)  A  186 :f337 
{  A  187 :{118 
       moniter_Data[0]=0;  A  188 : 
       moniter_Data[1]=0;               A  189 : 
       moniter_Data[2]=0;        A  190 : 
       moniter_Data[3]=0;               A  191 : 
       moniter_Data[4]=0;        A  192 : 
       moniter_Data[5]=0;               A  193 : 
       moniter_Data[6]=0;        A  194 : 
       moniter_Data[7]=0;               A  195 : 
       moniter_Data[8]=0;        A  196 : 
       moniter_Data[9]=0;               A  197 : 
       moniter_Data[10]=0;                                                                         A  198 : 
}  A  199 :}120 
//************************************************************  A  200 : 
void moniter_Recive(void)  A  201 :f338 
{  A  202 :{121 
	int8	header,pc;  A  203 :V102V103 
	int8	temp,temp1;  A  204 :V104V105 
	int16	temp2;  A  205 :V106 
	int8	ByteCounter;  A  206 :V107 
	int8	*PData,*PData1;  A  207 :V108V109 
	int8	BitCounter;  A  208 :V110 
	int16	fall,rise,num;  A  209 :V111V112V113 
	int16	value,delay_time;  A  210 :V114V115 
str:  A  211 : 
	disable_interrupts(GLOBAL);  A  212 :L116 
	if(input(RF_DATA_IN)==1)  A  213 : 
	if(input(RF_DATA_IN)==1)  A  214 : 
	if(input(RF_DATA_IN)==1)  A  215 : 
	if(input(RF_DATA_IN)==1)  A  216 : 
	if(input(RF_DATA_IN)==1)  A  217 : 
	{  A  218 : 
		enable_interrupts(GLOBAL);  A  219 :{145 
		while(b==0);  A  220 : 
		a=0;b=0;  A  221 : 
		delay_us(1);  A  222 : 
		if(haha<430||haha>550)  A  223 : 
		{  A  224 : 
  A  225 : 
			goto	str;  A  226 :{153 
		}  A  227 :}154 
		last_timer=CCP_1;  A  228 : 
		header=0;  A  229 : 
		value=0;  A  230 : 
		do  A  231 : 
		{  A  232 : 
			jing=header;  A  233 :{158 
			bit_over=0;  A  234 : 
			timeout=0;  A  235 : 
			num=0;  A  236 : 
			while(!bit_over)  A  237 : 
			{  A  238 : 
				delay_us(1);  A  239 :{162 
				num++;  A  240 : 
				if(num>600)  A  241 : 
				{  A  242 : 
				timeout=1;  A  243 :{165 
				break;  A  244 : 
				}  A  245 :}166 
			}  A  246 :}167 
			bit_over=0;  A  247 : 
			if(!(timeout==0&&bitdata==1))  A  248 : 
			{  A  249 : 
				timeout=0;  A  250 :{172 
				goto	str;  A  251 : 
			}  A  252 :}173 
		//	value+=TIMER_1;  A  253 : 
			header=header+1;  A  254 : 
		}while(header<8);  A  255 :}174 
	//	delay_time=value*0.2;  A  256 : 
		if(header==8)  A  257 : 
		{  A  258 : 
			ByteCounter=0;  A  259 :{179 
			PData=moniter_Data;  A  260 : 
			do  A  261 : 
			{  A  262 : 
				BitCounter=5;  A  263 :{183 
				temp1=0;  A  264 : 
				do  A  265 : 
				{  A  266 : 
					bit_over=0;  A  267 :{187 
					timeout=0;  A  268 : 
					num=0;  A  269 : 
					while(!bit_over)  A  270 : 
					{  A  271 : 
						delay_us(1);  A  272 :{191 
						num++;  A  273 : 
						if(num>600)  A  274 : 
						{  A  275 : 
						timeout=1;  A  276 :{194 
						break;  A  277 : 
						}  A  278 :}195 
					}  A  279 :}196 
					bit_over=0;  A  280 : 
					if(timeout==1)  A  281 : 
					{  A  282 : 
						timeout=0;  A  283 :{199 
						goto	str;  A  284 : 
					}  A  285 :}200 
					temp=bitdata;  A  286 : 
					temp1=(temp1<<1)|temp;  A  287 : 
					BitCounter--;  A  288 : 
				}while(BitCounter);  A  289 :}201 
				*(PData+ByteCounter)=temp1;  A  290 : 
				ByteCounter=ByteCounter+1;  A  291 : 
			}while(ByteCounter<11);  A  292 :}204 
			if(temp==0)  A  293 : 
			{  A  294 : 
				  A  295 : 
				PData=moniter_Data;  A  296 :{209 
				PData1=sendData;  A  297 : 
				for(ByteCounter=0;ByteCounter<11;ByteCounter++)//有5个字节数据  A  298 : 
       				{  A  299 : 
              			temp=(((*(PData+ByteCounter))&0x10)>>4)+(((*(PData+ByteCounter))&0x08)>>3)+(((*(PData+ByteCounter))&0x04)>>2)+(((*(PData+ByteCounter))&0x02)>>1);    A  300 :{216 
					if(ByteCounter==10)  A  301 : 
						{     A  302 : 
						temp1=*(PData+ByteCounter)&0x1f;  A  303 :{219 
						*(PData1+ByteCounter)=temp1;  A  304 : 
              			  A  305 : 
       					}  A  306 :}220 
					else  A  307 : 
						{  A  308 : 
						if((temp&0x01)==((*(PData+ByteCounter))&0x01))//效验高4位  A  309 :{222 
              						{  A  310 : 
							temp1=*(PData+ByteCounter)&0x1f;  A  311 :{225 
							*(PData1+ByteCounter)=temp1;  A  312 : 
							temp1=(temp1&0x1e)>>1;  A  313 : 
							*(PData+ByteCounter)=temp1;  A  314 : 
              						}  A  315 :}226 
              					else  A  316 : 
              						{  A  317 : 
                     				moniter_Clern_Number();//并清所有数据  A  318 :{228 
									goto	str;  A  319 : 
              						}  A  320 :}229 
						}  A  321 :}230 
					}  A  322 :}231 
				output_high(PIN_C5);  A  323 : 
				delay_ms(1000);  A  324 : 
				output_low(PIN_C5);  A  325 : 
				Check_Data_bit=1;  A  326 : 
				disable_interrupts(GLOBAL);  A  327 : 
				disable_interrupts(INT_CCP1);  A  328 : 
				disable_interrupts(INT_CCP2);  A  329 : 
				SendCmd(0xc0);  A  330 : 
				putcLCD(' ');  A  331 : 
				putcLCD(' ');  A  332 : 
				putcLCD(' ');  A  333 : 
				putcLCD(' ');  A  334 : 
				putcLCD(' ');  A  335 : 
				putcLCD('s');  A  336 : 
				putcLCD('u');  A  337 : 
				putcLCD('c');  A  338 : 
				putcLCD('c');  A  339 : 
				putcLCD('e');  A  340 : 
				putcLCD('s');  A  341 : 
				putcLCD('s');  A  342 : 
			}  A  343 :}236 
			else  A  344 : 
			{  A  345 : 
				moniter_Clern_Number();  A  346 :{238 
				goto	str;  A  347 : 
			}  A  348 :}239 
		}  A  349 :}240 
	}	  A  350 :}241 
}  A  351 :}242 
//***************************************************************  A  352 : 
void moniter(void)  A  353 :f335 
{  A  354 :{243 
	int8	temp;  A  355 :V117 
  A  356 : 
	delay_ms(100);  A  357 : 
	moniter_Inti();  A  358 : 
wo:  A  359 : 
	moniter_Recive();  A  360 :L118 
	if(Check_Data_bit==0)  A  361 : 
	goto	wo;  A  362 : 
	else  A  363 : 
	{  A  364 : 
		Check_Data_bit=0;  A  365 :{251 
		simulation_Inti();  A  366 : 
		while(1)  A  367 : 
		{  A  368 : 
			simulation();  A  369 :{254 
		}  A  370 :}255 
	}  A  371 :}256 
}  A  372 :}257 
//******************************************************************************************  A  373 : 
//                                          读卡模块  A  374 : 
//******************************************************************************************  A  375 : 
void normal_Inti(void)  A  376 :f340 
{  A  377 :{258 
	setup_ccp1(CCP_CAPTURE_RE);    							// Configure CCP1 to capture rise  A  378 : 
	setup_ccp2(CCP_CAPTURE_FE);    							// Configure CCP2 to capture fall  A  379 : 
	setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);    				// Start timer 1  A  380 : 
	setup_timer_0(RTCC_INTERNAL|RTCC_OFF|RTCC_8_BIT|RTCC_DIV_1);  A  381 : 
	set_tris_c(0x86);  A  382 : 
}  A  383 :}260 
//************************************************************  A  384 : 
void normal_Clern_Number(void)  A  385 :f341 
{  A  386 :{261 
       normal_Data[0]=0;  A  387 : 
       normal_Data[1]=0;               A  388 : 
       normal_Data[2]=0;        A  389 : 
       normal_Data[3]=0;               A  390 : 
       normal_Data[4]=0;        A  391 : 
       normal_Data[5]=0;               A  392 : 
       normal_Data[6]=0;        A  393 : 
       normal_Data[7]=0;               A  394 : 
       normal_Data[8]=0;        A  395 : 
       normal_Data[9]=0;               A  396 : 
       normal_Data[10]=0;                                                                         A  397 : 
}  A  398 :}263 
//************************************************************  A  399 : 
void normal_Recive(void)  A  400 :f342 
{  A  401 :{264 
	int8	header,pc;  A  402 :V119V120 
	int8	temp,temp1;  A  403 :V121V122 
	int16	temp2;  A  404 :V123 
	int8	ByteCounter;  A  405 :V124 
	int8	*PData,*PData1;  A  406 :V125V126 
	int8	BitCounter;  A  407 :V127 
	int16	fall,rise;  A  408 :V128V129 
str:  A  409 : 
	if(input(RF_DATA_IN)==0)  A  410 :L130 
	if(input(RF_DATA_IN)==0)  A  411 : 
	if(input(RF_DATA_IN)==0)  A  412 : 
	if(input(RF_DATA_IN)==0)  A  413 : 
	if(input(RF_DATA_IN)==0)  A  414 : 
	{  A  415 : 
		while(input(RF_DATA_IN)==0);  A  416 :{287 
		rise=CCP_1;  A  417 : 
		delay_us(10);  A  418 : 
		while(input(RF_DATA_IN)==1);  A  419 : 
		fall=CCP_2;  A  420 : 
		TIMER_1=fall-rise;  A  421 : 
		if(falltemp2)  A  425 : 
		{  A  426 : 
			goto	str;  A  427 :{303 
		}  A  428 :}304 
		temp2=540;  A  429 : 
		if(TIMER_1temp2)  A  447 : 
			{  A  448 : 
				header=0;  A  449 :{328 
				goto	str;  A  450 : 
			}  A  451 :}329 
			temp2=230;  A  452 : 
			if(TIMER_1>4)+(((*(PData+ByteCounter))&0x08)>>3)+(((*(PData+ByteCounter))&0x04)>>2)+(((*(PData+ByteCounter))&0x02)>>1);    A  566 :{442 
					if(ByteCounter==10)  A  567 : 
					{     A  568 : 
						temp1=*(PData+ByteCounter)&0x1f;  A  569 :{445 
						*(PData1+ByteCounter)=temp1;  A  570 : 
              			  A  571 : 
       				}  A  572 :}446 
					else  A  573 : 
					{  A  574 : 
						if((temp&0x01)==((*(PData+ByteCounter))&0x01))//效验高4位  A  575 :{448 
              			{  A  576 : 
							temp1=*(PData+ByteCounter)&0x1f;  A  577 :{451 
							*(PData1+ByteCounter)=temp1;  A  578 : 
							temp1=(temp1&0x1e)>>1;  A  579 : 
							*(PData+ByteCounter)=temp1;  A  580 : 
              			}  A  581 :}452 
              			else  A  582 : 
              			{  A  583 : 
                     	normal_Clern_Number();//并清所有数据  A  584 :{454 
						goto	str;  A  585 : 
              			}  A  586 :}455 
					}  A  587 :}456 
				}  A  588 :}457 
				output_high(PIN_C5);  A  589 : 
				delay_ms(1000);  A  590 : 
				output_low(PIN_C5);  A  591 : 
				Check_Data_bit=1;  A  592 : 
				SendCmd(0xc0);  A  593 : 
				putcLCD(' ');  A  594 : 
				putcLCD(' ');  A  595 : 
				putcLCD(' ');  A  596 : 
				putcLCD(' ');  A  597 : 
				putcLCD(' ');  A  598 : 
				putcLCD('s');  A  599 : 
				putcLCD('u');  A  600 : 
				putcLCD('c');  A  601 : 
				putcLCD('c');  A  602 : 
				putcLCD('e');  A  603 : 
				putcLCD('s');  A  604 : 
				putcLCD('s');  A  605 : 
			}  A  606 :}459 
			else  A  607 : 
			{  A  608 : 
				normal_Clern_Number();  A  609 :{461 
				goto	str;  A  610 : 
			}  A  611 :}462 
		}  A  612 :}463 
	}	  A  613 :}464 
}  A  614 :}465 
//***************************************************************  A  615 : 
void normal(void)  A  616 :f339 
{  A  617 :{466 
	int8	temp;  A  618 :V131 
	delay_ms(100);  A  619 : 
	normal_Inti();  A  620 : 
ni:  A  621 : 
	normal_Recive();  A  622 :L132 
	if(Check_Data_bit==0)  A  623 : 
	goto	ni;  A  624 : 
	else  A  625 : 
	{  A  626 : 
		Check_Data_bit=0;  A  627 :{474 
		simulation_Inti();  A  628 : 
		while(1)  A  629 : 
		{	  A  630 : 
			simulation();  A  631 :{477 
		}  A  632 :}478 
	}  A  633 :}479 
}  A  634 :}480 
//******************************************************************************************  A  635 : 
//                                          模拟卡片模块  A  636 : 
//******************************************************************************************  A  637 : 
#INT_TIMER3  A  638 : 
void TIMER3_isr(void)  A  639 :f345 
{  A  640 :{481 
	over=1;  A  641 : 
	set_timer3(65082);  A  642 : 
}  A  643 :}483 
void simulation_Inti(void)  A  644 :f343 
{  A  645 :{484 
	setup_timer_3(T3_INTERNAL|0x00);  A  646 : 
	set_timer3(65082);  A  647 : 
	over=0;  A  648 : 
	enable_interrupts(INT_TIMER3);  A  649 : 
	enable_interrupts(global);  A  650 : 
	CFE_DIR=0;  A  651 : 
}  A  652 :}486 
void simulation(void)  A  653 :f344 
{  A  654 :{487 
	int8	header,*PData,count,i,run;  A  655 :V133V134V135V136V137 
	tim3Str=1;  A  656 : 
	for(header=0;header<9;header++)  A  657 : 
	{  A  658 : 
		tim3Str=1;  A  659 :{495 
		CFE=1;  A  660 : 
		delay_us(251);  A  661 : 
		CFE=0;  A  662 : 
		while(over==0);  A  663 : 
		over=0;  A  664 : 
		tim3Str=0;  A  665 : 
	}  A  666 :}502 
	PData=sendData;  A  667 : 
	for(count=0;count<11;count++)  A  668 : 
	{	  A  669 : 
		temp=*(PData+count);  A  670 :{509 
		temp=temp<<3;  A  671 : 
	//	delay_us(1);  A  672 : 
		for(i=0;i<5;i++)  A  673 : 
		{  A  674 : 
			run=temp&0x80;  A  675 :{516 
			if(run==0)  A  676 : 
			{  A  677 : 
				tim3Str=1;  A  678 :{519 
				CFE=0;  A  679 : 
				delay_us(256);  A  680 : 
				CFE=1;  A  681 : 
			}  A  682 :}521 
			else  A  683 : 
			{  A  684 : 
				tim3Str=1;  A  685 :{523 
				CFE=1;  A  686 : 
				delay_us(256);  A  687 : 
				CFE=0;  A  688 : 
			}  A  689 :}525 
			temp=temp<<1;  A  690 : 
			while(over==0);  A  691 : 
			over=0;  A  692 : 
			tim3Str=0;  A  693 : 
		}  A  694 :}531 
	}  A  695 :}532 
}  A  696 :}533 
//******************************************************************************************  A  697 : 
//                                          主函数模块  A  698 : 
//******************************************************************************************  A  699 : 
void InitADKEY(void)  A  700 :f346 
	{  A  701 :{534 
		#asm  A  702 : 
		movlw	0x41  A  703 : 
		movwf	ADCON0  A  704 : 
		movlw	0x02  A  705 : 
		movwf	ADCON1  A  706 : 
		bsf		TRISA,0  A  707 : 
		#endasm  A  708 : 
	}  A  709 :}536 
int8 GetADKEY(void)  A  710 :f347 
{  A  711 :{537 
		int8	ADKEYH;  A  712 :V138 
		int8	KEYRES;  A  713 :V139 
		#asm  A  714 : 
			bsf		ADCON0,GO  A  715 : 
		IsOver:  A  716 : 
			btfsc	ADCON0,GO  A  717 : 
			goto	IsOver  A  718 : 
			movf	ADRESH,W  A  719 : 
			movwf	ADKEYH  A  720 : 
			movlw	0x31  A  721 : 
			movwf	KEYRES  A  722 : 
		KEY1:	  A  723 : 
			movlw	0xcb  A  724 : 
			subwf	ADKEYH,W  A  725 : 
			btfss	STATUS,C  A  726 : 
			goto	KEY2  A  727 : 
			goto	KEYOUT  A  728 : 
		KEY2:  A  729 : 
			incf	KEYRES,F  A  730 : 
			movlw	0xa8  A  731 : 
			subwf	ADKEYH,W  A  732 : 
			btfss	STATUS,C  A  733 : 
			goto	KEY3  A  734 : 
			goto	KEYOUT  A  735 : 
		KEY3:  A  736 : 
			incf	KEYRES,F  A  737 : 
			movlw	0x8f  A  738 : 
			subwf	ADKEYH,W  A  739 : 
			btfss	STATUS,C  A  740 : 
			goto	KEY4  A  741 : 
			goto	KEYOUT  A  742 : 
		KEY4:  A  743 : 
			incf	KEYRES,F  A  744 : 
			movlw	0x7c  A  745 : 
			subwf	ADKEYH,W  A  746 : 
			btfss	STATUS,C  A  747 : 
			goto	KEY5  A  748 : 
			goto	KEYOUT  A  749 : 
		KEY5:  A  750 : 
			incf	KEYRES,F  A  751 : 
			movlw	0x6f  A  752 : 
			subwf	ADKEYH,W  A  753 : 
			btfss	STATUS,C  A  754 : 
			goto	KEY6  A  755 : 
			goto	KEYOUT  A  756 : 
		KEY6:  A  757 : 
			incf	KEYRES,F  A  758 : 
			movlw	0x63  A  759 : 
			subwf	ADKEYH,W  A  760 : 
			btfss	STATUS,C  A  761 : 
			goto	KEY7  A  762 : 
			goto	KEYOUT  A  763 : 
		KEY7:  A  764 : 
			incf	KEYRES,F  A  765 : 
			movlw	0x5a  A  766 : 
			subwf	ADKEYH,W  A  767 : 
			btfss	STATUS,C  A  768 : 
			goto	KEY8  A  769 : 
			goto	KEYOUT  A  770 : 
		KEY8:  A  771 : 
			incf	KEYRES,F  A  772 : 
			movlw	0x53  A  773 : 
			subwf	ADKEYH,W  A  774 : 
			btfss	STATUS,C  A  775 : 
			goto	KEY9  A  776 : 
			goto	KEYOUT  A  777 : 
		KEY9:  A  778 : 
			incf	KEYRES,F  A  779 : 
			movlw	0x4c  A  780 : 
			subwf	ADKEYH,W  A  781 : 
			btfss	STATUS,C  A  782 : 
			goto	KEY0  A  783 : 
			goto	KEYOUT  A  784 : 
		KEY0:  A  785 : 
			movlw	0x30  A  786 : 
			movwf	KEYRES  A  787 : 
		KEYOUT:  A  788 : 
			movf	KEYRES,W  A  789 : 
		#endasm  A  790 : 
		return	KEYRES;  A  791 : 
}  A  792 :}551 
void InitLCD(void)  A  793 :f348 
{  A  794 :{552 
	LCD_DB7_DIR=0;  A  795 : 
    LCD_DB6_DIR=0;  A  796 : 
    LCD_DB5_DIR=0;  A  797 : 
    LCD_DB4_DIR=0;  A  798 : 
    LCD_E_DIR=0;  A  799 : 
    LCD_RS_DIR=0;  A  800 : 
    LCD_DB7=0;  A  801 : 
    LCD_DB6=0;  A  802 : 
    LCD_DB5=0;  A  803 : 
    LCD_DB4=0;  A  804 : 
    LCD_E=0;  A  805 : 
    LCD_RS=0;  A  806 : 
	LCD_E=1;                  //清数据线  A  807 : 
	LCD_E=0;  A  808 : 
	LCD_DB5=1;	           //设置LCD工作方式  A  809 : 
 	LCD_E=1;  A  810 : 
	LCD_E=0;  A  811 : 
	delay_ms(1000);  A  812 : 
	SendCmd(0x28);  A  813 : 
	SendCmd(DISP_ON);  A  814 : 
	SendCmd(ENTRY_INC);  A  815 : 
	SendCmd(DD_RAM_ADDR);  A  816 : 
	clrLCD();  A  817 : 
	  A  818 : 
}  A  819 :}555 
void putcLCD(int8 mychar)  A  820 :f349V94 
{	  A  821 :{556 
    LCD_RS=1;	      //设置为送数据模式  A  822 : 
	write(mychar);  A  823 : 
	mychar=mychar<<4;  A  824 : 
    write(mychar);  A  825 : 
	delay_ms(100);  A  826 : 
}  A  827 :}558 
void SendCmd(int8 mychar)  A  828 :f350V96 
{  A  829 :{559 
		  A  830 : 
	LCD_RS=0;    	  //设置为送命令模式  A  831 : 
	write(mychar);  A  832 : 
	mychar=mychar<<4;  A  833 : 
    write(mychar);  A  834 : 
	delay_ms(100);  A  835 : 
}  A  836 :}561 
void clrLCD(void)  A  837 :f351 
{	  A  838 :{562 
	SendCmd(CLR_DISP);  A  839 : 
}  A  840 :}564 
void write(int8 mychar)  A  841 :f352V99 
{  A  842 :{565 
	if((mychar&0x80)!=0)  A  843 : 
	LCD_DB7=1;  A  844 : 
	else  A  845 : 
	LCD_DB7=0;  A  846 : 
	if((mychar&0x40)!=0)  A  847 : 
	LCD_DB6=1;  A  848 : 
	else  A  849 : 
	LCD_DB6=0;  A  850 : 
	if((mychar&0x20)!=0)  A  851 : 
	LCD_DB5=1;  A  852 : 
	else  A  853 : 
	LCD_DB5=0;  A  854 : 
	if((mychar&0x10)!=0)  A  855 : 
	LCD_DB4=1;  A  856 : 
	else  A  857 : 
	LCD_DB4=0;  A  858 : 
	LCD_E=1;  A  859 : 
	LCD_E=0;  A  860 : 
}  A  861 :}579 
void main(void)  A  862 :f387 
{  A  863 :{581 
	int8	temp;  A  864 :V153 
	CFE_DIR=0;  A  865 : 
	InitADKEY();  A  866 : 
   	InitLCD();  A  867 : 
	SendCmd(0x40);  A  868 : 
	SendCmd(0x40);  A  869 : 
	putcLCD(0x18);  A  870 : 
	putcLCD(0x18);  A  871 : 
	putcLCD(0x07);  A  872 : 
	putcLCD(0x08);  A  873 : 
	putcLCD(0x08);  A  874 : 
	putcLCD(0x08);  A  875 : 
	putcLCD(0x07);  A  876 : 
	putcLCD(0x00);	  A  877 : 
	while(1)  A  878 : 
	{  A  879 : 
		SendCmd(0x80);  A  880 :{586 
		putcLCD(' ');  A  881 : 
		putcLCD(' ');  A  882 : 
		putcLCD(' ');  A  883 : 
		putcLCD(' ');  A  884 : 
		putcLCD('M');  A  885 : 
		putcLCD('a');  A  886 : 
		putcLCD('i');  A  887 : 
		putcLCD('n');  A  888 : 
		putcLCD(' ');  A  889 : 
		putcLCD('M');  A  890 : 
		putcLCD('e');  A  891 : 
		putcLCD('n');  A  892 : 
		putcLCD('u');  A  893 : 
		SendCmd(0xc0);  A  894 : 
		putcLCD('1');  A  895 : 
		putcLCD(':');  A  896 : 
		putcLCD('M');  A  897 : 
		putcLCD('o');  A  898 : 
		putcLCD('n');  A  899 : 
		putcLCD('M');  A  900 : 
		putcLCD('o');  A  901 : 
		putcLCD('d');  A  902 : 
		putcLCD('2');  A  903 : 
		putcLCD(':');  A  904 : 
		putcLCD('N');  A  905 : 
		putcLCD('o');  A  906 : 
		putcLCD('r');  A  907 : 
		putcLCD('M');  A  908 : 
		putcLCD('o');  A  909 : 
		putcLCD('d');  A  910 : 
		temp=0;  A  911 : 
		while(GetADKEY()==0x30);  A  912 : 
		temp=GetADKEY();  A  913 : 
		delay_ms(20);  A  914 : 
		if(temp!=GetADKEY())  A  915 : 
		continue;  A  916 : 
		while(GetADKEY()!=0x30);  A  917 : 
		clrLCD();  A  918 : 
		delay_us(1);  A  919 : 
		if(temp==0x31)  A  920 : 
		{  A  921 : 
			SendCmd(0x80);  A  922 :{597 
			putcLCD(' ');  A  923 : 
			putcLCD(' ');  A  924 : 
			putcLCD(' ');  A  925 : 
			putcLCD(' ');  A  926 : 
			putcLCD('M');  A  927 : 
			putcLCD('o');  A  928 : 
			putcLCD('n');  A  929 : 
			putcLCD('M');  A  930 : 
			putcLCD('o');  A  931 : 
			putcLCD('d');  A  932 : 
			delay_ms(1000);  A  933 : 
			moniter();  A  934 : 
			clrLCD();  A  935 : 
		}  A  936 :}599 
		else if(temp==0x32)  A  937 : 
		{  A  938 : 
			SendCmd(0x80);  A  939 :{603 
			putcLCD(' ');  A  940 : 
			putcLCD(' ');  A  941 : 
			putcLCD(' ');  A  942 : 
			putcLCD(' ');  A  943 : 
			putcLCD('N');  A  944 : 
			putcLCD('o');  A  945 : 
			putcLCD('r');  A  946 : 
			putcLCD('M');  A  947 : 
			putcLCD('o');  A  948 : 
			putcLCD('d');  A  949 : 
			delay_ms(1000);  A  950 : 
			normal();  A  951 : 
			clrLCD();  A  952 : 
		}  A  953 :}605 
		else  A  954 : 
		{  A  955 : 
			SendCmd(0x80);  A  956 :{607 
			putcLCD(' ');  A  957 : 
			putcLCD(' ');  A  958 : 
			putcLCD('E');  A  959 : 
			putcLCD('o');  A  960 : 
			putcLCD('r');  A  961 : 
			putcLCD('r');  A  962 : 
			putcLCD(' ');  A  963 : 
			putcLCD('C');  A  964 : 
			putcLCD('h');  A  965 : 
			putcLCD('o');  A  966 : 
			putcLCD('i');  A  967 : 
			putcLCD('c');  A  968 : 
			putcLCD('e');  A  969 : 
			delay_ms(1000);  A  970 : 
			clrLCD();  A  971 : 
		}  A  972 :}609 
	}  A  973 :}610 
	  A  974 : 
}  A  975 :}611E 
 A  975 :