Thông báo

Collapse
No announcement yet.

Cùng Duyphi bắt đầu học lập trình AVR

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

  • #91
    Nguyên văn bởi mrcuongcon Xem bài viết
    Oke cảm ơn bác nhiều, em đã hiểu.
    Vẫn đề chính trong bài lập trình của em là bị trùng biến. Ổn rồi các bác ạ.
    Nhưng em lại không hiểu tại sao khi gán bảng DPTR thì :
    LDI Zh,high(TEXT*2)
    LDI ZL, low(TEXT*2)
    Tại sao lại là (*2)? Nhân đôi bảng TEXT? X,Y,Z là các thanh ghi 16 bit, nó có gì khác so với con trỏ DPTR của 8051 (cũng là 16 bit)?
    Vấn đề của bạn là ở đây. Bạn có thảo luận rồi mà không nhớ à :
    http://dientuvietnam.net/forums/showthread.php?t=8657

    Nguyên văn bởi dt_love Xem bài viết
    hic, nghe mấy bác nói về biến con trỏ Z mà em thấy buồn.
    bộ nhớ của AVR phân ra bao gồm bộ nhớ data(ram) epprom và bộ nhớ chương trình (program).
    để đọc được dữ liệu từ bộ nhớ chương trình thì có lệnh LPM. và nó có 3 cách sử dụng, các bạn có thể đọc rõ hơn trong phần help của AVRstudio
    ở đây bạn cần load dữ liệu từ một khung nên bạn sử dụng lệnh như thế này:
    LPM Rd,Z+
    dữ liệu sẽ được load vào Rd và biến con trỏ sẽ tự động được tăng lên.
    vòng lặp của bạn ngocpro tui sửa tí nhé:
    LDI ZH,HIGH(MYDATA*2)
    LDI ZL,LOW (MYDATA*2)
    .
    .
    .
    .
    .
    LOOP1:

    LPM TEMP2,Z+
    OUT PORTB,TEMP2

    LDI DK,0X00
    OUT PORTD,DK

    RCALL DELAY

    RJMP LOOP1
    mục đích ở đoạn mã này của bạn là xuất dữ liệu ra portb phải không
    LDI ZH,HIGH(MYDATA*2)
    LDI ZL,LOW (MYDATA*2)
    hai lệnh này load địa chỉ của dữ liệu về Z. tại mỗi địa chỉ của bộ nhớ chương trình thì có 16 bit, mà trong khi đó lệnh LPM sẽ lấy dữ liệu về Rd:chỉ có 8 bit, vậy mỗi lần load dữ liệu nó chỉ lấy được 8 bit. vì vậy, ở biến Z sẽ sử dụng 15 bỉt đầu để trỏ tới địa chỉ, và bít 0 để trỏ tới byte cao hoặc byte thấp trong địa chỉ đó.
    đây là lí do tại sao lại có thêm *2 trong dòng lệnh, kí hiệu này thay cho lệnh nhân 2 và cũng là lệnh dịch dữ liệu sang trái một bít.
    LPM TEMP2,Z+
    dòng lệnh này thì load dữ liệu vào temp2 và sau đó tăng Z lên 1, nghĩa là sẽ tuần tự đọc byte thấp, byte cao rồi tăng địa chỉ lên.. byte thấp, byte cao...
    tui chỉ biết đến vậy có ji mọi người chỉ giáo thêm...

    Comment


    • #92
      Trong CODEvision AVr hình như kô có hàm trả về GT bit thì phải......!

      Comment


      • #93
        Hãy làm cho cái luồng này sống lại đi bác Phi ơi...! Còn không thì...các cao thủ tiếp bước đi........! đây là 1 topic cực hay.
        Có ai nói kĩ hơn 1 tí về KT bảng bằng ASM ko?
        Theo em.thì topic nên đi về phần ASM hơn là C Bởi vì đây là ngôn ngữ hợp lí nhất cho người mới bắt đầu đến với AVR.....

        Comment


        • #94
          bac86_bk3i: bác cho ví dụ cụ thể bác cần làm để anh em nghiên cứu...
          bạn có thể thay đổi chút bằng cách dùng phép toán khác, VD
          bit a;
          unsigned char b;
          a=b>0;

          khi dó a = 0 nếu b=0;
          a=1 nếu b=1,2,3...
          Last edited by AVR_VN; 15-10-2008, 23:38.
          *** Thành viên không biết gì về điện ***

          Comment


          • #95
            thay vì : bit get_data(unsigned char *buff) ...
            bạn thử đổi thành : char get_data(unsigned char *buff);
            sau đó khi sử dụng hàm, thay vì: bit x;
            x=get_data(...);
            thì đổi thành: bit x;
            x=get_data(...)>0;
            *** Thành viên không biết gì về điện ***

            Comment


            • #96
              ok thanks you bac AVR_VN nha

              Comment


              • #97
                Nguyên văn bởi HiMas88 Xem bài viết
                Hãy làm cho cái luồng này sống lại đi bác Phi ơi...! Còn không thì...các cao thủ tiếp bước đi........! đây là 1 topic cực hay.
                Có ai nói kĩ hơn 1 tí về KT bảng bằng ASM ko?
                Theo em.thì topic nên đi về phần ASM hơn là C Bởi vì đây là ngôn ngữ hợp lí nhất cho người mới bắt đầu đến với AVR.....
                theo tớ thì ASM mình có thể tự học được để biết cấu trúc của AVR nhưng nếu sử dụng về sau thì ít khi viết bằng ASM lắm, chính vì vậy khi bạn đã lắm chắc cấu trúc cũng như cách thanh ghi của AVR thì bạn nên học cách viết bằng c thì sẽ hậu quả hơn

                Comment


                • #98
                  Mình thấy viết bằng asm cũng hay lắm chứ...với lại topic này chỉ nên làm bằgn asm thôi

                  Comment


                  • #99
                    ah các bác cho em hỏi hàm khi thay đổi giá trị của thạch anh thì hàm delay viết trong codevision có thay đổi ko?

                    Comment


                    • Cái này bạn khỏi lo đi.
                      Hàm Delay do trình biên dịch hỗ trợ . Vậy nên khi bạn sử dụng thạch anh loại nào 4Mhz, 8Mhz thì nó cũng vậy thôi. Tức là nếu bạn dùng :

                      delay_ms(1000);

                      thì nó đều có nghĩa là 1s khi sử lý .................

                      Comment


                      • tôi dùng thạch anh 4MHz và chọn
                        TCCR0=0x04; //chon tan so cua Timer0 = Tclock/256T
                        thì khi T0 = 73 thì có phải sẽ được giá trị thời gian tương ứng là 4672 không?

                        Comment


                        • Nguyên văn bởi bac86_bk3i Xem bài viết
                          tôi dùng thạch anh 4MHz và chọn
                          TCCR0=0x04; //chon tan so cua Timer0 = Tclock/256T
                          thì khi T0 = 73 thì có phải sẽ được giá trị thời gian tương ứng là 4672 không?
                          cần xem cả đoạn loop delay gồm các lệnh nào bao gồm khi đến timer, mỗi lệnh cũng 1-2 clock. /256 là 256 xung thạch anh timer nhảy 1. từ đó tính chính xác. cũng cần kích ngắt toàn cục trước để timer phục hồi.
                          có thể dùng vài thanh ghi giảm dần dễ xem hơn và tính sao cho chỉ cần nhập số giây vào thanh ghi cuối cùng thì kết quả sẽ ra số giây tương ứng cho đơn giản.

                          Comment


                          • Bạn MicroDuyPhi thân mên!
                            Mình đang làm về đề tài về AVR
                            cụ thể là thiết kế cân điện tử hiển thị trên LED và truyền thông với PC
                            Mình đang băn khoăn chưa có đường lối đi đúng đắn.
                            Hy vọng bạn bớt chút thời gian chỉ bảo mình để hoàn thành tốt đồ án này.
                            mail của mình
                            toiyeuvietnam8x@gmail.com
                            Cảm ơn bạn nhiều!

                            Comment


                            • Nguyên văn bởi toiyeutdh8x Xem bài viết
                              Bạn MicroDuyPhi thân mên!
                              Mình đang làm về đề tài về AVR
                              cụ thể là thiết kế cân điện tử hiển thị trên LED và truyền thông với PC
                              Mình đang băn khoăn chưa có đường lối đi đúng đắn.
                              Hy vọng bạn bớt chút thời gian chỉ bảo mình để hoàn thành tốt đồ án này.
                              mail của mình
                              toiyeuvietnam8x@gmail.com
                              Cảm ơn bạn nhiều!
                              Mình nghĩ bạn nên xác định thế nài :

                              1. đầu tiên làm sao cân đc (load sensor + adc của avr)
                              2. hiển thị ra led như thế nào (mình cũng hok hỉu sao hiển thi giá trị ra led đc hay ý bạn nói led 7 đoạn thì dùng mạch giải mã 7447 chẳng hạn)
                              3. truyền thông với máy tính dùng chuẩn gì (thường thì chỉ có rs232 )
                              Kit thí nghiệm 8051 + mạch nạp + cable + LCD16x2 + CD hướng dẫn, giá chỉ

                              Comment


                              • mình sẽ dùng LCD để hiển thị kết quả cân
                                tín hiệu ra từ loadcell là nhỏ vì vậy mình sẽ dùng bộ khuyếch đại tín hiệu rồi đưa vào AVR xử lý
                                mình cũng chỉ biết trên lý thuyết thôi còn thực tế chưa biết thế nào
                                Bộ khuyếch đại tín hiệu ra sao
                                xử lý nhiễu
                                thiết kế phần cứng ntn
                                mong anh em chỉ bảo

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X