Thông báo

Collapse
No announcement yet.

Đố vui về PIC, các câu đố cực vui và cực hay... hehe..

Collapse
This topic is closed.
X
This is a sticky topic.
X
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Nguyên văn bởi thaithutrang
    Ý tưởng quét động của em có lẽ khác với anh F chứ:ví dụ
    Côt 1: 3 led sáng đồng thời--->P[0]=3;--->thời gian sáng là:PW[p[0]]=PW[3]=dài nhất
    Cột 2: 0 led sáng đồng thời---->P[1]=0;--->thời gian sáng là:PW[p[1]]=PW[0]=ngắn nhất. Nhưng chú ý nếu mọi led đều tăt thì thêm lệnh Off:LED+timer.
    Cột 3: 1 Led sáng đồng thời---->P[2]=1;--->thời gian sáng là:PW[p[2]]=PW[1]hơi ngắn
    Cột 4: tắt hết LED.------------->P[3]=2;;--->thời gian sáng là:PW[p[3]]=PW[2] khá dài
    Cho nên ứng với mỗi lần quét có một thời gian khác nhau.
    Bảng tra PW thì phải theo công thức tính thời gian và dòng điện+ chút thực tế.
    Như trường hợp trên, ví dụ cụ thể như sau:
    Vậy i=0--->thời gian sáng là 3ms(do 3 led cùng sáng).
    Vậy i=1--->thời gian sáng là 0.1ms(do tắt hết led)
    Vậy i=2--->thời gian sáng là 1ms(1 led sáng)
    Vậy i=3--->thời gian sáng là 2ms(2 led sáng)
    Đảm bảo các led sáng đều nhau.
    Tuy nhiên bị trường hợp(nếu ai tinh mắt sẽ biết):
    Hiện tại:nếu 4 led sáng---> thì 4led đó sáng đều nhau.
    Một lúc sau toàn bộ chỉ 2 led sáng(do người sử dụng muốn thay đôi chẳng hạn)---> thì 2led đó sáng đều nhau nhưng lại sáng mờ hơn lần trước(4 led).
    Vậy nên hay ko?
    Như anh đã nói rất cụ thể, cách hiểu của em hơi khác cách hiểu của anh về mặt lập trình thôi. Nhưng bản chất như nhau. Có nghĩa nếu em muốn cho sáng đều hết, thì mẫu số chung nhỏ nhất của nó cũng là 12. Anh cũng có viết đó, nếu mỗi lần sáng đều nhau thì cách của anh AFH chỉ cần thay đổi lại một chút là tốt hơn cách của em, vì em nghĩ thử thế này:

    LED 11, 12, 13 cùng sáng, thì chân 1 phải cho dòng gấp 3 lần. Nếu chân khác chỉ có 1 LED sáng, thì phải cho dòng bằng 1/3. Và cứ như vậy, thì kết quả sẽ trở lại cách đầu tiên của em với 1/12 chu kỳ cho 1 led sáng. Tuy nhiên, nếu thêm phần kiểm tra led nào sáng hay tắt như của em, kết hợp với cách viết của anh AFH thì kết quả tối ưu hơn.

    Dẫu sao, cách giải của em cũng đã có nhiều sáng tạo, và phần thưởng anh cũng đã dành cho em, vậy em có thể lựa chọn. Đây là phần thưởng động viên tinh thần làm việc và sáng tạo của em, vậy hãy nhận lấy như một lời chào mừng chính thức của anh.

    À, tin nhắn cá nhân là cái tin nhắn ở gần chỗ login, logout đó, em xem sát phía trên cung của trang web bên phải gần chỗ cái nick của em, có mục Tin nhắn.

    PS. Anh không phát thưởng cho anh qmk, vì bản chất cách giải của anh qmk là giống cách giải của anh AFH, nhưng AFH đưa ra câu trả lời trước. Anh chỉ chú trọng về ý tưởng, không chú trọng về việc viết chương trình như thế nào.

    Hồi trước, anh có thể ngồi đọc code MPASM từ việc deasm, nhưng giờ, thú thực là với anh, code la một cái gì đó rất code .

    Chúc vui.
    Falleaf
    Công ty TNHH Thương mại và Giao nhận R&P
    58/57 Nguyễn Minh Hoàng - Phường 12 - Quận Tân Bình - TP.HCM
    mail@falleaf.net - VP: (04) 36408561 - (08) 38119870

    Comment


    • Không tính khởi tạo timer với ngắt.
      Không quan tâm đên Temp (i) vì dùng cái mẹo AND 2.

      khởi tạo LED1, LED2 4 lệnh
      khởi tạo TRISB 2 lệnh
      Bỏ qua khởi tạo PORTB ở đây

      AND temp, 00000011

      temp = 0? (3 lệnh) XOR & BTFSS lệnh goto nữa
      W = 11110000
      ANDWF BYTE1, W
      PORTB = W (+6)

      temp = 1?
      W = 00001111
      AND BYTE1, W
      SWAPF W
      PORTB = W (+6)

      ....

      Tăng temp

      Tổng cộng mỗi đoạn 6 lệnh: Tổng cộng là ba mươi mấy lệnh đấy.

      Vài lệnh asm là gì nhưng bác bảo mười mấy lệnh chắc như đinh đóng cột làm đau hết cả đầu nghĩ không ra. Ra đề thế có mà chít. Lần sau ai ra đề thì giải trước vào một file sau đó zip có pass lại đến khi mở để thì cấp password thôi
      Vẫn biết mỗi lần xa là một lần về lại...

      Comment


      • He he cách làm của tôi khác hẳn AFH. Nó không phù hợp lắm với giả thiết đề thi đưa ra nhưng phù hợp với thực tế.
        Vẫn biết mỗi lần xa là một lần về lại...

        Comment


        • MH có 1 câu đố tham gia nhé.
          Có 100 PIC 16F628. Tạo ra sản phẩm có giá 5000 USD. Thuật toán gì cũng được
          Nhà sản xuất chuyên nghiệp các sản phẩm OEM cho gia dụng và công nghiệp.

          Biến tần
          Máy giặt
          Lò vi sóng
          Bếp từ.
          Tủ lạnh.
          Điều hòa

          Comment


          • hehe dùng 100 con đấy giải bài toán fermat đi hoặc có vài bài toán đang treo dải cà triệu usd đấy.
            Vẫn biết mỗi lần xa là một lần về lại...

            Comment


            • Đây là bài giải cuối cùng của AFH. Có thêm chức năng quét theo thời gian của bạn thaithutrang (xi gai).

              /* Số chân vào ra được định nghĩa là N
              Số LED điều khiển là N*(N-1) LED
              Gọi LED_display là biến biến biểu diễn trạng thái các LED.
              Vị trí các bit tương ứng các LED sẽ được bố trí như sau:
              Chia các LED ra thành N nhóm và nhét vào nhóm dó 1 con số 0
              Số 0 được nhét phía bên phải của nhóm bên phải
              Ở nhóm tiếp theo thì số 0 dịch từng bit sang bên trái
              ví dụ với LED=12 ta có LED_display = 0xxx x0xx xx0x xxx0
              trong dó x=1 nếu LED sáng, x=0 nếu LED tắt.
              */
              #define N 4
              unsigned int LED_display;
              unsigned char j=0;
              const unsigned int Timer_Period[N]={1,1,2,3} // lấy ví dụ là 1,1,2,3 cho gọn
              int main (void)
              {
              // thiet lap Timer o day
              // cap nhat gia tri cho LED_display o day
              return 0;
              }
              void Timer_Interrupt(void) // lấy tạm cái tên là Timer_Interrupt cho gọn
              {
              static unsigned char i=(N-1); // đặt i=(N-1) để cập nhật temp=LED_display
              static unsigned char mask;
              static unsigned int temp;
              unsigned char k;
              // xóa cờ ngắt tại đây
              if(++i==N) // nếu đã quét xong một vòng
              {temp=LED_display; // cập nhật lại giá trị vào biến nháp
              i=0; // xóa i
              mask=0x01;} // reset lại biến mask
              check_LED=temp; // lay bien nhap de tinh thoi gian quet LED
              for(k=0,k<N,k++) // cho mot vong lap N lan
              if(check_LED%2==1){ // neu =1 co nghia la den nay sang
              j++; // tang thoi gian len 1
              check_LED>>=1;}
              PR1=Timer_Period[j]; // cap nhat gia tri thoi gian hien thi LED
              j=0; // sau khi thiet lap Timer roi thi phai reset bien nay
              PORTA=temp; // dua gia tri ra LED
              TRISA=(~temp)^mask; // mo cong tuong ung de den sang
              temp>>=N; // dich di N bit
              mask<<=1; // chuyen sang chan I/O ke tiep.
              } // ket thuc ham ngat
              AFH
              Last edited by AFH; 08-01-2006, 20:15.

              Comment


              • Nguyên văn bởi thaithutrang
                Vậy anh qmk có được giải PIC nhỉ, một con F88???
                À, thôi em lấy ko đâu, anh dành cho cuộc thi lần sau.Qua đây, em cũng học được nhiều thứ, thanks all.
                Gửi em Trang:
                Trang thân mến, Anh công nhận em rất thông minh, và thấy em có nhiệt huyết với điện tử nên anh kô muốn em sớm kiêu căng vì tài năng của mình.
                Vì vậy mà anh so tài với em chứ thực ra việc anh so tài với em là kô công bằng, vì anh hơn em tới 4 tuổi mà, kinh nghiệm làm việc với VĐK của anh cũng kô ít. Do đó, kô cân sức. Nhưng nếu anh bằng tuổi em bây giờ thì anh thua chắc rồi. Tóm lại, anh chỉ muốn em hãy phát triển những kỹ năng lập trình thật bài bản, nghĩa là phải nắm rõ "cái gì nảy sinh cái gì, dẫn đến ưu điểm gì hay hậu quả gì". Anh hy vọng em sớm hiểu ý định của anh khi tham gia thi đấu với em. Chứ anh cũng kô ham giành PIC (hơ hơ.... nhưng nếu bác Falleaf đổi cho em sang con dsPIC30F6010 thì em kô từ chối, tại em đang cần con này để mổ sẻ)
                Còn về anh qmk, em đừng lo là kô công bằng với anh ấy, anh ấy vào topic này là để vui chơi âu cũng là rèn luyện kiến thức, chứ anh ấy kô cần giải thưởng, cái anh ấy cần là sự đúng đắn trong suy nghĩ và thực hành.
                Em chưa trả lời câu hỏi ở tin nhắn PM của anh đâu nhé.

                Gửi anh Falleaf:
                Bạn ấy nói là sẽ lấy đấy anh F ạ, nhưng bạn ấy bảo là cuộc thi sau bạn ấy lấy cơ đấy, vậy anh cứ chuyển đến cho anh BinhAnh đi, anh BinhAnh sẽ phát cho người thắng cuộc sau này.

                Gửi bác qmk:
                Bác ở HN hay HCM, sắp tới em định chơi mạng Profibus-DP, nếu bác ở HN thì ta có thể trao đổi và cùng nghiên cứu. Còn nếu ở ngoài HN thì ta liên lạc qua email. (hoặc thông qua topic diễn đàn)

                AFH

                Comment


                • Gửi em Trang:
                  Trang thân mến, Anh công nhận em rất thông minh, và thấy em có nhiệt huyết với điện tử nên anh kô muốn em sớm kiêu căng vì tài năng của mình.
                  Vì vậy mà anh so tài với em chứ thực ra việc anh so tài với em là kô công bằng, vì anh hơn em tới 4 tuổi mà, kinh nghiệm làm việc với VĐK của anh cũng kô ít. Do đó, kô cân sức. Nhưng nếu anh bằng tuổi em bây giờ thì anh thua chắc rồi. Tóm lại, anh chỉ muốn em hãy phát triển những kỹ năng lập trình thật bài bản, nghĩa là phải nắm rõ "cái gì nảy sinh cái gì, dẫn đến ưu điểm gì hay hậu quả gì". Anh hy vọng em sớm hiểu ý định của anh khi tham gia thi đấu với em. Chứ anh cũng kô ham giành PIC (hơ hơ.... nhưng nếu bác Falleaf đổi cho em sang con dsPIC30F6010 thì em kô từ chối, tại em đang cần con này để mổ sẻ)
                  Ko sao anh ạ, ko sợ bất công bằng đâu. Nếu đánh cờ vua với các cao thủ thì mình mới khá được...hi hi...

                  Gửi bác qmk:
                  Bác ở HN hay HCM, sắp tới em định chơi mạng Profibus-DP, nếu bác ở HN thì ta có thể trao đổi và cùng nghiên cứu. Còn nếu ở ngoài HN thì ta liên lạc qua email. (hoặc thông qua topic diễn đàn)
                  Chắc định đẩy em ra rìa rồi đây...em cũng muốn thử cả Profibus tự tạo lắm.

                  Comment


                  • Nguyên văn bởi thaithutrang
                    Chắc định đẩy em ra rìa rồi đây...em cũng muốn thử cả Profibus tự tạo lắm.
                    Vậy mời em tham gia, nhưng anh nhớ là em đang làm mạng CAN mà? Cứ làm xong cái đó đi. Anh cũng chưa làm Profibus ngay đâu, khi nào làm anh sẽ liên lac với em, okie chưa? Nếu có thể thì cho anh số điện thoại liên lạc, (gửi qua PM cũng được)

                    AFH

                    Comment


                    • Chat chit chơi thì Ok nhưng đã làm thì phải có kế hoạch đàng hoàng.
                      Có thời điểm bắt đầu và kết thúc. Có tiêu chuẩn làm việc. Vì đây là dự án tự nguyện nên có những đặc điểm riêng.
                      Và nhất thiết là mã nguồn mở...
                      Bạn có thể quản lý project này không. Nếu không để tôi giúp cho.
                      Vẫn biết mỗi lần xa là một lần về lại...

                      Comment


                      • Vậy trước hết là chát chít đi. Tại em cũng chưa biết ngôn từ "mã nguồn mở" anh dùng là thế nào? Có phải ý anh là cùng xây dựng thì 2 người cùng biết mã nguồn của nhau? Hay ý anh là mã nguồn mở như trên thế giới người ta vẫn dùng nghĩa là công bố công khai cho mọi người dùng chung?
                        Theo em thì nghiên cứu trước đã, hiểu kỹ một chút rồi cùng làm, hoặc làm riêng nhưng có trao đổi tài liệu. Sau đó cùng thi đua làm theo những chuẩn mực quốc tế. Em nói vậy liệu có mơ hão quá không nhỉ?
                        AFH

                        Comment


                        • Mã nguồn mở là theo GNU tinh thần gồm 2 ý:
                          - Phần mềm là tự do (free) bất cứ ai có thể tiếp xúc với phần mềm mã nguồn mở đều phải được cung cấp cách tiếp cận mã và họ có quyền tự do. Họ có quyền tự do sửa đổi sử dụng và phân phối lại, kể cả trong thương mại với điều kiện khách hàng của họ cũng được phép sử dụng phần mềm và mã nguồn một cách tự do.
                          - Bản quyền của phần mềm vẫn thuộc về tác giả hoặc các tác giả.
                          Vẫn biết mỗi lần xa là một lần về lại...

                          Comment


                          • AFH liên hệ với F để cung cấp địa chỉ cụ thể, F sẽ yêu cầu kiểm tra lại xem còn loại đó không và sẽ gửi thằng AFH để làm thí nghiệm.

                            falleaf.pic@gmail.com

                            Quà của bé Trang, anh treo lại, đợi lần sau.

                            Đợt này hơi bận, đợt sau sẽ đưa ra mấy bài giải thuật nhỏ nhỏ để mọi người làm chơi cho vui. Nếu có câu đố nào hay, F sẽ tiếp tục đưa ra giải thưởng để kích thích tinh thần mọi người tham gia.

                            Lưu ý, F chấm giải dựa trên ý tưởng, chứ không chú trọng lập trình, nhưng tất nhiên, lập trình phải đúng thì mới dễ kiểm tra, không bắt lỗi quá chi tiết, chỉ bắt những lỗi bản chất thuật toán thôi.

                            Chúc vui.
                            Falleaf
                            Công ty TNHH Thương mại và Giao nhận R&P
                            58/57 Nguyễn Minh Hoàng - Phường 12 - Quận Tân Bình - TP.HCM
                            mail@falleaf.net - VP: (04) 36408561 - (08) 38119870

                            Comment


                            • Bé Trang,

                              À quên, hôm nay anh Bình Anh nhắc anh mới nhớ. Anh quên mất là em đang muốn học CAN, vì nếu cho một con chip đắt tiền thì chắc em sẽ ngại, nên anh quyết định đổi cho em 2 con MCP2551 để em học CAN? Em thấy thế nào?

                              Hoặc có thể treo 2 con MCP lại? hoặc có thể nhận ngay? Tùy ý em.

                              Anh Xuân Sơn đã liên hệ với anh rồi, và anh đang nhắn anh Đăng gửi quà thưởng cho anh Sơn. AFH.

                              Chúc vui.
                              Falleaf
                              Công ty TNHH Thương mại và Giao nhận R&P
                              58/57 Nguyễn Minh Hoàng - Phường 12 - Quận Tân Bình - TP.HCM
                              mail@falleaf.net - VP: (04) 36408561 - (08) 38119870

                              Comment


                              • ê ê ........ em gái xấu xí ơi, vô mà nhận quà luôn đi, đừng có từ chối làm gì. Cứ lấy chíp về mà học CAN đi này. đừng để lỡ.
                                Anh cũng đang "xin xỏ" anh Falleaf con dsPIC30F6010 (hê hê... con này hàng xịn đắt phết, bác Falleaf lõm nặng rồi)
                                AFH

                                Comment

                                Về tác giả

                                Collapse

                                CHIBANG Tìm hiểu thêm về CHIBANG

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X