搜索
bottom↓
楼主: rainbow

MEGA8-T2-CTC产生125KHz方波,ICP中断方式读125KHz的RFID卡(EM4100系列)成功,发贴祝贺!

  [复制链接]

出0入0汤圆

发表于 2010-8-19 17:00:36 | 显示全部楼层
不错,很不错

出0入0汤圆

发表于 2010-8-22 20:50:53 | 显示全部楼层
MARK
mega8 125K

出0入0汤圆

发表于 2010-9-7 15:03:38 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-11 15:10:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-14 23:05:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-15 14:27:58 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-16 16:37:08 | 显示全部楼层
输入ICP1的是不是就是:曼彻斯特_码波形

出0入0汤圆

发表于 2010-9-25 10:58:27 | 显示全部楼层
请楼主解释一下小问题:static unsigned char tr = 0; 该变量作为静态变量放到中断里面,那每次中断不都重新初始化为0吗?那里面判断tr为1的情况何时成立?

出10入210汤圆

 楼主| 发表于 2010-9-29 19:54:46 | 显示全部楼层
回复【108楼】aiyige  
请楼主解释一下小问题:static unsigned char tr = 0; 该变量作为静态变量放到中断里面,那每次中断不都重新初始化为0吗?那里面判断tr为1的情况何时成立?

-----------------------------------------------------------------------
这个进中断不会清0,其实是我写的不够严谨,应该是: volatile unsigned char tr = 0;

出0入0汤圆

发表于 2010-10-7 22:51:15 | 显示全部楼层
楼主还要麻烦一下:是不是125KHZ方波需要很精确?117K或者100K可以吗?我看到有些EM卡手册上写好像是准许,我暂时就遇到点小困难,因为手上没有仪器所以暂时还没完全解决问题。

出10入210汤圆

 楼主| 发表于 2010-10-9 00:45:24 | 显示全部楼层
回复【110楼】aiyige  
-----------------------------------------------------------------------
这个频率可以有有一定的偏差,但偏越大其灵敏度会越低,100K的时候会是什么样子我没试过,估计是不行的,117K应该还能有点反应。以前的板现在也没空试了。

出0入4汤圆

发表于 2010-10-9 08:49:13 | 显示全部楼层
打标

出0入0汤圆

发表于 2010-10-9 09:27:39 | 显示全部楼层
老陈你好,感谢你一直的耐心回答!通过搭建电路和程序测试,我现在在运放输出端通过逻辑分析仪已经得到了曼码的波型,但64位信息与EM卡上的号码对应不正确,并且偶校验也存在问题,现在急需你的帮助!如果方便发一些相关资料到zhaoshuo_111@163.com给我可以吗?

出0入0汤圆

发表于 2010-11-3 16:59:50 | 显示全部楼层
很好很强大

出0入0汤圆

发表于 2010-12-16 14:33:19 | 显示全部楼层
MARK 一下

出0入0汤圆

发表于 2010-12-18 10:30:06 | 显示全部楼层
很好很强大

出0入0汤圆

发表于 2010-12-18 11:50:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-18 11:54:29 | 显示全部楼层
好东西,标记,学习。

出0入8汤圆

发表于 2010-12-18 11:56:43 | 显示全部楼层
hao~
jihao

出0入0汤圆

发表于 2011-1-25 18:00:18 | 显示全部楼层
记号

出0入0汤圆

发表于 2011-1-25 21:44:05 | 显示全部楼层
记号

出0入0汤圆

发表于 2011-1-26 10:56:49 | 显示全部楼层
回复【113楼】aiyige
-----------------------------------------------------------------------

卡上的号码一般是8H-10D格式,把读到的10位十六进制数据截取后八位,把它转换成10位的10进制数就一样了。

不过有些卡可能会有几位不同

出0入0汤圆

发表于 2011-1-26 11:18:18 | 显示全部楼层
cool

出0入0汤圆

发表于 2011-1-26 15:31:45 | 显示全部楼层
不错
能自己给车载的过桥费ic卡充值不?

出0入0汤圆

发表于 2011-1-26 19:58:34 | 显示全部楼层
学习

出0入0汤圆

发表于 2011-1-28 20:33:00 | 显示全部楼层
回复【124楼】morion
不错
能自己给车载的过桥费ic卡充值不?
-----------------------------------------------------------------------

这是读ID卡的,跟IC卡是两码事!

出0入104汤圆

发表于 2011-2-5 16:35:18 | 显示全部楼层
//包含所需头文件
// ATMEGA8 16MHz
#include <stdio.h>
#include <avr/io.h>
#include <stdint.h>
#include <avr/interrupt.h>

