Thông báo

Collapse
No announcement yet.

Hi-Tech PIC và CCS C

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Nguyên văn bởi duong_act Xem bài viết
    Nói thật bản bờ rô này mình đi ăn trộm đấy .
    Nghe đâu hitech C được microchip mua lại và cho ra đời thằng xc này. Thấy trước giờ thiên hạ ca ngợi hitech C về mặt tối ưu code và còn ca ngợi hết lời xc nên cố sống cố chết kéo về xem sao và nếm trải hết thất vọng này đến thất vọng khác. Thôi thì trước giờ vẫn biết nó chắc chả hỗ trợ cái thư viện nào nên chú trọng vào test tối ưu của nó ( có cài cả Mikro và CCS để test cho khách quan ). Viết một chương trình ngắn thì đúng là nó tối ưu hơn thật. Mạnh tay hơn viết 1 chương trình tầm 2KB thì thôi xong : Mã nó biên dịch ra luôn nặng gấp rưỡi 2 thằng còn lại ( Mikro và CCS ngang nhau ). DisAssembly ra thì thấy mã nó biên dịch rất cứng nhắc, chẳng có gì đặc sắc và "ngu" hơn 2 thằng kia. Đấy là đã dùng bản Pro tối ưu hơn Free 40 %. Không biết dùng bản Free thì thế nào @@. Nên với mình giờ chỉ có 2 ứng cử viên là CCS và MikroC-nhanh và khá tối ưu, muốn tối ưu thêm thì ASM mà giã
    ước ao 1 lần được thực hiện bản xc pro. cho thỏa lòng cày cục bao đêm tìm thuốc mà ko được. vì giờ đã chuyển sang Mikro rùi

    Comment


    • Nguyên văn bởi octo Xem bài viết
      ước ao 1 lần được thực hiện bản xc pro. cho thỏa lòng cày cục bao đêm tìm thuốc mà ko được. vì giờ đã chuyển sang Mikro rùi
      Một đoạn chương trình : x là biến 8bit, y là biến 1 bit
      Code:
         x++;
         x--;
         if(x==3)
         {
         }
         for(x=0;x<100;x++)
         {
         }
         while(x==7)
         {
         }
         RB0=y;
      Kết quả với xc8 Pro:
      Code:
      18:                x++;
      07D5  3001     MOVLW 0x1
      07D6  00F2     MOVWF 0x72
      07D7  0872     MOVF 0x72, W
      07D8  07F1     ADDWF x, F
      19:                x--;
      07D9  3001     MOVLW 0x1
      07DA  02F1     SUBWF x, F
      20:                if(x==3)
      21:                {
      22:                }
      23:                for(x=0;x<100;x++)
      07DB  01F1     CLRF x
      07DC  3064     MOVLW 0x64
      07DD  0271     SUBWF x, W
      07DE  1803     BTFSC STATUS, 0x0
      07DF  2FE8     GOTO 0x7E8
      07E0  3001     MOVLW 0x1
      07E1  00F2     MOVWF 0x72
      07E2  0872     MOVF 0x72, W
      07E3  07F1     ADDWF x, F
      07E4  3064     MOVLW 0x64
      07E5  0271     SUBWF x, W
      07E6  1C03     BTFSS STATUS, 0x0
      07E7  2FE0     GOTO 0x7E0
      24:                {
      25:                }
      26:                while(x==7)
      07E8  0871     MOVF x, W
      07E9  3A07     XORLW 0x7
      07EA  1903     BTFSC STATUS, 0x2
      07EB  2FE8     GOTO 0x7E8
      27:                {
      28:                }
      29:                PORTBbits.RB0=y;
      07EC  3000     MOVLW 0x0
      07ED  1870     BTFSC y, 0x0
      07EE  3001     MOVLW 0x1
      07EF  00F2     MOVWF 0x72
      07F0  1283     BCF STATUS, 0x5
      07F1  1303     BCF STATUS, 0x6
      07F2  0806     MOVF PORTB, W
      07F3  0672     XORWF 0x72, W
      07F4  39FE     ANDLW 0xFE
      07F5  0672     XORWF 0x72, W
      07F6  0086     MOVWF PORTB
      và CCS
      Code:
      ....................    x++; 
      0017:  BCF    03.6
      0018:  INCF   20,F
      ....................    x--; 
      0019:  DECF   20,F
      ....................    if(x==3) 
      001A:  MOVF   20,W
      001B:  SUBLW  03
      001C:  BTFSS  03.2
      001D:  GOTO   01E
      ....................    { 
      ....................    } 
      ....................    for(x=0;x<100;x++) 
      001E:  CLRF   20
      001F:  MOVF   20,W
      0020:  SUBLW  63
      0021:  BTFSS  03.0
      0022:  GOTO   025
      ....................    { 
      0023:  INCF   20,F
      0024:  GOTO   01F
      ....................    } 
      ....................    while(x==7) 
      0025:  MOVF   20,W
      0026:  SUBLW  07
      0027:  BTFSC  03.2
      ....................    { 
      0028:  GOTO   025
      ....................    } 
      ....................    RB0=y; 
      0029:  BTFSS  21.0
      002A:  BCF    06.0
      002B:  BTFSC  21.0
      002C:  BSF    06.0
      Đây là linh đơn cho bản Pro
      Attached Files

      Comment


      • bác duong_act ơi,cho thuốc rùi thì cách sử dụng thuốc như nào nhỉ?thiếu hướng dẫn sử dụng trước khi dùng

        Comment


        • Chép đè file gốc ở xc/bin . Chắc thế, nhưng vẫn đang dùng free . xem thế nào đã, vẫn chưa có nhu cần cần dùng xc

          Comment


          • vừa thử cái này xong, build thử cái đồ án 2, cũng chả thấy tối ưu được bao nhiêu giữa bản free và pro

            Comment


            • Thông thường thì có thể nó tối ưu theo 2 hướng giữa tốc độ và độ lợi về ram và code. Với chương trình nhỏ thì cần tốc độ càng nhanh càng tốt, còn % ram, code chẳng có hữu ích gì. Nhưng nếu chương trình lớn mà cần ram, code thì 98% với lại over lại là vấn đề lớn. Việc so sánh tối ưu tố độ rất khó kiểm tra, nhưng dễ kiểm tra tối ưu ram với code. Một compiler build 50% ram/code với một compiler khác build 40% ram/code thì theo mình không thể hiện được cái nào tối ưu hơn. Vì có thể cái 50% kia chạy nhanh hơn. nhưng một cái build 90% với cái không build được (over) thì rõ ràng cái nào tối ưu hơn. Theo mình thì cứ viết code cho đến khi 1 cái over ram/code và cái khác thì build được. Lúc đó mới biết cái nào tối ưu hơn. Hoặc phải đo được tốc độ chạy của 2 code khi đã build

              Comment


              • với mcu thì số chu trình , ram cố định viết đến 99% ram, 100% code cũng không hề dễ bị tràn hay treo vì làm gì có điều kiện phát sinh thêm nữa.
                Tuy nhiên cẩn thận thì cũng chẳng ai viết đến hết bộ nhớ ! Cảm thấy thiếu rom , ram là phải nâng cấp chip ngay !
                Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                Comment


                • Nguyên văn bởi queduong Xem bài viết
                  với mcu thì số chu trình , ram cố định viết đến 99% ram, 100% code cũng không hề dễ bị tràn hay treo vì làm gì có điều kiện phát sinh thêm nữa.
                  Tuy nhiên cẩn thận thì cũng chẳng ai viết đến hết bộ nhớ ! Cảm thấy thiếu rom , ram là phải nâng cấp chip ngay !
                  Các trình dịch tốt hay không tốt là ở chỗ này anh Dương ạ, (khi đã tối ưu hết cỡ) Với trình dịch tốt thì không cần nâng cấp chip, với trình dịch không tốt thì phải nâng cấp chip ==> phát sinh chi phí

                  Comment


                  • Nguyên văn bởi vuhapassall Xem bài viết
                    Các trình dịch tốt hay không tốt là ở chỗ này anh Dương ạ, (khi đã tối ưu hết cỡ) Với trình dịch tốt thì không cần nâng cấp chip, với trình dịch không tốt thì phải nâng cấp chip ==> phát sinh chi phí
                    xem mã ASM sinh ra là có thể biết được có tối ưu hay không
                    Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                    Comment


                    • Nguyên văn bởi vuhapassall Xem bài viết
                      Thông thường thì có thể nó tối ưu theo 2 hướng giữa tốc độ và độ lợi về ram và code. Với chương trình nhỏ thì cần tốc độ càng nhanh càng tốt, còn % ram, code chẳng có hữu ích gì. Nhưng nếu chương trình lớn mà cần ram, code thì 98% với lại over lại là vấn đề lớn. Việc so sánh tối ưu tố độ rất khó kiểm tra, nhưng dễ kiểm tra tối ưu ram với code. Một compiler build 50% ram/code với một compiler khác build 40% ram/code thì theo mình không thể hiện được cái nào tối ưu hơn. Vì có thể cái 50% kia chạy nhanh hơn. nhưng một cái build 90% với cái không build được (over) thì rõ ràng cái nào tối ưu hơn. Theo mình thì cứ viết code cho đến khi 1 cái over ram/code và cái khác thì build được. Lúc đó mới biết cái nào tối ưu hơn. Hoặc phải đo được tốc độ chạy của 2 code khi đã build
                      Theo mình biết : tốc độ của 1 chương trình phụ thuộc vào số lệnh ASM tạo nên chương trình đấy. Một chương trình có số lệnh ASM lớn không bao giờ là chạy nhanh hơn chương trình có số lệnh ASM nhỏ vì đây là RISC ( mỗi lệnh chỉ thực hiện trong 1 chu kì máy nên tốc độ gần như tỉ lệ thuận với số lệnh ASM). Một compiler cho mã ASM không tối ưu sẽ cho tốc độ chậm và đương nhiên sẽ full ROM,RAM trước các trình compiler khác.

                      Comment


                      • Đúng là 1 lệnh ASM là mất 1 chu kỳ máy. Nhưng số lệnh ASM chưa đã quyết định được tốc độ xử lý nhanh hay chậm...
                        Last edited by quanghuy_125; 23-12-2013, 15:12.
                        ĐT : 01676455880

                        Comment


                        • Chính xác, số lệnh ASM ít hơn không có nghĩa là chạy nhanh hơn. Để hoàn thành 1 việc, không có nghĩa là số lệnh ASM ít thì ít chu kỳ máy hơn. Ví dụ như giải thuật sắp xếp thì biết. Hoặc đệ quy với không đệ quy, dùng vòng lặp và điều kiện vòng lặp, dùng các toán tử bit so với thực hiện phép toán. 1 vòng lặp vài lệnh ASM nhưng chạy cả ngàn chu kỳ máy, nhưng nếu khử vòng lặp đc bằng chục lệnh ASM thì chỉ cần hơn chục vòng máy. Đôi khi , số lệnh ASM nhiều hơn (ứng với code lớn hơn) nhưng chạy nhanh hơn.

                          Comment


                          • các anh cho em hỏi muốn nạp con PIC16f628A dùng mạch nạp gì vậy có phải pickit ko ? bao nhiêu $ ?

                            Comment


                            • Nguyên văn bởi trongbang3 Xem bài viết
                              các anh cho em hỏi muốn nạp con PIC16f628A dùng mạch nạp gì vậy có phải pickit ko ? bao nhiêu $ ?
                              Pickit2 se với BurnE nạp tốt, giá ~ 200k

                              Comment


                              • y của vuhapassall
                                là sẽ tốt hơn Burn E à. sao trên mạng rao với nghe tụi bạn nói 250K.vuhapassall mua ở đâu chỉ với HCM

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X