Thông báo

Collapse
No announcement yet.

Lỗi gì đây với CCS

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

  • Lỗi gì đây với CCS

    mình viết là TRISB=0x00; PORTB=0xff; ccs báo lỗi
    còn viết set_tris_B(0x00); output_B(0xff); thì được
    Có ai hiểu tại sao kg?

  • #2
    Nguyên văn bởi Forca Xem bài viết
    mình viết là TRISB=0x00; PORTB=0xff; ccs báo lỗi
    còn viết set_tris_B(0x00); output_B(0xff); thì được
    Có ai hiểu tại sao kg?
    Viết TRISB=0x00; PORTB=0xff; thì không có trong cấu trúc của CCS
    Muốn viết vậy thì phải định nghĩa cho nó ví dụ

    #byte TRISA =0x85 // Địa chỉ set_tris_A 0x85
    #byte TRISB =0x86 // Địa chỉ set_tris_B 0x86
    #byte TRISC =0x87
    #byte TRISE =0x89

    #byte PORTA =0x05 // Địa chỉ 0x05 PORTA
    #byte PORTB =0x06
    #byte PORTC =0x07
    ĐT : 01676455880

    Comment


    • #3
      Cứ set_tris_x, output_x mà viết vừa đơn giản mà không lo sai. Viết trực tiếp tên thanh ghi cần phải định địa chỉ. Địa chỉ này mỗi dòng một khác, nếu định sai sẽ hoạt động sai. Tốt nhất là cứ cấu trúc có sẵn của CCS mà viết. Còn về chức năng, lợi hại thì là như nhau.

      Comment


      • #4
        Nguyên văn bởi duong_act Xem bài viết
        Cứ set_tris_x, output_x mà viết vừa đơn giản mà không lo sai. Viết trực tiếp tên thanh ghi cần phải định địa chỉ. Địa chỉ này mỗi dòng một khác, nếu định sai sẽ hoạt động sai. Tốt nhất là cứ cấu trúc có sẵn của CCS mà viết. Còn về chức năng, lợi hại thì là như nhau.
        Nếu để đánh giá về chức năng, lợi hại thì cũng có thể nó cũng khác nhau đấy bạn ạ.
        Giả sử nếu viết định nghĩa trước
        #byte TRISA =0x85
        #byte TRISB =0x86
        #byte TRISC =0x87
        #byte TRISE =0x89

        #byte PORTA =0x05
        #byte PORTB =0x06
        #byte PORTC =0x07

        #bit RA7 =0x05.7
        #bit RA6 =0x05.6
        #bit RA5 =0x05.5
        #bit RA4 =0x05.4
        #bit RA3 =0x05.3
        #bit RA2 =0x05.2
        #bit RA1 =0x05.1

        #bit RB7 =0x06.7
        #bit RB6 =0x06.6
        #bit RB5 =0x06.5
        #bit RB4 =0x06.4
        #bit RB3 =0x06.3
        #bit RB2 =0x06.2
        #bit RB1 =0x06.1
        #bit RB0 =0x06.0

        #bit RC7 =0x07.7
        #bit RC6 =0x07.6
        #bit RC5 =0x07.5
        #bit RC4 =0x07.4
        #bit RC3 =0x07.3
        #bit RC2 =0x07.2
        #bit RC1 =0x07.1
        #bit RC0 =0x07.0


        Thì khi viết TRISB=0x00; PORTB=0xff;
        hay RA1=1; RA1=0;

        RB3=1;RB3=0;
        RB4=1; RB4=0;
        RB5=1; RB5=0;
        RB6=1; RB6=0;
        RB7=1; RB7=0;
        Mỗi lệnh này dịch sang ASEM sẽ tiết kiệm 1 lệnh đấy và tuơng ứng là một ô nhớ he he
        Thử mà xem nha!!!!!
        ĐT : 01676455880

        Comment


        • #5
          Nguyên văn bởi quanghuy_125 Xem bài viết
          Nếu để đánh giá về chức năng, lợi hại thì cũng có thể nó cũng khác nhau đấy bạn ạ.
          Giả sử nếu viết định nghĩa trước
          #byte TRISA =0x85
          #byte TRISB =0x86
          #byte TRISC =0x87
          #byte TRISE =0x89

          #byte PORTA =0x05
          #byte PORTB =0x06
          #byte PORTC =0x07

          #bit RA7 =0x05.7
          #bit RA6 =0x05.6
          #bit RA5 =0x05.5
          #bit RA4 =0x05.4
          #bit RA3 =0x05.3
          #bit RA2 =0x05.2
          #bit RA1 =0x05.1

          #bit RB7 =0x06.7
          #bit RB6 =0x06.6
          #bit RB5 =0x06.5
          #bit RB4 =0x06.4
          #bit RB3 =0x06.3
          #bit RB2 =0x06.2
          #bit RB1 =0x06.1
          #bit RB0 =0x06.0

          #bit RC7 =0x07.7
          #bit RC6 =0x07.6
          #bit RC5 =0x07.5
          #bit RC4 =0x07.4
          #bit RC3 =0x07.3
          #bit RC2 =0x07.2
          #bit RC1 =0x07.1
          #bit RC0 =0x07.0


          Thì khi viết TRISB=0x00; PORTB=0xff;
          hay RA1=1; RA1=0;

          RB3=1;RB3=0;
          RB4=1; RB4=0;
          RB5=1; RB5=0;
          RB6=1; RB6=0;
          RB7=1; RB7=0;
          Mỗi lệnh này dịch sang ASEM sẽ tiết kiệm 1 lệnh đấy và tuơng ứng là một ô nhớ he he
          Thử mà xem nha!!!!!
          Chưa hiểu bạn định nói về chỗ nào.
          Đâu bạn ơi chỉ trên hình giúp mình lệnh nào ít hơn lệnh nào 1 lệnh ASM ấy nhỉ ?
          Attached Files
          Last edited by duong_act; 24-08-2013, 22:01.

          Comment


          • #6
            Nguyên văn bởi duong_act Xem bài viết
            Chưa hiểu bạn định nói về chỗ nào.
            Còn việc tiết kiệm 1 ô nhớ nó không phải điều cần thiết. Điều cần thiết cho người lập trình là thuật toán xử lý tốt, phối hợp ngoại vi chứ không phải viết sao cho nó tốn ít ROM. Hình bên dưới tôi đã test cho bạn. Trong project tôi đã cố tình định địa chỉ PORTB sai và kết quả chắc chắn sẽ sai nhưng sẽ thấy 2 lệnh dùng "output_x" và "PORTX" đều mất 1 lệnh ASM. Còn lệnh "set_tris_x" tốn hơn lệnh "TRISX=" 1 lệnh ASM lý do giá trị 0xFF được lưu khi dùng lệnh "set_tris_x" vẫn được dùng cho lệnh "PORTX=" nên nó không cần lệnh ASM "MOVLF FF". Do vậy dùng 2 cách đều tương đương nhau tuy nhiên rủi ro khi dùng cách định địa chỉ là cao hơn.
            Bạn test rồi à. Tiết kiệm một ô nhớ cũng rất quan trọng, tiết kiệm được một dòng ASEM "MOVLF FF". là không mất một lệnh sử lý.
            Nói như bạn thì bạn định nghĩa sai mà nó chẳng sai hài quá. Bạn không thấy là dịch file.HEX nó cũng ngọn hơn à.
            Còn chuyện ngoại vi thì phải hiểu cấu trúc Chip rùi hãng nói....
            Click image for larger version