// ----------------------------------------------------------------------------
// | 125 KHz RFID Functions                                                   |
// ----------------------------------------------------------------------------
//  Data Parity example:
//  1  1  1  1  1  1  1  1  1  - header
//                             - received / decoded
//              0  0  0  0 |0  - 0x00         0x00
//              1  1  1  1 |0  - 0x1e         0x0F
//              0  0  0  0 |0  - 0x00         0x00
//              0  0  1  0 |1  - 0x05         0x02
//              0  1  1  0 |0  - 0x0c         0x06
//              1  0  1  1 |1  - 0x17         0x0B
//              1  1  1  1 |0  - 0x1e         0x0F
//              1  1  1  1 |0  - 0x1e         0x0F
//              1  0  1  0 |0  - 0x14         0x0A
//              1  0  1  1 |1  - 0x17         0x0B
//              -------------
//  ver parity  0  0  0  1 |0  - 0x02 (hor parity always 0)

// H4001卡有关信息,采用曼切斯特编码,125Khz,RF/64,位周期512uS
// 激光编程64位ID,前9位头全"1",10位行检验,4位列检验,1个终止位,
// 8位CustomID,32位ID信息,即10个十六进制编码
// 一个典型数据     111111111
//   CustomID    0      00000
//   CustomID    F      11111
//               0      00000
//               0      00000
//               4      01001
//               A      10100
//               D      11011
//               E      11101
//                             1      00011
//                             9      10010  
//                                    10100

//PB.0(ICP)  <----- 曼切斯特编码输入
//PB.1(OC1A) -----> 135.6KHZ输出

/*------宏定义------*/
volatile unsigned char bit_array[256];
volatile unsigned char test_end = 0;
volatile unsigned char bit_no = 0;

//端口初始化
void port_init(void)
{
        PORTB = 0x00;
        DDRB  = (1<<PB1); //SET OC1A OUTPUT
        PORTC = 0x00;         
        DDRC  = 0x00;
        PORTD = 0x00;
        DDRD  = 0x00;
}

//定时T1初始化
void timer1_init(void)
{
        TCCR1B = 0x00;                        //停止定时器
        TIMSK |= (1<<TICIE1);        //允许T1输入捕捉中中断允许
        TCNT1  = 0x00;                         //初始值 0xF8
        OCR1A  = 59;                           //16MHz/59=135.6KHz 匹配值
        TCCR1A = (1<<COM1A0)|(1<<WGM11)|(1<<WGM10);
        TCCR1B = (1<<ICNC1)|(1<<ICES1)|(1<<WGM13)|(1<<WGM12)|(1<<CS20);//16MHz/64=250KHz  启动定时器
}

//定时器T2初始化
void timer2_init(void)
{
        TCCR2  = 0x00;                        //停止定时器
        ASSR   = 0x00;                        //异步时钟模式
        TCNT2  = 0x00;                        //初始值
        OCR2   = 00;                          //0x2B匹配值
        TIMSK |= 0x00;                        //中断允许
        TCCR2  = (1<<CS22)|(1<<CS21);//启动定时器 16MHz/256=500KHz
}


//串口通信初始化
void usart_init(void)
{
        UCSRB = 0x00;//禁止中断
        UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
        UBRRL = (16000000/8/115200)-1;
        UBRRH = 0x00;
        UCSRA |= (1<<U2X);        
        UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
}

void put_c(unsigned char dat)
{
        while(!(UCSRA & (1 << UDRE)));
        UDR = dat;
}

void put_s(unsigned char *dat,unsigned char enter)
{
        while(*dat)
        {
                put_c(*dat);
                dat++;
        }
        if(enter == 1)
        {
                put_c(0x0d);
                put_c(0x0a);
        }
}

void put_long(unsigned long dat)
{
        unsigned long temp = 1000000000;
        unsigned char i = 0;
        unsigned char out = 0;
        for(i = 0;i < 10;i++)
        {
                out = dat / temp;
                dat %= temp;
                temp /= 10;
                put_c(out + 48);
        }
}

void init_devices(void)
{
        cli();                         //禁止所有中断
        MCUCR  = 0x00;
        GICR   = 0x00;
        port_init();
        timer1_init();
        timer2_init();
        usart_init();
        sei();                        //开全局中断
}


