//************************************************************************************ //** //** File name: C:\Users\MAHMOUD\Desktop\RFID\RFIDExamples\RFID ex8.c //** Generated by: Flowcode v3.6.11.53 //** Date: Monday, April 18, 2011 15:41:31 //** Licence: Professional //** Registered to: Ecole Centrale de Lille //** //** //** http://www.matrixmultimedia.com //************************************************************************************ #define MX_PIC //Définir pour microcontrôleur #define P16F877A #define MX_EE #define MX_EE_TYPE2 #define MX_EE_SIZE 256 #define MX_SPI #define MX_SPI_C #define MX_SPI_SDI 4 #define MX_SPI_SDO 5 #define MX_SPI_SCK 3 #define MX_UART #define MX_UART_C #define MX_UART_TX 6 #define MX_UART_RX 7 #define MX_I2C #define MX_MI2C #define MX_I2C_C #define MX_I2C_SDA 4 #define MX_I2C_SCL 3 #define MX_PWM #define MX_PWM_CNT 2 #define MX_PWM_TRIS1 trisc #define MX_PWM_1 2 #define MX_PWM_TRIS2 trisc #define MX_PWM_2 1 //Fonctions #include #pragma CLOCK_FREQ 19660800 //Configuration de données #pragma DATA 0x2007, 0x3f3a //Fonctions internes #include "C:\Program Files\Matrix Multimedia\Flowcode V3\FCD\internals.h" //Déclarations de fonction Macro //Déclarations de Variable char FCV_STATUS; char FCV_KEYVAL; char FCV_ROW; char FCV_DATA; char FCV_COL; char FCV_INDEX; //LCDDisplay0: //Déclarations de fonction Macro void FCD_LCDDisplay0_GetDefines(); void FCD_LCDDisplay0_Start(); void FCD_LCDDisplay0_Clear(); void FCD_LCDDisplay0_PrintASCII(char Character); void FCD_LCDDisplay0_Command(char in); void FCD_LCDDisplay0_RawSend(char in, char mask); void FCD_LCDDisplay0_Cursor(char x, char y); void FCD_LCDDisplay0_PrintNumber(short Number); void FCD_LCDDisplay0_PrintString(char* String, char MSZ_String); //KeyPad0: //Déclarations de fonction Macro char FCD_KeyPad0_GetKeypadNumber(); char FCD_KeyPad0_GetKeypadAscii(); //RFID0: //Déclarations de fonction Macro void FCD_RFID0_GetDefines(); char FCD_RFID0_Init_RFID(); char FCD_RFID0_Write_RFID_Module(char Address, char Data); char FCD_RFID0_Get_RFID_Status(); char FCD_RFID0_Get_RFID_UID(); char FCD_RFID0_Get_RFID_Type_ID(); char FCD_RFID0_Store_RFID_Key(char Key, char D0, char D1, char D2, char D3, char D4, char D5); void FCD_RFID0_Write_RFID_Buffer(char Address, char Data); char FCD_RFID0_Read_RFID_Buffer(char Address); char FCD_RFID0_Read_RFID_UID(char Address); char FCD_RFID0_Write_RFID_Block(char Address, char Key_Type); char FCD_RFID0_Read_RFID_Block(char Address, char Key_Type); void FCD_RFID0_Format_RFID_Value(); char FCD_RFID0_Increment_RFID_Value(char Src, char Dst, char Key_Type); char FCD_RFID0_Decrement_RFID_Value(char Src, char Dst, char Key_Type); char FCD_RFID0_Transfer_RFID_Value(char Src, char Dst, char Key_Type); //Définitions supplémentaires //LCDDisplay0: //Implémentations Macro void FCD_LCDDisplay0_GetDefines() { } //Dummy end of function to allow defines to be added correctly //component connections #define LCD_459494_PORT porta #define LCD_459494_TRIS trisa #define LCD_459494_BIT0 0 #define LCD_459494_BIT1 1 #define LCD_459494_BIT2 2 #define LCD_459494_BIT3 3 #define LCD_459494_RS 4 #define LCD_459494_E 5 #ifdef _BOOSTC #define LCD_459494_DELAY delay_10us(10) #endif #ifdef _C2C_ #define LCD_459494_DELAY delay_us(100) #endif #ifndef LCD_459494_DELAY #define LCD_459494_DELAY delay_us(100) #endif //internal function prototypes void LCD_459494_RawSend(char nIn, char nMask); //internal function implementations void LCD_459494_RawSend(char nIn, char nMask) { unsigned char pt; unsigned char outVal; outVal = LCD_459494_PORT; clear_bit(outVal, LCD_459494_BIT0); clear_bit(outVal, LCD_459494_BIT1); clear_bit(outVal, LCD_459494_BIT2); clear_bit(outVal, LCD_459494_BIT3); clear_bit(outVal, LCD_459494_RS); clear_bit(outVal, LCD_459494_E); pt = ((nIn >> 4) & 0x0f); if (pt & 0x01) set_bit(outVal, LCD_459494_BIT0); if (pt & 0x02) set_bit(outVal, LCD_459494_BIT1); if (pt & 0x04) set_bit(outVal, LCD_459494_BIT2); if (pt & 0x08) set_bit(outVal, LCD_459494_BIT3); if (nMask) set_bit(outVal, LCD_459494_RS); LCD_459494_PORT = outVal; LCD_459494_DELAY; set_bit (LCD_459494_PORT, LCD_459494_E); LCD_459494_DELAY; clear_bit (LCD_459494_PORT, LCD_459494_E); pt = (nIn & 0x0f); LCD_459494_DELAY; outVal = LCD_459494_PORT; clear_bit(outVal, LCD_459494_BIT0); clear_bit(outVal, LCD_459494_BIT1); clear_bit(outVal, LCD_459494_BIT2); clear_bit(outVal, LCD_459494_BIT3); clear_bit(outVal, LCD_459494_RS); clear_bit(outVal, LCD_459494_E); if (pt & 0x01) set_bit(outVal, LCD_459494_BIT0); if (pt & 0x02) set_bit(outVal, LCD_459494_BIT1); if (pt & 0x04) set_bit(outVal, LCD_459494_BIT2); if (pt & 0x08) set_bit(outVal, LCD_459494_BIT3); if (nMask) set_bit(outVal, LCD_459494_RS); LCD_459494_PORT = outVal; LCD_459494_DELAY; set_bit (LCD_459494_PORT, LCD_459494_E); LCD_459494_DELAY; clear_bit (LCD_459494_PORT, LCD_459494_E); LCD_459494_DELAY; } // Dummy function to close the defines section off void LCD_459494_Dummy_Function(); void LCD_459494_Dummy_Function() { } void FCD_LCDDisplay0_Start() { clear_bit(LCD_459494_TRIS, LCD_459494_BIT0); clear_bit(LCD_459494_TRIS, LCD_459494_BIT1); clear_bit(LCD_459494_TRIS, LCD_459494_BIT2); clear_bit(LCD_459494_TRIS, LCD_459494_BIT3); clear_bit(LCD_459494_TRIS, LCD_459494_RS); clear_bit(LCD_459494_TRIS, LCD_459494_E); delay_ms(12); LCD_459494_RawSend(0x33, 0); delay_ms(2); LCD_459494_RawSend(0x33, 0); delay_ms(2); LCD_459494_RawSend(0x32, 0); delay_ms(2); LCD_459494_RawSend(0x2c, 0); delay_ms(2); LCD_459494_RawSend(0x06, 0); delay_ms(2); LCD_459494_RawSend(0x0c, 0); delay_ms(2); //clear the display LCD_459494_RawSend(0x01, 0); delay_ms(2); LCD_459494_RawSend(0x02, 0); delay_ms(2); } void FCD_LCDDisplay0_Clear() { LCD_459494_RawSend(0x01, 0); delay_ms(2); LCD_459494_RawSend(0x02, 0); delay_ms(2); } void FCD_LCDDisplay0_PrintASCII(char Character) { LCD_459494_RawSend(Character, 0x10); } void FCD_LCDDisplay0_Command(char in) { LCD_459494_RawSend(in, 0); delay_ms(2); } void FCD_LCDDisplay0_RawSend(char in, char mask) { //Error Reading Code For Afficheur LCD::Macro_RawSend } void FCD_LCDDisplay0_Cursor(char x, char y) { #if (2 == 1) y=0x80; #endif #if (2 == 2) if (y==0) y=0x80; else y=0xc0; #endif #if (2 == 4) if (y==0) y=0x80; else if (y==1) y=0xc0; #if (16 == 16) else if (y==2) y=0x90; else y=0xd0; #endif #if (16 == 20) else if (y==2) y=0x94; else y=0xd4; #endif #endif LCD_459494_RawSend(y+x, 0); delay_ms(2); } void FCD_LCDDisplay0_PrintNumber(short Number) { short tmp_int; char tmp_byte; if (Number < 0) { LCD_459494_RawSend('-', 0x10); Number = 0 - Number; } tmp_int = Number; if (Number >= 10000) { tmp_byte = tmp_int / 10000; LCD_459494_RawSend('0' + tmp_byte, 0x10); while (tmp_byte > 0) { tmp_int = tmp_int - 10000; tmp_byte--; } } if (Number >= 1000) { tmp_byte = tmp_int / 1000; LCD_459494_RawSend('0' + tmp_byte, 0x10); while (tmp_byte > 0) { tmp_int = tmp_int - 1000; tmp_byte--; } } if (Number >= 100) { tmp_byte = tmp_int / 100; LCD_459494_RawSend('0' + tmp_byte, 0x10); while (tmp_byte > 0) { tmp_int = tmp_int - 100; tmp_byte--; } } if (Number >= 10) { tmp_byte = tmp_int / 10; LCD_459494_RawSend('0' + tmp_byte, 0x10); while (tmp_byte > 0) { tmp_int = tmp_int - 10; tmp_byte--; } } LCD_459494_RawSend('0' + tmp_int, 0x10); } void FCD_LCDDisplay0_PrintString(char* String, char MSZ_String) { char idx; for (idx=0; idx 3 MX_RFID_UID_Buff[4] = RFID_ReceiveRS232Char(200); //Collect response MX_RFID_UID_Buff[5] = RFID_ReceiveRS232Char(200); //Collect response MX_RFID_UID_Buff[6] = RFID_ReceiveRS232Char(200); //Collect MS Byte response for MIFARE #if MX_RFID_PRCOL == 5 MX_RFID_UID_Buff[7] = RFID_ReceiveRS232Char(200); //Collect MS Byte response for ICODE #endif #endif } return RetVal; } char FCD_RFID0_Get_RFID_Type_ID() { char RetVal = 0; #if MX_RFID_PRCOL == 4 //MIFARE MODE { RFID_SendRS232Char(MX_RFID_GET_TYPE); //Write Card Status Command RetVal = RFID_ReceiveRS232Char(200); //Collect response MX_RFID_In_Buff[0] = RFID_ReceiveRS232Char(200); //Collect response MX_RFID_In_Buff[1] = RFID_ReceiveRS232Char(200); //Collect response MX_RFID_In_Buff[2] = RFID_ReceiveRS232Char(200); //Collect response return RetVal; } #endif return RetVal; } char FCD_RFID0_Store_RFID_Key(char Key, char D0, char D1, char D2, char D3, char D4, char D5) { char RetVal = 0; //MIFARE MODE #if MX_RFID_PRCOL == 4 { RFID_SendRS232Char(MX_RFID_STORE_KEY); //Write Store Key Command RFID_SendRS232Char(Key & 0x1F); //Write Key location 0 - 31 RFID_SendRS232Char(D0); //Write LS Byte of Key RFID_SendRS232Char(D1); RFID_SendRS232Char(D2); RFID_SendRS232Char(D3); RFID_SendRS232Char(D4); RFID_SendRS232Char(D5); //Write MS Byte of Key RetVal = RFID_ReceiveRS232Char(200); //Collect response } #endif return RetVal; } void FCD_RFID0_Write_RFID_Buffer(char Address, char Data) { if (Address < 16) { MX_RFID_Out_Buff[Address] = Data; } } char FCD_RFID0_Read_RFID_Buffer(char Address) { if (Address < 16) { return MX_RFID_In_Buff[Address]; } return 0; } char FCD_RFID0_Read_RFID_UID(char Address) { if (Address < 8) { return MX_RFID_UID_Buff[Address]; } return 0; } char FCD_RFID0_Write_RFID_Block(char Address, char Key_Type) { char RetVal; #if MX_RFID_PRCOL > 3 //13.56MHz RFID Speed { //MIFARE MODE #if MX_RFID_PRCOL == 4 { RFID_SendRS232Char(MX_RFID_WRITE_BLOCK); //Send Write Block Command RFID_SendRS232Char(Address); //Send Block Address MIFARE 0 - 255 | MIFARE LIGHT 0 - 15 RFID_SendRS232Char(Key_Type); //Send Key Type RFID_SendRS232Char(MX_RFID_Out_Buff[0]); //Send LS Data Byte RFID_SendRS232Char(MX_RFID_Out_Buff[1]); RFID_SendRS232Char(MX_RFID_Out_Buff[2]); RFID_SendRS232Char(MX_RFID_Out_Buff[3]); RFID_SendRS232Char(MX_RFID_Out_Buff[4]); RFID_SendRS232Char(MX_RFID_Out_Buff[5]); RFID_SendRS232Char(MX_RFID_Out_Buff[6]); RFID_SendRS232Char(MX_RFID_Out_Buff[7]); RFID_SendRS232Char(MX_RFID_Out_Buff[8]); RFID_SendRS232Char(MX_RFID_Out_Buff[9]); RFID_SendRS232Char(MX_RFID_Out_Buff[10]); RFID_SendRS232Char(MX_RFID_Out_Buff[11]); RFID_SendRS232Char(MX_RFID_Out_Buff[12]); RFID_SendRS232Char(MX_RFID_Out_Buff[13]); RFID_SendRS232Char(MX_RFID_Out_Buff[14]); RFID_SendRS232Char(MX_RFID_Out_Buff[15]); //Send MS Data Byte } //ICODE MODE #else { RFID_SendRS232Char(MX_RFID_WRITE_BLOCK); //Send Write Block Command RFID_SendRS232Char(Address); //Send Block Address 0 - 27 RFID_SendRS232Char(MX_RFID_UID_Buff[0]); //Send LS UID Byte RFID_SendRS232Char(MX_RFID_UID_Buff[1]); RFID_SendRS232Char(MX_RFID_UID_Buff[2]); RFID_SendRS232Char(MX_RFID_UID_Buff[3]); RFID_SendRS232Char(MX_RFID_UID_Buff[4]); RFID_SendRS232Char(MX_RFID_UID_Buff[5]); RFID_SendRS232Char(MX_RFID_UID_Buff[6]); RFID_SendRS232Char(MX_RFID_UID_Buff[7]); //Send MS UID Byte RFID_SendRS232Char(MX_RFID_Out_Buff[0]); //Send LS Data Byte RFID_SendRS232Char(MX_RFID_Out_Buff[1]); RFID_SendRS232Char(MX_RFID_Out_Buff[2]); RFID_SendRS232Char(MX_RFID_Out_Buff[3]); //Send MS Data Byte } #endif RetVal = RFID_ReceiveRS232Char(250); //Collect response return RetVal; } #else //125KHz RFID Speed { //HITAG1 / 2 mode #if MX_RFID_PRCOL > 1 { RFID_SendRS232Char(MX_RFID_WRITE_BLOCK); //Send Write Block Command RFID_SendRS232Char(Address); //Send Page Address 0 - 7 RFID_SendRS232Char(MX_RFID_Out_Buff[3]); //Send MS Data Byte RFID_SendRS232Char(MX_RFID_Out_Buff[2]); RFID_SendRS232Char(MX_RFID_Out_Buff[1]); RFID_SendRS232Char(MX_RFID_Out_Buff[0]); //Send LS Data Byte RetVal = RFID_ReceiveRS232Char(250); //Collect response } //EM / MC MODE #else { RetVal = 0; } #endif return RetVal; } #endif } char FCD_RFID0_Read_RFID_Block(char Address, char Key_Type) { char RetVal; char UID_Val = 0; #if MX_RFID_PRCOL > 3 //13.56MHz RFID Speed { //MIFARE MODE #if MX_RFID_PRCOL == 4 { RFID_SendRS232Char(MX_RFID_READ_BLOCK); //Send Read Block Command RFID_SendRS232Char(Address); //Send Block Address 0 - 255 | 0 - 15 RFID_SendRS232Char(Key_Type); //Send Key Type RetVal = RFID_ReceiveRS232Char(200); //Collect response if ((RetVal & 0x06) == 0x06) //if Read command succsesful { MX_RFID_In_Buff[0] = RFID_ReceiveRS232Char(200); //Collect LS Byte response MX_RFID_In_Buff[1] = RFID_ReceiveRS232Char(200); MX_RFID_In_Buff[2] = RFID_ReceiveRS232Char(200); MX_RFID_In_Buff[3] = RFID_ReceiveRS232Char(200); MX_RFID_In_Buff[4] = RFID_ReceiveRS232Char(200); MX_RFID_In_Buff[5] = RFID_ReceiveRS232Char(200); MX_RFID_In_Buff[6] = RFID_ReceiveRS232Char(200); MX_RFID_In_Buff[7] = RFID_ReceiveRS232Char(200); MX_RFID_In_Buff[8] = RFID_ReceiveRS232Char(200); MX_RFID_In_Buff[9] = RFID_ReceiveRS232Char(200); MX_RFID_In_Buff[10] = RFID_ReceiveRS232Char(200); MX_RFID_In_Buff[11] = RFID_ReceiveRS232Char(200); MX_RFID_In_Buff[12] = RFID_ReceiveRS232Char(200); MX_RFID_In_Buff[13] = RFID_ReceiveRS232Char(200); MX_RFID_In_Buff[14] = RFID_ReceiveRS232Char(200); MX_RFID_In_Buff[15] = RFID_ReceiveRS232Char(200); //Collect MS Byte response } return RetVal; } //ICODE MODE #else { RFID_SendRS232Char(MX_RFID_READ_BLOCK); //Send Read Block Command RFID_SendRS232Char(Address); //Send Block Address 0 - 27 RFID_SendRS232Char(MX_RFID_UID_Buff[0]); //Send LS UID Byte RFID_SendRS232Char(MX_RFID_UID_Buff[1]); RFID_SendRS232Char(MX_RFID_UID_Buff[2]); RFID_SendRS232Char(MX_RFID_UID_Buff[3]); RFID_SendRS232Char(MX_RFID_UID_Buff[4]); RFID_SendRS232Char(MX_RFID_UID_Buff[5]); RFID_SendRS232Char(MX_RFID_UID_Buff[6]); RFID_SendRS232Char(MX_RFID_UID_Buff[7]); //Send MS UID Byte RetVal = RFID_ReceiveRS232Char(200); //Collect response if ((RetVal & 0x06) == 0x06) //if Read command succsesful { MX_RFID_In_Buff[0] = RFID_ReceiveRS232Char(200); //Collect LS Byte response MX_RFID_In_Buff[1] = RFID_ReceiveRS232Char(200); MX_RFID_In_Buff[2] = RFID_ReceiveRS232Char(200); MX_RFID_In_Buff[3] = RFID_ReceiveRS232Char(200); //Collect MS Byte response } return RetVal; } #endif } #else //125KHz RFID Speed { RFID_SendRS232Char(MX_RFID_READ_BLOCK); //Send Read Block Command RFID_SendRS232Char(Address); //Send Page Address 0 - 7 HITAG2 / DUMMY BYTE EM/MC RetVal = RFID_ReceiveRS232Char(200); //Collect response if ((RetVal & 0x06) == 0x06) //if Read command succsesful { MX_RFID_In_Buff[0] = RFID_ReceiveRS232Char(200); //Collect MS Data Byte HITAG2 MX_RFID_In_Buff[1] = RFID_ReceiveRS232Char(200); MX_RFID_In_Buff[2] = RFID_ReceiveRS232Char(200); MX_RFID_In_Buff[3] = RFID_ReceiveRS232Char(200); //Collect LS Data Byte #if MX_RFID_PRCOL < 2 //EM / MC MODE MX_RFID_In_Buff[4] = RFID_ReceiveRS232Char(200); //Collect MS Data Byte EM / MC #endif } } #endif } void FCD_RFID0_Format_RFID_Value() { MX_RFID_Out_Buff[4] = ~MX_RFID_Out_Buff[0]; MX_RFID_Out_Buff[8] = MX_RFID_Out_Buff[0]; MX_RFID_Out_Buff[5] = ~MX_RFID_Out_Buff[1]; MX_RFID_Out_Buff[9] = MX_RFID_Out_Buff[1]; MX_RFID_Out_Buff[6] = ~MX_RFID_Out_Buff[2]; MX_RFID_Out_Buff[10] = MX_RFID_Out_Buff[2]; MX_RFID_Out_Buff[7] = ~MX_RFID_Out_Buff[3]; MX_RFID_Out_Buff[11] = MX_RFID_Out_Buff[3]; MX_RFID_Out_Buff[12] = 0; MX_RFID_Out_Buff[13] = 0xff; MX_RFID_Out_Buff[14] = 0; MX_RFID_Out_Buff[15] = 0xff; } char FCD_RFID0_Increment_RFID_Value(char Src, char Dst, char Key_Type) { char RetVal = 0; #if MX_RFID_PRCOL == 4 RFID_SendRS232Char(MX_RFID_INC_VAL); RFID_SendRS232Char(Src); RFID_SendRS232Char(Key_Type); RFID_SendRS232Char(Dst); RFID_SendRS232Char(MX_RFID_Out_Buff[0]); RFID_SendRS232Char(MX_RFID_Out_Buff[1]); RFID_SendRS232Char(MX_RFID_Out_Buff[2]); RFID_SendRS232Char(MX_RFID_Out_Buff[3]); RetVal = RFID_ReceiveRS232Char(200); //Collect response #endif return RetVal; } char FCD_RFID0_Decrement_RFID_Value(char Src, char Dst, char Key_Type) { char RetVal = 0; #if MX_RFID_PRCOL == 4 RFID_SendRS232Char(MX_RFID_DEC_VAL); RFID_SendRS232Char(Src); RFID_SendRS232Char(Key_Type); RFID_SendRS232Char(Dst); RFID_SendRS232Char(MX_RFID_Out_Buff[0]); RFID_SendRS232Char(MX_RFID_Out_Buff[1]); RFID_SendRS232Char(MX_RFID_Out_Buff[2]); RFID_SendRS232Char(MX_RFID_Out_Buff[3]); RetVal = RFID_ReceiveRS232Char(200); //Collect response #endif return RetVal; } char FCD_RFID0_Transfer_RFID_Value(char Src, char Dst, char Key_Type) { char RetVal = 0; #if MX_RFID_PRCOL == 4 RFID_SendRS232Char(MX_RFID_TXFR_VAL); RFID_SendRS232Char(Src); RFID_SendRS232Char(Key_Type); RFID_SendRS232Char(Dst); RetVal = RFID_ReceiveRS232Char(200); //Collect response #endif return RetVal; } //Implémentations Macro //Installation supplémentaire void main() { //Initialisation adcon1 = 0x07; txsta = MX_RFID_TXSTA; // 8-bit, async, low speed, off spbrg = MX_RFID_SPBRG; // set the baud rate rcsta = 0; // 8-bit, disabled set_bit(rcsta, SPEN); // turn on serial interface set_bit(MX_RFID_TRIS, MX_RFID_CTSP); // CTS is an input //Code d'initialisation d'Interruption option_reg = 0xC0; //Delay //Pause: 250 ms delay_ms(250); //Start the LCD //Appel de la Routine Composant: LCDDisplay(0)::Init FCD_LCDDisplay0_Start(); //Initialise the RFID module //Appel de la Routine Composant: status=RFID(0)::Init_RFID FCV_STATUS = FCD_RFID0_Init_RFID(); //Loop forever //Boucle: Tant que1 while (1) { //Delay //Pause: 100 ms delay_ms(100); //Check for transponder UID //Appel de la Routine Composant: status=RFID(0)::Get_RFID_UID FCV_STATUS = FCD_RFID0_Get_RFID_UID(); //Status to LEDs //Sortie: status -> PORT B trisb = 0x00; portb = FCV_STATUS; //Clear the LCD //Appel de la Routine Composant: LCDDisplay(0)::Efface FCD_LCDDisplay0_Clear(); //Transponder detected? //Condition: status = 134? if (FCV_STATUS == 134) { //Read a memory block from the transponder //Appel de la Routine Composant: status=RFID(0)::Read_RFID_Block(5, 0) FCV_STATUS = FCD_RFID0_Read_RFID_Block(5, 0); //Confirmation? //Condition: status = 134? if (FCV_STATUS == 134) { //Memory counter //Calcul: // index = 0 FCV_INDEX = 0; //Message to LCD //Appel de la Routine Composant: LCDDisplay(0)::Écrit_Car(" BLOCK 5 DATA") FCD_LCDDisplay0_PrintASCII(' '); FCD_LCDDisplay0_PrintASCII(' '); FCD_LCDDisplay0_PrintASCII('B'); FCD_LCDDisplay0_PrintASCII('L'); FCD_LCDDisplay0_PrintASCII('O'); FCD_LCDDisplay0_PrintASCII('C'); FCD_LCDDisplay0_PrintASCII('K'); FCD_LCDDisplay0_PrintASCII(' '); FCD_LCDDisplay0_PrintASCII('5'); FCD_LCDDisplay0_PrintASCII(' '); FCD_LCDDisplay0_PrintASCII('D'); FCD_LCDDisplay0_PrintASCII('A'); FCD_LCDDisplay0_PrintASCII('T'); FCD_LCDDisplay0_PrintASCII('A'); //Repeat 4 times //Boucle: Tant queindex < 4 while (FCV_INDEX < 4) { //LCD position //Calcul: // col = ( index * 4 ) & 0x0f // row = 1 FCV_COL = ( FCV_INDEX * 4 ) & 0x0f; FCV_ROW = 1; //LCD cursor //Appel de la Routine Composant: LCDDisplay(0)::Curseur(col, row) FCD_LCDDisplay0_Cursor(FCV_COL, FCV_ROW); //Read a memory block byte //Appel de la Routine Composant: data=RFID(0)::Read_RFID_Buffer(index) FCV_DATA = FCD_RFID0_Read_RFID_Buffer(FCV_INDEX); //Display value on LCD //Appel de la Routine Composant: LCDDisplay(0)::Écrit_Num(data) FCD_LCDDisplay0_PrintNumber(FCV_DATA); //Next memory location //Calcul: // index = index + 1 FCV_INDEX = FCV_INDEX + 1; } //Test keypad //Appel de la Routine Composant: keyval=KeyPad(0)::GetKeypadNumber FCV_KEYVAL = FCD_KeyPad0_GetKeypadNumber(); //No keys pressed //Condition: keyval = 255? if (FCV_KEYVAL == 255) { } else { //Key value to memory buffer byte 0 //Appel de la Routine Composant: RFID(0)::Write_RFID_Buffer(0, keyval) FCD_RFID0_Write_RFID_Buffer(0, FCV_KEYVAL); //0 to memory buffer byte 1 //Appel de la Routine Composant: RFID(0)::Write_RFID_Buffer(1, 0) FCD_RFID0_Write_RFID_Buffer(1, 0); //0 to memory buffer byte 2 //Appel de la Routine Composant: RFID(0)::Write_RFID_Buffer(2, 0) FCD_RFID0_Write_RFID_Buffer(2, 0); //0 to memory buffer byte 3 //Appel de la Routine Composant: RFID(0)::Write_RFID_Buffer(3, 0) FCD_RFID0_Write_RFID_Buffer(3, 0); //Write buffer to transponder memory //Appel de la Routine Composant: status=RFID(0)::Write_RFID_Block(5, 0) FCV_STATUS = FCD_RFID0_Write_RFID_Block(5, 0); } } else { //Message to LCD //Appel de la Routine Composant: LCDDisplay(0)::Écrit_Car(" Read error") FCD_LCDDisplay0_PrintASCII(' '); FCD_LCDDisplay0_PrintASCII(' '); FCD_LCDDisplay0_PrintASCII(' '); FCD_LCDDisplay0_PrintASCII('R'); FCD_LCDDisplay0_PrintASCII('e'); FCD_LCDDisplay0_PrintASCII('a'); FCD_LCDDisplay0_PrintASCII('d'); FCD_LCDDisplay0_PrintASCII(' '); FCD_LCDDisplay0_PrintASCII('e'); FCD_LCDDisplay0_PrintASCII('r'); FCD_LCDDisplay0_PrintASCII('r'); FCD_LCDDisplay0_PrintASCII('o'); FCD_LCDDisplay0_PrintASCII('r'); } } else { //Message to LCD //Appel de la Routine Composant: LCDDisplay(0)::Écrit_Car("Aucune carte") FCD_LCDDisplay0_PrintASCII('A'); FCD_LCDDisplay0_PrintASCII('u'); FCD_LCDDisplay0_PrintASCII('c'); FCD_LCDDisplay0_PrintASCII('u'); FCD_LCDDisplay0_PrintASCII('n'); FCD_LCDDisplay0_PrintASCII('e'); FCD_LCDDisplay0_PrintASCII(' '); FCD_LCDDisplay0_PrintASCII('c'); FCD_LCDDisplay0_PrintASCII('a'); FCD_LCDDisplay0_PrintASCII('r'); FCD_LCDDisplay0_PrintASCII('t'); FCD_LCDDisplay0_PrintASCII('e'); } } mainendloop: goto mainendloop; } void interrupt(void) { }