اطلاعیه

Collapse
No announcement yet.

mikro player ?!

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    mikro player ?!


    سلام این عکس که می بینید این قابلیت ها را دارد :
    خواندن ونمایش عکسهای بی ام پی 1 بیت و8 و24 بیت در سایز 128 در 64 برروی گرافیک ال سی دی
    پخش فرمت wav 12 کیلو هرتز 8 بیت
    پخش یک فرمت ویدیویی با پسوند vdo (این فرمت ساخت خودمه ) وپخش 12 فریم فیلم با صدای 12 کیلو هرتز 8 بیت
    پخش فرمت avi 128 در 64 8 بیت 12 فریم (البته با کمی سرعت پایینتر)
    کلیه این اطلاعات از mmc خانده میشوند
    بقیه امکانات تو راهه
    اگه کسی سوالی داره بگه تا جواب بدم

    اضافه شده در تاریخ :
    امکانات زیر نیز اضافه شد:
    خواندن متن txt مثل notepad
    خواندن و نمایش فایل بصورت hex

    [glow=black,2,300]بردی جالب با سیستم عاملی جالب !!![/glow]

    #2
    پاسخ : mikro player ?!

    میدونم کار مهمی کردی ولی اگه لطف کنی و مارو هم در ساخت این دستگاه راهنمایی کنی خیلی خیلی ممنون میشم :nice:
    حالا نمیخوای کمک کنی ما یاد گیریم ارتباط بین ماژول ها و میکرو را توضیح بده :agree:

    دیدگاه


      #3
      پاسخ : mikro player ?!

      سلام
      نه بابا اگه میخواستم یاد ندم که این تاپیکو نمی زدم
      فقط الان یککم سرو شلوغه توی امتحانای میان ترمم
      ولی برنامشو با mikrobasic نوشتم و مداراشم مثل خود مثال برنامه وصل کردم آخه هلپ این برنامه خیلی قویه
      فعلا :bye
      سعی میکنم سریعتر جواب بدم شرمنده

      [glow=black,2,300]بردی جالب با سیستم عاملی جالب !!![/glow]

      دیدگاه


        #4
        پاسخ : mikro player ?!

        پس ما صبر میکنیم اخه من خیلی دونبال ارتباط mmc با میکرو و پخش اهنگ بودم

        دیدگاه


          #5
          پاسخ : mikro player ?!

          سلام
          شرمنده دیر شد سرم خیلی شلوغه از یک طرف امتحانای میان ترم از طرف دیگه 20 واحد درس با چند تا آزمایشگاه وقت دیگه ایی برام نزاشته
          اقا وحید من برد رو با ما÷یک زدم البته به غیر از برد زیر PIC که اونو با روش اتوی داغ زدم برنامه آن را هم با mikribasic نوشتم اگه mikrobasic را نصب کنی و بری تو هلپش هم مثال برنامه ایی داره هم مثال و نحوه بستن مدار سخت افزاریشو توی این بردی که من زدم چیز پیچیدش یکی گرافیک ال سی دیه و دی گری ام ام سی که هر دو شون را در هلپ برنامه توضیح داده با شکل مدار سخت افزاری . برای صدا هم از pwm استفاده کردم که به اپ امپ lm386 دادم و بعد وصل کردم به بلندگو کیبردشم از نوع سطری ستونیه که اسکن می شه میمونه برنامه که کار اصلیه البته کمی پیچیدس ولی میشه راحت فهمید داره چیکار میکنه
          برای سخت افزار اخر هفته که از خوابگاه رفتم خونه روی کاغذ (شرمنده اخه خودم با ما÷یک برد زدم ) شماتیک مدار رو برات میکشم هر وقت هم خواستی بگو نحوه خواندن فایلها را شروع کنم

          [glow=black,2,300]بردی جالب با سیستم عاملی جالب !!![/glow]

          دیدگاه


            #6
            پاسخ : mikro player ?!

            من پایه هستم از هر وقت خواستی شروع کن
            فقط بعد از اموزش برنامه ای که نوشتی هم اگه بزاری خیلی خوب میشه اگر هم نخواستی همون اموزش خوبه

            دیدگاه


              #7
              پاسخ : mikro player ?!

              سلام
              خوب بزار اول یککم از سخت افزار بگم
              ال سی دی گرافیکی که من استفاده کردم همون مارک ارزون و زیاد توی بازار هست به سایز 128 در 64 (الان شمارش یادم نیست تو خوابگاهم) این ال سی دی دو تا پرت 8 تایی داره که به دو تا از پورتای میکرو وصل میشه و توی میکروبیسیک یه تابع برای شروع داره به نام Glcd_init() بری توی هلپش کامل با سخت افزار و مثال توضیح داده
              خوب بریم سراغ MMC همونتور که میدونی این mmc ها یا sd مموری ها میتونند از پروتوکل SPI آ‌برای تبادل اطلاعات استفاده کنن این پروتکل که توسط موتورولا ابداه شده دارای سه مسیر رد وبدل اطلاعات هست یک سیم برای دریافت اطلاعات یکی برای فرستادن اطلاعات و دیگری کلاک البته یک مسیر چهارمی هم نیازه که با فعال شدن اون به MMC یا sd میفهمونه که اطلاعات جاری برای اونه پس برای ارتباط mmc با میکرو به چهار سیم نیاز داریم و از spiآ‌ سخت افزاری خود میکرو استفاده میکنیم سرعت ماکسیمم کلاک این تبادل برای PIC های سری 18 ده مگاهرتزه و برای AVR ها هشت مگاهرتزه (بازم اگه بری توی هلپ کلی کمکت میکنه)
              برای صدای سیستم هم از PWM استغاده کردم (pulse wide modelatore) اگه اشتباه نوشت ببخشید یعنی میتوان پالسی با پهنای متغییر با فرکانس مشخس تولید کرد بعد من این خروجی رو دادم به اپ امپ lm386 وخروجی شو دادم به بلند گو کیفیت صدا کم میشه ولی کار باهاش خیلی سادس

              امیدوارم خسته نشده باشی و اگه روی بخش خاصی سوال داشتی بپرسی
              خوب بریم سراغ فرمتها :
              بهتره یه چیز قبلش بگم بهتره یک Hex viewer از اینترنت دانلود کنی تا بتونی توی هر فایلی رو ببینی
              خوب بهتره ار ساده ترین شروع کنیم :فایلهای txt
              این فایلها ساده ترین فایلهای کامپوتر هستند کافیه note padeآ‌ را باز کنی و یک متن انگلیسی بنویسی و اونو ذخیره کنی
              در این فالیها اگه متن انگلیسی رو با پیش فرض خودش ذخیره کنی هیچگونه هدری نداره(هدر یک سری اطلاعاته که مربوط به شناساندن نوع فایل میشه و معمولا اول فایل هست)ولی اگه پیش فرض ذخیره را عوض کنی چند بایت اول فایل به عنوان هدر ذخیره میشه و کا ر یککم سخت میشه
              وقتی فایلو ذخیره کردی حالا کافیه که اونو بایت به بایت بخونی و نمایش بدی این بایتها همان بایتهایی هستند که توی کامپیوتر ذخیره کردی توی میکروبیسیک بعد از init کردن mmc یک تابع به نام mmc_fat_read_byte داره که با هر بار فراخوانی یک بایت از فایل باز شدرو بهت میده
              من که خسته شدم تو رو نمیدونم اگه سوالی داشتی بگو وگرنه فرمتهای دیگرو ادامه بدم BY :job:

              [glow=black,2,300]بردی جالب با سیستم عاملی جالب !!![/glow]

              دیدگاه


                #8
                پاسخ : mikro player ?!

                ال سی دی گرافیکی که کامل بلدم
                فقط مشکل من سر همون mmc هست اگه سورسی راکه نوشتی بزاری خیلی خیلی ممنون میشم
                یه سوال ؟ تو پروتوث اگه خواسته باشیم از mmc استفاده کنیم باید چه کار کنیم ؟ یعنی شما تا حالا باهاش کار کردید؟
                بازم ممنون

                دیدگاه


                  #9
                  پاسخ : mikro player ?!

                  دوباره سلام
                  شرمنده من با پروتوث کار نکردم
                  ولی کار با mmc به اون سختی که فکر می کنی نیست
                  ببین روی میکرو(یه میکروی درست حسابی)یک سخت افزار تعبیه شده که می تونه پروتکل spi رو ساپورت کنه ببین این پروتکل دارای سه پورت اصلی هست هم روی میکرو هم روی وسیله مرتبط به میکرو(slove) این سه پین عبارتند از
                  clk=clocke این پایه نقش همزمانسازی بین فرستنده و گیرنده اطلاعات را بر عهده داره
                  sdo=serial data out این پایه نقش انتقال اطلاعات به خارج را بر عهده داره (هم در میکرو هم در mmc)
                  sdi=serial data in این پایه هم نقش وارد کننده اطلاعات را ایفا می کنه
                  cs=chip select این پایه چهارم می تونه هر پینی از میکرو تعریف بشه و برای انتخاب slove مورد نظر به کار میره
                  حالا شما برای استفاده از mmc نیاز نیست که به طور کامل وارد جزییات بشی(البته اگه کامل بدونی عالیه)
                  حالا برای استفاده از mmc کافیه که clk میکرو رو به clk mmc و sdo میکرو را به sdi mmc و sdi میکرو را به sdo mmc آ‌متصل کنی و یک پایه از یک پورت میکرو را به cs mmc متصل کنی فقط باید حواست باشه که mmc با ولتاژ 3.3 ولت کار می کنه (2.7 تا 3.6) و اگه ولتاژ کاری میکرو از این بیشتره باید با چند تا مقاومت کمش کنی (شکل دقیق رو توی هلپ میکروبیسیک کشیده که حتما ببین)
                  حالا برای برنامه:میکرو بیسیک توابع عالی برای کار با mmc داره بهشرح زیر:
                  mmc_init(port,pin) z به این تابع شماره پین وپورت cs (chip select) z را میدی این تابع mmc را برای کار با سکتورها آماده می کنه
                  mmc_read_sector(sector nummber, data[512]) z به این تابع شماره سکتور و یک آرایه 512 بایتی میدی و برات اون سکتور را می خونه و در آرایه میریزه
                  mmc_write_sector این تابع دقیقا مثل قبلیه و عمل نوشتن را انجام میده
                  این توابه برای کار مستقیم با سکتور هاست اگه بخوای از جدول فتfat آ‌استفاده کنی باید از توابع زیر استفاده کنی:
                  mmc_fat_init(port,pin) z دقیقا مثل mmc_init است
                  mmc_fat_assign(file name[11], attribute) z این تابع فایلی به نام دلخواه را آماده برای خواندن یا نوشتن میکنه
                  mmc_fat_reset(size) z آ‌این تابع فایل رو برای خواندن آماده می کنه و حجم فایل رو توی اون متغییر میریزه
                  mmc_fat_read_byte(data) z یک بایت از فایل باز شده را توی متغییر میریزه و توی فایل پوینتر را یکی افزایش میده در واقع با هر بار فراخوانی به ترتیب فایل را بایت به بایت می فرسته
                  یک سری توابع نیز برای نوشتن توی فایل هست که تقریبا مثل بالاست دیگه خودت برو توی هلپ کاملشو ببین (از نوشتن این توابع حوسلم سر رفت)
                  البته این کتاب خونه هایی که داره خیلی خوبه ولی کامل نیست و نمیشه هر بلایی خواستی سر فایل در بیاری ایشالا تابستون یک کتابخونه خفن واسه fat مینویسم
                  سورس هم الان خوابگام آخر هفته یه مثال برات میزارم البته بازم میگم واسه دفه هزارم هلپ هلپ هلپ خودش کلی مثال داره تازه یک سری مثالم موقیه نصب برات بصورت آماده داره
                  فعلا خسته شدم اگه سوالی هست بگو by :job: :bye

                  [glow=black,2,300]بردی جالب با سیستم عاملی جالب !!![/glow]

                  دیدگاه


                    #10
                    پاسخ : mikro player ?!

                    اگه رسیدی سورسش را اپلود کن

                    دیدگاه


                      #11
                      پاسخ : mikro player ?!

                      باشه ولی این کار درستی نیست و به آموزش کمک نمیکنه

                      [code=vb]

                      program best
                      dim i,nof as word
                      dim k,bmpbit,data,hk as byte
                      dim keyin as byte
                      dim j,size,buffer,usespace,freespace,sectorn as longint
                      dim hexdata as byte[2]
                      dim text1 as char
                      dim text2 as string[2]
                      dim text3 as string[3]
                      dim text5 as string[5]
                      dim text6 as string[6]
                      dim text11 as string[11]
                      dim text12 as string[14]
                      dim text17 as string[17]
                      dim text20 as string[20]
                      dim text21 as string[21]
                      dim text512 as byte[512]
                      dim text1024 as byte[1024]
                      const down as byte[7] = (255,137,145,161,145,137,255)
                      const high as byte[7] = (255,145,137,133,137,145,255)
                      const mmcpic as byte[130]= (252,254, 14,254,254, 14,254,254, 14,254,254, 14,254,254,14,254,254, 14,254,254, 14,254,254, 12,248,240,255,255, 0, 0, 0, 0, 0, 0,248,236, 72, 12, 8, 12,8, 12, 8, 12,248, 0, 0, 0, 0, 0,255,255,255,255, 0,224,192,128,192,224, 3, 6,226,198,130,198,226,6,2,134,195, 96, 32, 32, 0, 0,255,255,255,255, 0,191,128,129,128,191,128,128,191,128,129,128,191, 128,128,143,152,176,160,160,128, 0,255,255,15, 31, 30, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,29, 29, 29, 29, 29, 29, 29, 29, 28, 30, 31, 15)
                      sub procedure mmcinit()
                      dim j,data as byte
                      ADCON1 = 0 trisc.6=1 trisc.7=1 trisc.2=0 trisc.3=0 trisc.5=0
                      trisc.2=0
                      portc.2=0
                      Spi1_Init_Advanced(MASTER_OSC_DIV64, DATA_SAMPLE_MIDDLE, CLK_IDLE_LOW, LOW_2_HIGH)
                      for j=1 to 100
                      Spi1_Write(0xff)
                      next j
                      while Mmc_Init(PORTC, 2)
                      wend
                      Spi1_Init_Advanced(MASTER_OSC_DIV4, DATA_SAMPLE_MIDDLE, CLK_IDLE_LOW, LOW_2_HIGH)
                      delay_ms(1)
                      Glcd_Init(portb,4,3,0,1,5,2,porte)
                      end sub
                      sub function key() as byte
                      result=0 keyin=0 portj=0
                      for i=1 to 1
                      portj=15 delay_ms(1)
                      if (portj.6=1) then keyin=1 break end if
                      portj=4 delay_ms(1)
                      if (portj.6=1) then keyin=1 break end if
                      portj=5 delay_ms(1)
                      if (portj.6=1) then keyin=1 break end if
                      next i
                      portj=15 delay_ms(1)
                      if ((keyin=0)and (portj.7=1)) then result=253 exit end if if ((keyin=0)and (portj.4=1)) then result=65 exit end if
                      if ((keyin=0)and (portj.5=1)) then result=81 exit end if if ((keyin=0)and (portc.6=1)) then result=49 exit end if
                      if ((keyin=0)and (portc.7=1)) then result=255 exit end if
                      if ((keyin=1)and (portj.4=1)) then result=97 exit end if if ((keyin=1)and (portj.5=1)) then result=113 exit end if
                      if ((keyin=1)and (portc.6=1)) then result=33 exit end if
                      portj=14 delay_ms(1)
                      if ((keyin=0)and (portj.7=1)) then result=252 exit end if if ((keyin=0)and (portj.6=1)) then result=90 exit end if
                      if ((keyin=0)and (portj.4=1)) then result=83 exit end if if ((keyin=0)and (portj.5=1)) then result=87 exit end if
                      if ((keyin=0)and (portc.6=1)) then result=50 exit end if if ((keyin=0)and (portc.7=1)) then result=1 exit end if
                      if ((keyin=1)and (portj.6=1)) then result=122 exit end if if ((keyin=1)and (portj.4=1)) then result=115 exit end if
                      if ((keyin=1)and (portj.5=1)) then result=119 exit end if if ((keyin=1)and (portc.6=1)) then result=64 exit end if
                      'if ((keyin=1)and (portc.7=1)) then result=1 exit end if
                      portj=13 delay_ms(1)
                      if ((keyin=0)and (portj.7=1)) then result=32 exit end if if ((keyin=0)and (portj.6=1)) then result=88 exit end if
                      if ((keyin=0)and (portj.4=1)) then result=68 exit end if if ((keyin=0)and (portj.5=1)) then result=69 exit end if
                      if ((keyin=0)and (portc.6=1)) then result=51 exit end if if ((keyin=0)and (portc.7=1)) then result=1 exit end if
                      if ((keyin=1)and (portj.6=1)) then result=120 exit end if if ((keyin=1)and (portj.4=1)) then result=100 exit end if
                      if ((keyin=1)and (portj.5=1)) then result=101 exit end if if ((keyin=1)and (portc.6=1)) then result=35 exit end if
                      'if ((keyin=1)and (portc.7=1)) then result=1 exit end if
                      portj=12 delay_ms(1)
                      if ((keyin=0)and (portj.7=1)) then result=32 exit end if if ((keyin=0)and (portj.6=1)) then result=67 exit end if
                      if ((keyin=0)and (portj.4=1)) then result=70 exit end if if ((keyin=0)and (portj.5=1)) then result=82 exit end if
                      if ((keyin=0)and (portc.6=1)) then result=52 exit end if if ((keyin=0)and (portc.7=1)) then result=1 exit end if
                      if ((keyin=1)and (portj.7=1)) then result=32 exit end if if ((keyin=1)and (portj.6=1)) then result=99 exit end if
                      if ((keyin=1)and (portj.4=1)) then result=102 exit end if if ((keyin=1)and (portj.5=1)) then result=114 exit end if
                      if ((keyin=1)and (portc.6=1)) then result=36 exit end if 'if ((keyin=1)and (portc.7=1)) then result=1 exit end if
                      portj=11 delay_ms(1)
                      if ((keyin=0)and (portj.7=1)) then result=32 exit end if if ((keyin=0)and (portj.6=1)) then result=86 exit end if
                      if ((keyin=0)and (portj.4=1)) then result=71 exit end if if ((keyin=0)and (portj.5=1)) then result=84 exit end if
                      if ((keyin=0)and (portc.6=1)) then result=53 exit end if if ((keyin=0)and (portc.7=1)) then result=128 exit end if
                      if ((keyin=1)and (portj.7=1)) then result=32 exit end if if ((keyin=1)and (portj.6=1)) then result=118 exit end if
                      if ((keyin=1)and (portj.4=1)) then result=103 exit end if if ((keyin=1)and (portj.5=1)) then result=116 exit end if
                      if ((keyin=1)and (portc.6=1)) then result=37 exit end if
                      portj=10 delay_ms(1)
                      if ((keyin=0)and (portj.7=1)) then result=32 exit end if if ((keyin=0)and (portj.6=1)) then result=66 exit end if
                      if ((keyin=0)and (portj.4=1)) then result=72 exit end if if ((keyin=0)and (portj.5=1)) then result=89 exit end if
                      if ((keyin=0)and (portc.6=1)) then result=54 exit end if if ((keyin=0)and (portc.7=1)) then result=126 exit end if
                      if ((keyin=1)and (portj.7=1)) then result=32 exit end if if ((keyin=1)and (portj.6=1)) then result=98 exit end if
                      if ((keyin=1)and (portj.4=1)) then result=104 exit end if if ((keyin=1)and (portj.5=1)) then result=121 exit end if
                      if ((keyin=1)and (portc.6=1)) then result=94 exit end if
                      portj=9 delay_ms(1)
                      if ((keyin=0)and (portj.7=1)) then result=32 exit end if if ((keyin=0)and (portj.6=1)) then result=78 exit end if
                      if ((keyin=0)and (portj.4=1)) then result=74 exit end if if ((keyin=0)and (portj.5=1)) then result=85 exit end if
                      if ((keyin=0)and (portc.6=1)) then result=55 exit end if if ((keyin=0)and (portc.7=1)) then result=127 exit end if
                      if ((keyin=1)and (portj.7=1)) then result=32 exit end if if ((keyin=1)and (portj.6=1)) then result=110 exit end if
                      if ((keyin=1)and (portj.4=1)) then result=106 exit end if if ((keyin=1)and (portj.5=1)) then result=117 exit end if
                      if ((keyin=1)and (portc.6=1)) then result=38 exit end if
                      portj=8 delay_ms(1)
                      if ((keyin=0)and (portj.7=1)) then result=32 exit end if if ((keyin=0)and (portj.6=1)) then result=77 exit end if
                      if ((keyin=0)and (portj.4=1)) then result=75 exit end if if ((keyin=0)and (portj.5=1)) then result=73 exit end if
                      if ((keyin=0)and (portc.6=1)) then result=56 exit end if if ((keyin=0)and (portc.7=1)) then result=91 exit end if
                      if ((keyin=1)and (portj.7=1)) then result=32 exit end if if ((keyin=1)and (portj.6=1)) then result=109 exit end if
                      if ((keyin=1)and (portj.4=1)) then result=107 exit end if if ((keyin=1)and (portj.5=1)) then result=105 exit end if
                      if ((keyin=1)and (portc.6=1)) then result=42 exit end if 'if ((keyin=1)and (portc.7=1)) then result=1 exit end if
                      portj=7 delay_ms(1)
                      if ((keyin=0)and (portj.7=1)) then result=1 exit end if if ((keyin=0)and (portj.6=1)) then result=39 exit end if
                      if ((keyin=0)and (portj.4=1)) then result=76 exit end if if ((keyin=0)and (portj.5=1)) then result=79 exit end if
                      if ((keyin=0)and (portc.6=1)) then result=57 exit end if if ((keyin=0)and (portc.7=1)) then result=93 exit end if
                      if ((keyin=1)and (portj.7=1)) then result=128 exit end if if ((keyin=1)and (portj.6=1)) then result=60 exit end if
                      if ((keyin=1)and (portj.4=1)) then result=108 exit end if if ((keyin=1)and (portj.5=1)) then result=111 exit end if
                      if ((keyin=1)and (portc.6=1)) then result=40 exit end if if ((keyin=1)and (portc.7=1)) then result=125 exit end if
                      portj=6 delay_ms(1)
                      if ((keyin=0)and (portj.7=1)) then result=47 exit end if if ((keyin=0)and (portj.6=1)) then result=46 exit end if
                      if ((keyin=0)and (portj.4=1)) then result=34 exit end if if ((keyin=0)and (portj.5=1)) then result=80 exit end if
                      if ((keyin=0)and (portc.6=1)) then result=48 exit end if if ((keyin=0)and (portc.7=1)) then result=45 exit end if
                      if ((keyin=1)and (portj.7=1)) then result=63 exit end if if ((keyin=1)and (portj.6=1)) then result=62 exit end if
                      if ((keyin=1)and (portj.4=1)) then result=44 exit end if if ((keyin=1)and (portj.5=1)) then result=112 exit end if
                      if ((keyin=1)and (portc.6=1)) then result=41 exit end if if ((keyin=1)and (portc.7=1)) then result=95 exit end if
                      portj=5 delay_ms(1)
                      if ((keyin=0)and (portj.7=1)) then result=252 exit end if if ((keyin=0)and (portj.4=1)) then result=250 exit end if
                      if ((keyin=0)and (portj.5=1)) then result=59 exit end if if ((keyin=0)and (portc.6=1)) then result=251 exit end if
                      if ((keyin=0)and (portc.7=1)) then result=43 exit end if if ((keyin=1)and (portj.5=1)) then result=58 exit end if
                      if ((keyin=1)and (portc.6=1)) then result=251 exit end if if ((keyin=1)and (portc.7=1)) then result=61 exit end if
                      portj=4 delay_ms(1)
                      if ((keyin=0)and (portj.7=1)) then result=253 exit end if if ((keyin=0)and (portj.4=1)) then result=250 exit end if
                      if ((keyin=0)and (portj.5=1)) then result=250 exit end if if ((keyin=0)and (portc.6=1)) then result=251 exit end if
                      if ((keyin=0)and (portc.7=1)) then result=92 exit end if if ((keyin=1)and (portc.7=1)) then result=124 exit end if
                      portj=3 delay_ms(1)
                      if ((keyin=0)and (portj.7=1)) then result=177 exit end if if ((keyin=0)and (portj.6=1)) then result=1 exit end if
                      if ((keyin=0)and (portj.4=1)) then result=1 exit end if if ((keyin=0)and (portj.5=1)) then result=1 exit end if
                      if ((keyin=0)and (portc.6=1)) then result=1 exit end if if ((keyin=0)and (portc.7=1)) then result=1 exit end if
                      portj=2 delay_ms(1)
                      if ((keyin=0)and (portj.7=1)) then result=155 exit end if if ((keyin=0)and (portj.6=1)) then result=166 exit end if
                      if ((keyin=0)and (portj.4=1)) then result=1 exit end if if ((keyin=0)and (portj.5=1)) then result=1 exit end if
                      if ((keyin=0)and (portc.6=1)) then result=1 exit end if if ((keyin=0)and (portc.7=1)) then result=1 exit end if
                      portj=1 delay_ms(1)
                      if ((keyin=0)and (portj.7=1)) then result=188 exit end if if ((keyin=0)and (portj.6=1)) then result=1 exit end if
                      if ((keyin=0)and (portj.4=1)) then result=1 exit end if if ((keyin=0)and (portj.5=1)) then result=1 exit end if
                      if ((keyin=0)and (portc.6=1)) then result=1 exit end if if ((keyin=0)and (portc.7=1)) then result=1 exit end if
                      portj=0 delay_ms(1)
                      if ((keyin=0)and (portj.7=1)) then result=1 exit end if if ((keyin=0)and (portj.6=1)) then result=1 exit end if
                      if ((keyin=0)and (portj.4=1)) then result=1 exit end if if ((keyin=0)and (portj.5=1)) then result=1 exit end if
                      if ((keyin=0)and (portc.6=1)) then result=1 exit end if if ((keyin=0)and (portc.7=1)) then result=1 exit end if
                      delay_ms(1) result=0
                      end sub
                      sub procedure init()
                      ADCON1 = 0 trisa.2=1 trisa.3=1 trisg.3=0 trisj=%11110000 trisc.6=1 trisc.7=1
                      trisc.2=0 trisc.3=0 trisc.5=0
                      Spi1_Init_Advanced(MASTER_OSC_DIV16, DATA_SAMPLE_MIDDLE, CLK_IDLE_LOW, LOW_2_HIGH)
                      Mmc_Fat_Init(PORTC, 2)
                      Spi1_Init_Advanced(MASTER_OSC_DIV4, DATA_SAMPLE_MIDDLE, CLK_IDLE_LOW, LOW_2_HIGH)
                      delay_ms(1)
                      Glcd_Init(portb,4,3,0,1,5,2,porte) glcd_fill(0)
                      end sub
                      sub procedure vidio()
                      dim k,l,max as longint
                      dim d,i,j,kz as byte
                      mmc_fat_reset(max) glcd_fill(0) delay_ms(10) text11="" text5=""
                      text2[0]=0 text2[1]=0 text2[2]=0 kz=(max/12000) mod 60 bytetostr(kz,text2)
                      glcd_write_text(text2,110,5,1) glcd_write_text(":",110,5,1)
                      text2[0]=0 text2[1]=0 text2[2]=0 kz=max/(12000*60)
                      bytetostr(k,text2) glcd_write_text(text2,92,5,1)
                      glcd_write_text("Media Player",30,1,1) glcd_write_text("************",30,2,1)
                      Glcd_Write_Text("File",0,3,1) Glcd_Write_Text(text12,56,3,1)
                      LongintToStr(max, text11) glcd_write_text("Size",0,4,1)
                      glcd_write_text(text11,48,4,1) glcd_write_char("B",120,4,1) text11=""
                      glcd_write_text("Time",0,5,1)
                      glcd_write_text("Rate 24 KB/S" ,0,6,1)
                      delay_ms(3000)
                      Pwm4_Init(36000) Pwm4_Start ' Start PWM
                      for k=1 to (max/2048)
                      for j=0 to 7
                      for i=0 to 127
                      glcd_set_x(i)
                      if i=64 then Glcd_Set_Side(65) end if
                      if i=0 then Glcd_Set_Side(0) end if
                      Glcd_Set_Page(j) Mmc_Fat_Read(d)
                      Glcd_Write_Data(d) Mmc_Fat_Read(d)
                      Pwm4_Change_Duty(d)
                      next i
                      next j
                      next k
                      Mmc_Fat_Reset(max) glcd_fill(0) pwm4_stop
                      end sub
                      sub procedure sound()
                      dim max2,j,i as longint dim d,l,e,f,k,b,v as byte dim b2 as word
                      Mmc_Fat_Reset(max2) b2=1 k=0 b=0 l=0 glcd_fill(0) text11="" text5=""
                      text2[0]=0 text2[1]=0 text2[2]=0 k=(max2/12000) mod 60 bytetostr(k,text2)
                      glcd_write_text(text2,110,4,1) glcd_write_text(":",110,4,1)
                      text2[0]=0 text2[1]=0 text2[2]=0 k=max2/(720000)
                      bytetostr(k,text2) glcd_write_text(text2,92,4,1)
                      glcd_write_text("Audio Player",30,0,1) glcd_write_text("************",30,1,1)
                      LongintToStr(max2, text11) glcd_write_text("Size",0,3,1)
                      glcd_write_text(text11,48,3,1) glcd_write_char("B",120,3,1)
                      Glcd_Write_Text("File",0,2,1) Glcd_Write_Text(text12,56,2,1)
                      text11="" glcd_write_text("Time",0,4,1)
                      glcd_write_text("Rate 12KB/S" ,0,5,1)
                      for k=0 to 100
                      if k<50 then Glcd_Set_Side(0) else Glcd_Set_Side(65) end if
                      Glcd_Set_X(k+14) Glcd_Set_Page(7)
                      if (k=0) or (k=100) then Glcd_Write_Data(127) else Glcd_Write_Data(65) end if
                      next k
                      Pwm4_Init(150000) Pwm4_Start delay_ms(5) e=0
                      Mmc_Fat_Reset(max2) i=0
                      for i=1 to (max2/12000)
                      for j=1 to 12000
                      Mmc_Fat_Read(d) 'Pwm4_Change_Duty(d-1)
                      if b=255 then
                      l=((i-1)*12000+j)*100/max2 b=0
                      if l<50 then Glcd_Set_Side(0) end if
                      if l>=50 then Glcd_Set_Side(65) end if
                      Glcd_Set_Page(7) Glcd_Set_X(l+14)
                      Glcd_Write_Data(127)
                      end if
                      if d>v then Pwm4_Change_Duty(d-1) delay_us(10) Pwm4_Change_Duty(d) end if
                      if d=v then Pwm4_Change_Duty(d ) delay_us(10) Pwm4_Change_Duty(d) end if
                      if d<v then Pwm4_Change_Duty(d+1) delay_us(10) Pwm4_Change_Duty(d) end if
                      b=b+1 delay_us(15)
                      v=d
                      next j
                      text2[0]=0 text2[1]=0 text2[2]=0 k=i mod 60 bytetostr(k,text2)
                      glcd_write_text(text2,64,6,1) glcd_write_text(":",62,6,1)
                      text2[0]=0 text2[1]=0 text2[2]=0 k=i/60
                      bytetostr(k,text2) glcd_write_text(text2,46,6,1)

                      next i
                      pwm4_stop
                      end sub

                      [/code]

                      [glow=black,2,300]بردی جالب با سیستم عاملی جالب !!![/glow]

                      دیدگاه


                        #12
                        پاسخ : mikro player ?!

                        ادامه

                        [code=vb]

                        sub procedure bmp8bit()
                        dim d,x,y as byte dim i as word dim size as longint
                        Mmc_Fat_Reset(size) glcd_fill(0)
                        for i=1 to 1078
                        Mmc_Fat_Read(d)
                        next i
                        for y=63 to 0 step -1
                        for x=0 to 127
                        Mmc_Fat_Read(d)
                        if d<127 then Glcd_Dot(x, y, 1) end if
                        next x
                        next y
                        end sub

                        sub procedure bmp1bit()
                        dim d,x,y,b as byte dim i as word dim size as longint
                        glcd_fill(0) Mmc_Fat_Reset(size)
                        for i=1 to 62
                        Mmc_Fat_Read(d)
                        next i
                        for y=63 to 0 step -1
                        for x=0 to 15
                        Mmc_Fat_Read(d)
                        b=d and %10000000 if b=0 then Glcd_Dot(x*8 , y, 1) b=0 end if
                        b=d and %01000000 if b=0 then Glcd_Dot(x*8+1, y, 1) b=0 end if
                        b=d and %00100000 if b=0 then Glcd_Dot(x*8+2, y, 1) b=0 end if
                        b=d and %00010000 if b=0 then Glcd_Dot(x*8+3, y, 1) b=0 end if
                        b=d and %00001000 if b=0 then Glcd_Dot(x*8+4, y, 1) b=0 end if
                        b=d and %00000100 if b=0 then Glcd_Dot(x*8+5, y, 1) b=0 end if
                        b=d and %00000010 if b=0 then Glcd_Dot(x*8+6, y, 1) b=0 end if
                        b=d and %00000001 if b=0 then Glcd_Dot(x*8+7, y, 1) b=0 end if
                        next x
                        next y
                        end sub
                        sub procedure avi() ' 12 frame 125x64 or 128x64 12khz
                        dim d,l,o,t,q as byte dim buffer as byte[1024] dim buffer2 as byte[128]
                        dim i,j,p,k as longint dim size,fram as longint
                        mmc_fat_reset(size) size=mmc_fat_get_file_size()
                        glcd_fill(0) delay_ms(1) fram=((size-69632)/9216)-1
                        for i=1 to 69632
                        Mmc_Fat_Read(d)
                        next i
                        Pwm4_Init(145250) Pwm4_Start ' Start PWM
                        for k=1 to fram
                        mmc_fat_read(d) mmc_fat_read(d) mmc_fat_read(d) mmc_fat_read(d)
                        mmc_fat_read(d) mmc_fat_read(d) mmc_fat_read(d) mmc_fat_read(d)
                        for j=7 to 0 step -1
                        for l=7 to 0 step -1 ' get one line(one page)
                        for t=0 to 127 '
                        mmc_fat_read(d) '
                        if d<127 then buffer2[t].l=1 end if '
                        next t '
                        next l '
                        for i=0 to 127
                        glcd_set_x(i)
                        if i=64 then Glcd_Set_Side(65) Glcd_Set_Page(j)end if
                        if i=0 then Glcd_Set_Side(0) Glcd_Set_Page(j) end if
                        Glcd_Write_Data(buffer2[i])
                        Pwm4_Change_Duty(buffer[(7-j)*128+i])
                        buffer2[i]=0
                        next i
                        next j
                        mmc_fat_read(d) mmc_fat_read(d) mmc_fat_read(d) mmc_fat_read(d)
                        mmc_fat_read(d) mmc_fat_read(d) mmc_fat_read(d) mmc_fat_read(d)
                        for i=0 to 999
                        mmc_fat_read(buffer[i])
                        next i
                        next k
                        glcd_fill(0) pwm4_stop
                        end sub
                        sub procedure bmp24bit()
                        dim d0,d1,d2,x,y as byte dim i as word dim size,p as longint
                        Mmc_Fat_Reset(size) glcd_fill(0)
                        for i=1 to 54
                        Mmc_Fat_Read(d0)
                        next i
                        for y=63 to 0 step -1
                        for x=0 to 127
                        Mmc_Fat_Read(d0) Mmc_Fat_Read(d1) Mmc_Fat_Read(d2)
                        if ((d0<127) or (d1<127) or (d2<127)) then Glcd_Dot(x, y, 1) end if
                        next x
                        next y
                        end sub
                        sub procedure filename(dim n as word)
                        dim i,size as longint dim w as byte
                        Mmc_Fat_Assign("fat.txt",0x20) mmc_fat_reset(size)
                        for i=0 to 12 text12[i]=0 next i
                        if n=0 then exit end if
                        if n>1 then
                        for i=0 to (n-1)*12 -1
                        mmc_fat_read(w)
                        next i
                        end if
                        for i=0 to 11
                        mmc_fat_read(w) if w=32 then break end if text12[i]=w
                        next i
                        end sub

                        sub procedure gnof()
                        dim size as longint
                        Mmc_Fat_Assign("fat.txt",0x20) mmc_fat_reset(size)
                        size = Mmc_Fat_Get_File_Size nof=size/12
                        end sub

                        sub procedure getusesize()
                        dim size,k,i,size2 as longint dim w,j as byte
                        usespace=0 gnof()
                        for i=1 to nof filename(i)
                        mmc_fat_assign(text12,0x20) size2=Mmc_Fat_Get_File_Size
                        usespace=usespace+size2 next i
                        end sub

                        sub procedure showpapertisofmmc()
                        getusesize()
                        LongintToStr(usespace, text11) glcd_write_text("Used space in MMC =",0,0,1)
                        glcd_write_text(text11,0,1,1) glcd_write_text("B",78,1,1)
                        freespace=129830912-usespace LongintToStr(freespace, text11)
                        glcd_write_text("Free space =",0,2,1) glcd_write_text("B",78,3,1)
                        glcd_write_text(text11,0,3,1) glcd_write_text("Capacity =",0,4,1)
                        glcd_write_text(" 129830912 B",0,5,1) glcd_write_text("Used ",0,6,1)
                        bytetostr(usespace/1298309,text3) glcd_write_text(text3,30,6,1)
                        glcd_write_text("%",48,6,1) glcd_write_text("Free ",72,6,1)
                        bytetostr(100-(usespace/1298309),text3) glcd_write_text(text3,102,6,1)
                        glcd_write_text("%",122,6,1)
                        for i=0 to 100
                        if i<50 then Glcd_Set_Side(0) else Glcd_Set_Side(65) end if
                        Glcd_Set_X(i+14) Glcd_Set_Page(7)
                        if ((i=0) or (i=100) or (i<((usespace)/1298309))) then Glcd_Write_Data(127) else Glcd_Write_Data(65) end if
                        next i
                        for j=0 to 4 for i=95 to 120 'show mmc pic
                        Glcd_Set_Side(65) Glcd_Set_Page(j+1) '
                        Glcd_Set_X(i) Glcd_Write_Data(mmcpic[(i-95)+j*26])'
                        next i next j '
                        end sub

                        sub procedure intername()
                        dim k,q as byte
                        for i=0 to 12
                        text12[i]=0
                        next i
                        q=0
                        i=0
                        while q<12
                        while 1
                        k=key()
                        if (k=250) then exit end if
                        if (k=251) then break end if
                        if (k=255) then
                        for i=0 to 12
                        text12[i]=0
                        next i
                        exit
                        end if
                        if ((k>=32) or (k<=128)) then break end if
                        delay_ms(25)
                        wend
                        if ((k=251)and(q>=1)) then
                        q=q-1 text12[q]=0
                        else
                        text12[i]=k q=q+1
                        end if

                        glcd_fill(0)
                        Glcd_Write_Text(text12,0,0,1)
                        if q=13 then continue end if
                        delay_ms(250)

                        wend
                        end sub

                        sub procedure bytetohex(dim s as byte)
                        dim lowbyte,highbyte as byte
                        highbyte=s and 15 lowbyte=s >> 4
                        if lowbyte<=9 then hexdata[0]=48+lowbyte else hexdata[0]=55+lowbyte end if
                        if highbyte<=9 then hexdata[1]=48+highbyte else hexdata[1]=55+highbyte end if
                        end sub

                        sub procedure path()
                        dim size,pointer,p as longint
                        dim w,j,i,l,k as byte
                        k=0
                        for i=11 to 0 step -1
                        if text12[i]=46 then k=i end if
                        next i
                        text3[0]=0 text3[1]=0 text3[2]=0 text3[3]=0
                        for i=0 to 2
                        text3[i]=text12[k+i+1]
                        next i
                        end sub
                        sub procedure getbmpbit()
                        dim i,d as byte mmc_fat_reset(size)
                        for i=1 to 28
                        Mmc_Fat_Read(d)
                        next i
                        Mmc_Fat_Read(bmpbit)
                        end sub
                        sub procedure notepad()
                        dim size,l,m,s as longint
                        dim i,j,d,d2,h as byte
                        mmc_fat_reset(size)
                        s=0
                        while 1
                        if m>size then break end if
                        mmc_fat_read(d)
                        mmc_fat_read(d2)
                        if ((d=0x0d) and (d2=0x0a)) then s=s+1 end if
                        m=m+1
                        wend
                        mmc_fat_reset(size)

                        m=0
                        for l=1 to ((size+s)/114)+1
                        glcd_fill(0)
                        glcd_write_char("T",8,0,1)
                        glcd_write_char("S",14,0,1)
                        bytetohex(Highest(size))
                        glcd_write_char(hexdata[0],20,0,1)
                        glcd_write_char(hexdata[1],26,0,1)
                        bytetohex(Higher(size))
                        glcd_write_char(hexdata[0],32,0,1)
                        glcd_write_char(hexdata[1],38,0,1)
                        bytetohex(Hi(size))
                        glcd_write_char(hexdata[0],44,0,1)
                        glcd_write_char(hexdata[1],50,0,1)
                        bytetohex(lo(size))
                        glcd_write_char(hexdata[0],56,0,1)
                        glcd_write_char(hexdata[1],62,0,1)
                        glcd_write_char(".",74,0,1)
                        bytetohex(Highest(m))
                        glcd_write_char(hexdata[0],80,0,1)
                        glcd_write_char(hexdata[1],86,0,1)
                        bytetohex(Higher(m))
                        glcd_write_char(hexdata[0],92,0,1)
                        glcd_write_char(hexdata[1],98,0,1)
                        bytetohex(Hi(m))
                        glcd_write_char(hexdata[0],104,0,1)
                        glcd_write_char(hexdata[1],110,0,1)
                        bytetohex(lo(m))
                        glcd_write_char(hexdata[0],116,0,1)
                        glcd_write_char(hexdata[1],122,0,1)
                        for h=0 to 6
                        Glcd_Set_Side(0)
                        Glcd_Set_Page(0)
                        Glcd_Set_X(h)
                        Glcd_Write_Data(high[h])
                        next h
                        for h=0 to 6
                        Glcd_Set_Side(0)
                        Glcd_Set_Page(7)
                        Glcd_Set_X(h)
                        Glcd_Write_Data(down[h])
                        next h
                        h=((l-1)*6*114/(size+s)) +1
                        for i=0 to 6
                        Glcd_Set_Side(0)
                        Glcd_Set_Page(h)
                        Glcd_Set_X(i)
                        if ((i=6) or (i=0)) then Glcd_Write_Data(126) else Glcd_Write_Data(255) end if
                        next i

                        for j=1 to 7
                        for i=1 to 19
                        mmc_fat_read(d)
                        if (d=0x0d) then
                        mmc_fat_read(d2)
                        m=m+2
                        if d2=0x0a then break end if
                        end if
                        glcd_write_char(d,i*6+7,j,1)
                        m=m+1
                        if m>=size then break end if
                        next i
                        if m>size then break end if
                        next j
                        delay_ms(3000)
                        next l
                        end sub
                        sub procedure hexview()
                        dim size,l,m as longint
                        dim i,j,d,h as byte
                        mmc_fat_reset(size)
                        m=0
                        for l=1 to (size/56)+1
                        glcd_fill(0)
                        glcd_write_char("T",8,0,1)
                        glcd_write_char("S",14,0,1)
                        bytetohex(Highest(size))
                        glcd_write_char(hexdata[0],20,0,1)
                        glcd_write_char(hexdata[1],26,0,1)
                        bytetohex(Higher(size))
                        glcd_write_char(hexdata[0],32,0,1)
                        glcd_write_char(hexdata[1],38,0,1)
                        bytetohex(Hi(size))
                        glcd_write_char(hexdata[0],44,0,1)
                        glcd_write_char(hexdata[1],50,0,1)
                        bytetohex(lo(size))
                        glcd_write_char(hexdata[0],56,0,1)
                        glcd_write_char(hexdata[1],62,0,1)
                        glcd_write_char(".",74,0,1)
                        for h=0 to 6
                        Glcd_Set_Side(0)
                        Glcd_Set_Page(0)
                        Glcd_Set_X(h)
                        Glcd_Write_Data(high[h])
                        next h
                        for h=0 to 6
                        Glcd_Set_Side(0)
                        Glcd_Set_Page(7)
                        Glcd_Set_X(h)
                        Glcd_Write_Data(down[h])
                        next h
                        h=((l)*6*56/(size+s)) +1
                        for i=0 to 6
                        Glcd_Set_Side(0)
                        Glcd_Set_Page(h)
                        Glcd_Set_X(i)
                        if ((i=6) or (i=0)) then Glcd_Write_Data(126) else Glcd_Write_Data(255) end if
                        next i


                        for j=1 to 7
                        for i=2 to 16 step 2
                        mmc_fat_read(d)
                        if m>=size then break end if
                        bytetohex(d)
                        glcd_write_char(hexdata[0],4+i*7,j,1)
                        glcd_write_char(hexdata[1],10+i*7,j,1)
                        m=m+1
                        next i
                        if m>=size then break end if
                        next j
                        bytetohex(Highest(m))
                        glcd_write_char(hexdata[0],80,0,1)
                        glcd_write_char(hexdata[1],86,0,1)
                        bytetohex(Higher(m))
                        glcd_write_char(hexdata[0],92,0,1)
                        glcd_write_char(hexdata[1],98,0,1)
                        bytetohex(Hi(m))
                        glcd_write_char(hexdata[0],104,0,1)
                        glcd_write_char(hexdata[1],110,0,1)
                        bytetohex(lo(m))
                        glcd_write_char(hexdata[0],116,0,1)
                        glcd_write_char(hexdata[1],122,0,1)
                        delay_ms(2000)
                        next l
                        end sub


                        sub procedure copyfat()
                        dim i as longint
                        for i=504+95 to 536+95
                        mmcinit()
                        glcd_fill(255)
                        while Mmc_Read_Sector(i,text512) wend
                        while Mmc_write_Sector(32+i,text512) wend
                        next i
                        end sub


                        main:
                        mmcinit()
                        glcd_fill(128)
                        for i=0 to 50
                        while Mmc_Read_Sector(i+95+504,text512) wend
                        while Mmc_Write_Sector(size+95+i,text512) wend
                        next i

                        init()
                        ali:

                        showpapertisofmmc()
                        delay_ms(3000)

                        gnof()'---->
                        for i=1 to nof
                        filename(i)
                        path()
                        Mmc_Fat_Assign(text12,0x20)
                        if ((text3[0]=72) and (text3[1]=69) and (text3[2]=88)) or ((text3[0]=104) and (text3[1]=101) and (text3[2]=120)) then hexview() end if 'hex or HEX
                        if ((text3[0]=84) and (text3[1]=88) and (text3[2]=84)) or ((text3[0]=116) and (text3[1]=120) and (text3[2]=116)) then notepad() end if 'txt or TXT
                        if ((text3[0]=87) and (text3[1]=65) and (text3[2]=86)) or ((text3[0]=119) and (text3[1]=97) and (text3[2]=118)) then sound() end if 'wav or WAV
                        if ((text3[0]=86 and (text3[1]=68) and (text3[2]=79)) or ((text3[0]=118) and (text3[1]=100) and (text3[2]=111))) then vidio() end if 'vdo or VDO
                        if ((text3[0]=65 and (text3[1]=86) and (text3[2]=73)) or ((text3[0]=97) and (text3[1]=118) and (text3[2]=105))) then avi() end if 'avi or AVI
                        if ((text3[0]=66 and (text3[1]=77) and (text3[2]=80)) or ((text3[0]=98) and (text3[1]=109) and (text3[2]=112))) then 'bmp or BMP
                        getbmpbit() if bmpbit=1 then bmp1bit()end if if bmpbit=8 then bmp8bit()end if if bmpbit=24 then bmp24bit()end if delay_ms(2500) end if'
                        next i

                        goto ali
                        end.

                        [/code]

                        [glow=black,2,300]بردی جالب با سیستم عاملی جالب !!![/glow]

                        دیدگاه


                          #13
                          پاسخ : mikro player ?!

                          با سلام و خسته نباشید
                          بایت سورس که گذاشتید یه دنیا ممنون هستم خیلی خیلی کار خوبی کردی فقط دوتا سوال
                          کریستال استفاده شده چند Mhz هست؟؟ :eek:
                          این خط برنامه هم اشکال داره
                          Glcd_Write_Data(buffer2)
                          مشکلش هم
                          E-27 Incompatible types (byte128] to byte) GlcdTest.pbas

                          دیدگاه


                            #14
                            پاسخ : mikro player ?!

                            خواهش می کنم
                            اصلش اینه
                            Glcd_Write_Data(buffer2[i])
                            buffer2[i] z
                            در واقع یک بایت از یک آرایه با اندیس مورد نظره
                            کریستال 40 mz و pic18f8722 هست
                            امیدوارم موفق باشی

                            اضافه شده در تاریخ :
                            اینم سورسش

                            BEST.RAR

                            (لینک اصلاح شده است )

                            [glow=black,2,300]بردی جالب با سیستم عاملی جالب !!![/glow]

                            دیدگاه


                              #15
                              پاسخ : mikro player ?!

                              ببخشید دوباره اومدم
                              یه سوال می تویند یه شماتیک از مدار برام بزارید تا به یه جاهایی برسیم
                              ببخشید
                              در مورد سورس هم جواب داد کار کرد دستتون درد نکنه
                              در ضمن نقشه فیبر مدار را نمیخوام فقط یه شماتیک اگه با دست هم کشیده باشید مشکلی نداره

                              دیدگاه

                              لطفا صبر کنید...
                              X