void decode(void)
{
        unsigned char i,j,k;
        unsigned char id_code[11] = {0,0,0,0,0,0,0,0,0,0,0};
        unsigned char row_parity = 0;
        unsigned char temp = 0;
        unsigned char start_data[20] = {1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1};
        unsigned long rfid = 0;
        for(i = 0;i < 128;i++)
        {
                for(j = 0;j < 20;j++)
                {
                        if(bit_array[i+j] != start_data[j])
                        {
                                break;
                        }
                }
                if(j == 20)
                {
                        put_s("",1);
                        put_s("Find RFID Card.",1);
                        i += 20;
                        for(k = 0;k < 11;k++)
                        {
                                row_parity = 0;
                                // 读出五位数据
                                temp = 0;
                                for(j = 0;j < 5;j++)
                                {
                                        temp <<= 1;
                                        if((bit_array == 0) && (bit_array[i+1] == 1))
                                        {
                                                temp |= 0x01;
                                                if(j < 4)
                                                {
                                                        row_parity += 1;
                                                }
                                        }
                                        else if((bit_array == 1) && (bit_array[i+1] == 0))
                                        {
                                                temp &= 0xfe;
                                        }
                                        else
                                        {
                                                return;
                                        }
                                        i += 2;
                                }
                                id_code[k] = (temp >> 1);
                                temp &= 0x01;
                                row_parity %= 2;
                                if(k < 10)
                                {
                                        if(row_parity != temp)
                                        {
                                                return;
                                        }
                                }
                                else
                                {
                                        if(temp != 0)
                                        {
                                                return;
                                        }
                                }
                        }
                        if(k == 11)
                        {
                                put_s("ID Card :",0);
                                for(j = 2;j < 10;j++)
                                {
                                        rfid += (((unsigned long)(id_code[j])) << (4 * (9 - j)));
                                }
                        }
                        put_long(rfid);
                        return;
                }
        }
}

//捕捉解码代码修改如下:
//定时器T1输入捕捉中断服务程序  
ISR(TIMER1_CAPT_vect)  
{
        ICR1L = TCNT2;                                                                        //保留计数器2值到捕获寄存器低位
        TCNT2 = 0;                                                                                //将计数器2 清零

        if(ICR1L > 32+4)                                                                  //大于576uS 错误 1/(16MHz/256/36)=576uS
        {
                bit_no = 0;                                                                 //将指针清零
                TCCR1B &= ~(1<<ICES1);                                                //设置下次为下降沿触发
        }
        else
        {
                if(test_end == 0)                                                          //未完成接收256Bit数组
                {  
                        if(TCCR1B &(1<<ICES1))                                        //__|---  低电平跳变为高电平捕捉
                                bit_array[bit_no++] = 1;                         //写入1
                        else
                                bit_array[bit_no++] = 0;                         //写入0
                        if(bit_no == 0)                                                    //指针是否为0 ,是0 已接收了256BIT数组
                                test_end = 1;                                                  // 设置完成标志=1
                        if( ICR1L >= 32-3 && ICR1L <= 32+3 )        // 1/(16MHz/256/32)=464uS 1/(16MHz/256/35)=560uS
                        {       
                                if(!(TCCR1B &(1<<ICES1)))                        //--|___ 高电平跳变为低电平捕捉
                                        bit_array[bit_no++] = 0;                 //写入0
                                else
                                        bit_array[bit_no++] = 1;                 //写入1                                       
                                if(bit_no == 0)                                     //指针是否为0 ,是0 已接收了256BIT数组
                                        test_end = 1;                                   // 设置标志=1
                        }
                        TCCR1B ^= (1<<ICES1);                                        //反相下次沿触发
                }
        }  
}


//主函数
int main(void)
{
        init_devices();

        //在这继续添加你的代码
        put_s("RFID Card Reader",1);
        while(1)
        {
                if(test_end == 1)
                {
                        test_end = 0;
                        decode();
                }
        }
        return 0;
}

出0入0汤圆

发表于 2011-2-10 11:13:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-14 08:11:53 | 显示全部楼层
强人啊

出0入0汤圆

发表于 2011-3-8 14:58:59 | 显示全部楼层
请问一下强人,那个天线是怎么做的?自己绕的??

出0入0汤圆

发表于 2011-3-10 21:27:39 | 显示全部楼层
没人了哇。。。。

出0入0汤圆

发表于 2011-3-11 10:11:05 | 显示全部楼层
回复【130楼】viperchaos
请问一下强人,那个天线是怎么做的?自己绕的??
-----------------------------------------------------------------------

对的 自己绕啊

出0入0汤圆

发表于 2011-3-11 11:06:21 | 显示全部楼层
还不懂检波原理,看看

出0入0汤圆

发表于 2011-3-11 18:31:59 | 显示全部楼层
回复【132楼】AVR_DIY  苹果的另一半
-----------------------------------------------------------------------

谢谢!!

出0入0汤圆

