AUXR = 0X03;<br />buzzer_moment();<br />init_cpu_io();<br />init_var();<br />feed_dog();<br />soft_reset_rc500();<br />feed_dog();<br />init_rc500();<br />init_rtc();<br />init_cpu();<br />g_task1 = 0x01;<br />while(1)<br /> { <br /> feed_dog();<br /> if( (g_task1&0x01) == 0x01)<br /> {<br /> if(flag_soft_rc500)<br /> {<br /> flag_soft_rc500 = 0;<br /> soft_reset_rc500(); <br /> init_rc500(); <br /> }<br /> g_task1 &= ~0x01;<br /> g_state_rc500 = 1;<br /> config_rc500_request();<br /> }<br /> if( (g_task1&0x02) == 0x02)<br /> {<br /> g_task1 &= ~0x02;<br /> g_state_rc500 = 2;<br /> config_rc500_anticollision();<br /> }<br /> if( (g_task1&0x04) == 0x04)<br /> {<br /> g_task1 &= ~0x04;<br /> g_state_rc500 = 3;<br /> get_rc500_card_serial();<br /> buzzer_on_moment();<br /> g_led_on();<br /> g_card_left = CONST_CARD_OFF;<br /> if( !data_equal() )<br /> {<br /> copy_data();<br /> //get_pin_master_or_general_card();<br /> wiegand_send_type = 1;<br /> switch( wiegand_send_type )<br /> {<br /> case 0x00:<br /> //rc500_rst = 1;<br /> convert_rc500_serial_no_wiegand34();<br /> wiegand_send(34,rc500_serial_no);<br /> //g_led_on();<br /> //buzzer_on_moment();<br /> break;<br /> case 0x01:<br /> //rc500_rst = 1;<br /> convert_rc500_serial_no_wiegand26();<br /> wiegand_send(26,rc500_serial_no);<br /> //g_led_on();<br /> //buzzer_on_moment();<br /> break;<br /> case 0x02:<br /> //rc500_rst = 1;<br /> convert_rc500_serial_no_wiegand26_site_code();<br /> wiegand_send(26,rc500_serial_no);<br /> // g_led_on();<br /> // buzzer_on_moment();<br /> break;<br /> case 0x03:<br /> config_rc500_select_card();<br /> break;<br /> case 0x04:<br /> //rc500_rst = 1;<br /> convert_rc500_serial_no_wiegand44();<br /> wiegand_send(44,rc500_serial_no);<br /> //g_led_on();<br /> //buzzer_on_moment();<br /> break;<br /> case 0x05:<br /> //rc500_rst = 1;<br /> convert_rc500_serial_no_wiegand34();<br /> wiegand_send(32,rc500_serial_no);<br /> //g_led_on();<br /> //buzzer_on_moment();<br /> break;<br /> case 0x06:<br /> //rc500_rst = 1;<br /> convert_rc500_serial_no_wiegand34();<br /> wiegand_send(40,rc500_serial_no);<br /> // g_led_on();<br /> //buzzer_on_moment();<br /> break;<br /> }<br /> }<br /> else<br /> {<br /> g_task1 |= 0x01;<br /> }<br /> }<br /> if( (g_task1&0x08) == 0x08)<br /> {<br /> g_task1 &= ~0x08;<br /> g_state_rc500 = 4;<br /> config_rc500_pcd_loadkey(); // ok<br /> }<br /> if( (g_task1&0x10) == 0x10)<br /> {<br /> g_task1 &= ~0x10;<br /> g_state_rc500 = 5;<br /> config_rc500_picc_authenticate1();<br /> }<br /> if( (g_task1&0x20) == 0x20)<br /> {<br /> g_task1 &= ~0x20;<br /> g_state_rc500 = 6;<br /> config_rc500_picc_authenticate2();<br /> }<br /> if( (g_task1&0x40) == 0x40)<br /> {<br /> g_task1 &= ~0x40;<br /> g_state_rc500 = 7;<br /> config_rc500_read_picc_data();<br /> }<br /> if( (g_task1&0x80) == 0x80)<br /> {<br /> g_task1 &= ~0x80;<br /> get_rc500_data_block();<br /> //rc500_rst = 1; // --------ADD 3-------------<br /> g_led_on();<br /> //wiegand_send_ye(rc500_serial_no[0],&rc500_serial_no[1]);<br /> wiegand_send(rc500_serial_no[0],&rc500_serial_no[1]);<br /> buzzer_on_moment();<br /> }<br /> }<br />}<br />//---------------------------------------------------------<br />void rc500_interrupt (void) interrupt 0 using 1<br />{<br /> cs_rc500 = 0;<br /> if( (interruptrq&0x20) == 0x20 ) // irq_timeout<br /> {<br /> g_task1 |= 0x01;<br /> command = PCD_IDLE;<br /> }<br /> else if( g_state_rc500==4 )<br /> {<br /> if( (errorflag&0x17)==0x00 )<br /> g_task1 |= 0x10;<br /> else<br /> g_task1 |= 0x01;<br /> command = PCD_IDLE;<br /> }<br /> else if( g_state_rc500==5 )<br /> {<br /> if( (errorflag&0x17)==0x00 )<br /> g_task1 |= 0x20;<br /> else<br /> g_task1 |= 0x01;<br /> command = PCD_IDLE;<br /> }<br /> else if( g_state_rc500==6 )<br /> {<br /> if( (errorflag&0x17)==0x00 && (control&0x08)==0x08)<br /> g_task1 |= 0x40;<br /> else<br /> g_task1 |= 0x01;<br /> command = PCD_IDLE;<br /> }<br /> else if( (interruptrq&0x08) == 0x08 ) // irq_rx<br /> {<br /> control |= 0x04;<br /> switch( g_state_rc500 )<br /> {<br /> case 1:<br /> if( (errorflag&0x17)==0x00 && fifolength==0x02 )<br /> g_task1 |= 0x02;<br /> else<br /> g_task1 |= 0x01;<br /> break;<br /> case 2:<br /> if( (errorflag&0X17)==0x00 && fifolength==0x05 )<br /> g_task1 |= 0x04;<br /> else<br /> g_task1 |= 0x01;<br /> break;<br /> case 3:<br /> if( (errorflag&0x17)==0x00 && fifolength==0x01 )<br /> g_task1 |= 0x08;<br /> else<br /> g_task1 |= 0x01;<br /> break;<br /> case 7:<br /> if( (errorflag&0x17)==0x00 && fifolength==0x10 )<br /> g_task1 |= 0x80;<br /> else<br /> g_task1 |= 0x01;<br /> break;<br /> default :<br /> g_task1 |= 0x01;<br /> break;<br /> }<br /> command = PCD_IDLE;<br /> }<br /> else<br /> {<br /> g_task1 |= 0x01;<br /> command = PCD_IDLE;<br /> }<br /> cs_rc500 = 1;<br />}<br />//-------------------------------------------------------------------------- |
|