Name:	VD2.jpg
Views:	1
Size:	47.9 KB
ID:	1384043
            Attached Files
            Last edited by quanghuy_125; 24-08-2013, 22:23.
            ĐT : 01676455880

            Comment


            • #7
              Nguyên văn bởi quanghuy_125 Xem bài viết
              Bạn test rồi à. Tiết kiệm một ô nhớ cũng rất quan trọng, tiết kiệm được một dòng ASEM "MOVLF FF". là không mất một lệnh sử lý.
              Nói như bạn thì bạn định nghĩa sai mà nó chẳng sai hài quá. Bạn không thấy là dịch file.HEX nó cũng ngọn hơn à.
              Còn chuyện ngoại vi thì phải hiểu cấu trúc Chip rùi hãng nói....
              Ở trên kia bạn có thấy nó có tiết kiệm được lệnh nào đâu ?
              Định nghĩa sai ở đây tôi nói đến việc định địa chỉ sai. Ví dụ PORTB là 0xF82 nhưng tôi đã cố tình đặt nó là 0xF81 tức là của PORTA. Khi Complie sẽ không báo lỗi nhưng khi chạy thì giá trị thay vì gán cho PORTB như trong lập trình thì nó sẽ được đưa ra ở PORTA ở trong thực tế.
              Nếu người ta quan tâm đến 1 lệnh xử lý thì có lẽ người ta đã nhắm đến ASM chứ không phải C. Việc hiểu cấu trúc không phải là quá cần thiết với người lập trình. Cái quan trọng là người ta làm được ra cái gì, hiệu năng làm việc của người lập trình là bao nhiêu.
              Ví dụ modul UART . Tôi chỉ cần biết là nó truyền dữ liệu nối tiếp qua RX,TX. Tôi đi tìm các hàm setup, các hàm điều khiển, ốp vào, vậy là xong. Chả rỗi hơi đi tìm hiểu thanh ghi, địa chỉ, cấu trúc làm cái gì cho mệt mà chả giải quyết được vấn đề gì.
              Nếu cứ đè nặng tư tưởng hiểu cấu trúc như làm với 8051 thì chắc chắn đó sẽ là những trở ngại khi tiếp cận với những loại chip nhiều thanh ghi, modul ngoại vi như các dòng PIC cao hơn, ARM....
              Last edited by duong_act; 24-08-2013, 22:28.

              Comment


              • #8
                Nguyên văn bởi duong_act Xem bài viết
                Ở trên kia bạn có thấy nó có tiết kiệm được lệnh nào đâu ?
                Định nghĩa sai ở đây tôi nói đến việc định địa chỉ sai. Ví dụ PORTB là 0xF82 nhưng tôi đã cố tình đặt nó là 0xF81 tức là của PORTA. Khi Complie sẽ không báo lỗi nhưng khi chạy thì giá trị thay vì gán cho PORTB như trong lập trình thì nó sẽ được đưa ra ở PORTA ở trong thực tế.
                Nếu người ta quan tâm đến 1 lệnh xử lý thì có lẽ người ta đã nhắm đến ASM chứ không phải C. Việc hiểu cấu trúc không phải là quá cần thiết với người lập trình. Cái quan trọng là người ta làm được ra cái gì, hiệu năng làm việc của người lập trình là bao nhiêu. Nếu cứ đè nặng tư tưởng hiểu cấu trúc như làm với 8051 thì chắc chắn đó sẽ là những trở ngại khi tiếp cận với những loại chip nhiều thanh ghi, modul ngoại vi như các dòng PIC cao hơn, ARM....
                Khi tôi càng lập trình nhiều thì tôi cũng càng muốn một chương trình được tối ưu hơn nữa.
                Tối ưu cả về cấu trúc chương trình, lệnh, Ram, Rom............................................... ..
                ĐT : 01676455880

                Comment


                • #9
                  Hiểu cấu trúc mà làm gì trong khi lập trình vẫn chẳng ra gì !

                  điều quan trọng nhất trong lập trình hiện đại là Ý TƯỞNG và biết cách khai thác sử dụng phần mềm .
                  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


                  • #10
                    Nguyên văn bởi quanghuy_125 Xem bài viết
                    Khi tôi càng lập trình nhiều thì tôi cũng càng muốn một chương trình được tối ưu hơn nữa.
                    Tối ưu cả về cấu trúc chương trình, lệnh, Ram, Rom............................................... ..
                    Có lẽ phương châm làm việc 2 ta nó khác nhau
                    Tôi thì muốn triển khai các thuật toán lớn, lớn nữa. RAM, ROM không quá quan trọng, quan trọng sản phải thật đa năng và thật "khôn".

                    Comment


                    • #11
                      Nguyên văn bởi duong_act Xem bài viết
                      Có lẽ phương châm làm việc 2 ta nó khác nhau
                      Tôi thì muốn triển khai các thuật toán lớn, lớn nữa. RAM, ROM không quá quan trọng, quan trọng sản phải thật đa năng và thật "khôn".
                      Ừ có con PIC nó khôn và cũng có con nó bình thường, nhưng người khôn thì biến con bình thường thành con gần khôn mà người ng ng thig biến con khôn thành con ng ng....
                      ĐT : 01676455880

                      Comment


                      • #12
                        Nguyên văn bởi duong_act Xem bài viết
                        Có lẽ phương châm làm việc 2 ta nó khác nhau
                        Tôi thì muốn triển khai các thuật toán lớn, lớn nữa. RAM, ROM không quá quan trọng, quan trọng sản phải thật đa năng và thật "khôn".
                        MCU đã qua rồi cái thời giá rom đi đôi với giá tiền ! không sợ thiếu ROM , Chẳng sợ thiếu RAM ... chỉ sợ sản phẩm bị ế !
                        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


                        • #13
                          Nguyên văn bởi queduong Xem bài viết
                          Hiểu cấu trúc mà làm gì trong khi lập trình vẫn chẳng ra gì !

                          điều quan trọng nhất trong lập trình hiện đại là Ý TƯỞNG và biết cách khai thác sử dụng phần mềm .
                          Làm gì hay không thì người lập trình mới biết phải không??
                          Hiện đại ý tưởng cũng đi từ tối ưu hóa mà ra, khai thác phần mềm phải hiểu nó....
                          ĐT : 01676455880

                          Comment


                          • #14
                            Nguyên văn bởi queduong Xem bài viết
                            Hiểu cấu trúc mà làm gì trong khi lập trình vẫn chẳng ra gì !

                            điều quan trọng nhất trong lập trình hiện đại là Ý TƯỞNG và biết cách khai thác sử dụng phần mềm .
                            Cùng quan điểm với bác

                            Comment


                            • #15
                              Nói chung là 2 trường phái này luôn là xung đột với nhau và Complier cũng theo 2 trường phái đó ví dụ MikroC, CCS và Hitech C. Bàn luận nhiều chỉ thành cãi vã. Ai khôn nhiều, ai khôn ít thì chính những sản phẩm, những project của họ là câu trả lời chân thực nhất.
                              PS ngoài luồng : Bây giờ MCU rẻ, RAM, ROM nhiều, có những con tới 256KB ROM và nhiều hơn nữa chỉ sợ không có sức mà viết thôi. Tối ưu hóa chương trình vẫn là vấn đề cần quan tâm nhưng chỉ là thứ 2,3... với tôi là vậy
                              Chúc vui .

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X