发表于 2011-3-17 13:18:02 | 显示全部楼层
厉害

出0入0汤圆

发表于 2011-3-17 19:21:54 | 显示全部楼层
mark,解读

出0入0汤圆

发表于 2011-3-20 22:37:46 | 显示全部楼层
学习下,谢谢楼主

出0入0汤圆

发表于 2011-3-28 10:21:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-28 12:47:56 | 显示全部楼层
学习了!

出0入0汤圆

发表于 2011-3-28 15:24:14 | 显示全部楼层
很实用的好贴

出0入0汤圆

发表于 2011-4-5 21:35:45 | 显示全部楼层
问个问题   我做了一个这种电路,卡靠近时  用示波器看到64位循环的曼彻斯特_码 按下降为1 上升为0 翻译如下(我看不出头在哪)

10101011 00001001 11000001 01100111 00000000 01111110 00011111 11111110  然后……循环


卡的10位是  00024 55162   问下大家对吗?

出0入0汤圆

发表于 2011-4-6 15:52:03 | 显示全部楼层
编译不通过,用什么软件写

出0入0汤圆

发表于 2011-4-6 16:11:19 | 显示全部楼层
没有cli();  和sei();

出0入0汤圆

发表于 2011-4-28 15:12:40 | 显示全部楼层
回复【143楼】baogmwiqpl  
-----------------------------------------------------------------------
编译环境是AVR STUDIO,有CLI和SEI,你没仔细看

出0入0汤圆

发表于 2011-4-29 14:49:06 | 显示全部楼层
怎样让串口输出读卡信息??用串口助手显示是乱码啊。只能用16进制的方式来看,不知道输出到串口后用什么工具显示??

出0入0汤圆

发表于 2011-4-29 22:03:55 | 显示全部楼层
回复【145楼】viperchaos
怎样让串口输出读卡信息??用串口助手显示是乱码啊。只能用16进制的方式来看,不知道输出到串口后用什么工具显示??
-----------------------------------------------------------------------

ASCII码

出0入0汤圆

发表于 2011-4-30 16:49:56 | 显示全部楼层
回复【146楼】AVR_DIY  苹果的另一半
-----------------------------------------------------------------------

但是串口助手没有选择ASCII码显示的选项,会不会是我串口电路没焊好呢?

出0入0汤圆

发表于 2011-4-30 17:06:08 | 显示全部楼层
mark,好好研究一下

出0入0汤圆

发表于 2011-5-1 15:48:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-2 20:18:40 | 显示全部楼层
回复【147楼】viperchaos
回复【146楼】avr_diy  苹果的另一半
-----------------------------------------------------------------------
但是串口助手没有选择ascii码显示的选项,会不会是我串口电路没焊好呢?
-----------------------------------------------------------------------

不够选那个“16进制显示”就是字符串显示

出0入0汤圆

发表于 2011-5-2 21:13:20 | 显示全部楼层
好东西

出0入0汤圆

发表于 2011-5-7 20:36:46 | 显示全部楼层
LZ搭的电路能读写T5557?

出0入0汤圆

发表于 2011-5-8 01:06:22 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-9 21:51:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-10 12:49:23 | 显示全部楼层
强大

出0入0汤圆

发表于 2011-5-10 15:13:54 | 显示全部楼层
记号一下

出0入0汤圆

发表于 2011-5-12 21:59:31 | 显示全部楼层
图中有液晶可代码没有液晶 怀疑代码的真实性 图中mega8怎么还有圆圈

出10入210汤圆

 楼主| 发表于 2011-5-12 22:28:48 | 显示全部楼层
回复【157楼】kingboy100
-----------------------------------------------------------------------

你可以怀疑,但要有证据。
关于图的圆圈问题,是IC上面有两个凹点,下图是用手机刚拍的。不知道我在邮购部买的是不是假的,我认为是真的。你能提供一下你的没有圆圈的图吗?

(原文件名:ATMEGA8L.jpg)

出0入0汤圆

发表于 2011-5-17 13:22:42 | 显示全部楼层
回复【157楼】kingboy100  
-----------------------------------------------------------------------

真实性不用怀疑,都有人自己敲出来了。

出0入0汤圆

发表于 2011-5-20 09:21:55 | 显示全部楼层
老陈您好,我一个是新手,请问我只想对卡进行计数,而不是读出卡的信息,这样程序该怎么做呢?

出0入0汤圆

发表于 2011-6-16 09:43:17 | 显示全部楼层
回复【157楼】kingboy100  
-----------------------------------------------------------------------

剪刀党
还是饭都上桌了还要喂?

出0入0汤圆

发表于 2011-6-21 15:50:58 | 显示全部楼层
记号

出0入0汤圆

发表于 2011-6-23 09:25:56 | 显示全部楼层
mark RFID

出0入0汤圆

发表于 2011-6-23 11:56:12 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-7-12 20:58:09 | 显示全部楼层
mark RFID........

出0入0汤圆

发表于 2011-7-15 15:55:21 | 显示全部楼层
只恨来晚了,有这么好的共享是人生的一大幸福啊

出0入0汤圆

发表于 2011-7-21 19:34:27 | 显示全部楼层
我也想问下楼主的天线是怎么设计的?是画的PCB天线吗?

出0入0汤圆

发表于 2011-7-26 11:51:52 | 显示全部楼层
mark~

出0入0汤圆

发表于 2011-7-26 12:41:00 | 显示全部楼层
mark
不知道便宜的rfid卡应该怎么做?

出0入0汤圆

发表于 2011-7-27 11:39:12 | 显示全部楼层
回复【169楼】madzergger
我也想问下楼主的天线是怎么设计的?是画的pcb天线吗?
-----------------------------------------------------------------------

没看到图片中的天线线圈吗?怎么会是PCB天线  这个要自己饶天线,或找厂家定做

出0入0汤圆

发表于 2011-7-28 11:16:19 | 显示全部楼层
好,做个记号

出0入0汤圆

发表于 2011-8-3 22:03:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-16 19:19:54 | 显示全部楼层
值得学习!

出0入0汤圆

发表于 2011-9-26 10:20:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-26 19:50:43 | 显示全部楼层

(原文件名:未命名.JPG)
各位高手,如果只是发送的话是不是只需要上图部分就可以了,线圈的发射功率要5v,5w的话要改什么地方吗?还有就是功率放大后的方波需要什么样的电容变为正弦波?

出0入0汤圆

发表于 2011-11-12 21:18:44 | 显示全部楼层
125khz RFID mark 一下

出0入0汤圆

发表于 2011-11-18 13:51:11 | 显示全部楼层
RFID EM CARD mark !

出0入0汤圆

发表于 2011-11-19 15:06:13 | 显示全部楼层
MK

出0入0汤圆

发表于 2011-11-19 15:35:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-25 12:35:04 | 显示全部楼层
回复【132楼】AVR_DIY  苹果的另一半
回复【130楼】viperchaos
请问一下强人,那个天线是怎么做的?自己绕的??
-----------------------------------------------------------------------
对的 自己绕啊
-----------------------------------------------------------------------

多粗的线 绕多大的圈 多少圈 才能到指定的值?

出0入0汤圆

发表于 2011-12-7 18:52:17 | 显示全部楼层
学习了

出0入0汤圆

发表于 2011-12-8 21:47:34 | 显示全部楼层
顶一下,学习中

出0入0汤圆

发表于 2011-12-8 21:48:41 | 显示全部楼层
学习中

出0入0汤圆

发表于 2011-12-12 14:38:23 | 显示全部楼层
MARK RFID

出0入0汤圆

发表于 2012-1-3 15:12:40 | 显示全部楼层
分立元件的不错这个一定要做一下

出0入0汤圆

发表于 2012-1-12 16:55:04 | 显示全部楼层
mark
不错不错

出0入0汤圆

发表于 2012-2-4 23:21:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-5 00:42:55 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-5 06:36:04 | 显示全部楼层
记下

出0入0汤圆

发表于 2012-2-5 09:35:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-5 11:47:59 | 显示全部楼层
mark
头像被屏蔽

出0入0汤圆

发表于 2012-2-14 12:58:16 | 显示全部楼层
标记,标记

出0入0汤圆

发表于 2012-2-21 21:15:00 | 显示全部楼层
start_data[20] = {1,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1};
是什么意思,可以解释一下么

出0入0汤圆

发表于 2012-2-27 17:26:23 | 显示全部楼层
http://wenku.baidu.com/view/aaa8e337f111f18583d05a17.html
好习惯,回个贴~

出0入0汤圆

发表于 2012-3-5 12:11:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-3-5 13:37:15 | 显示全部楼层
这个好啊,呵呵

出0入0汤圆

发表于 2012-3-26 15:25:15 | 显示全部楼层
楼主,请问下你这套设备功耗是多少?

出0入0汤圆

发表于 2012-5-13 14:50:28 | 显示全部楼层
确实新论坛还不能下载

出0入0汤圆

发表于 2012-5-23 17:08:32 | 显示全部楼层
不能下载,就是不爽呀。

出0入0汤圆

发表于 2012-5-23 22:51:16 | 显示全部楼层
顶一下!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-18 20:58

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表