Thông báo

Collapse
No announcement yet.

Chủ đề -Nhờ các a.chị đi trước Giải đáp thắc mắc cho newbie khi đọc tài liệu k hiểu

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

  • #16
    $MOD52
    ORG 0
    LJMP MAIN
    ORG 000BH
    LJMP T0ISR
    ORG 0030H

    MAIN:
    CLR P1.0
    MOV TMOD,#01H
    MOV TH0,#03CH (cho time chay tu 15535)
    MOV TL0,#0AFH
    MOV R0,#20D
    SETB TR0
    MOV IE,#82H
    SJMP $

    T0ISR:
    DJNZ R0,CHUAB0
    CLR TR0
    MOV TH0,#03CH
    MOV TL0,#0AFH
    SETB TR0
    CPL P1.0
    MOV R0,#20D
    CHUAB0:
    RETI

    END
    đảo tín hiệu chân p1.0 f=0.5hz, khi chạy thấy led đấu vào p1.0 lóe sáng 1 cai rồi tắt, tại sao nó k chay tới lệnh cpl p1.0 ạ.
    Last edited by coofhair; 01-03-2010, 00:11.

    Comment


    • #17
      He he, giờ bạn xem lại thử chỗ Mov IE dòng thứ 9 có thiếu gì không ha?

      Còn đây mình gửi cho bạn xem thử code xuất xung dùng ngắt timer 0 có tần số 10KHz, bạn có thể so sánh thử xem.


      ;###############################
      ORG 00H
      LJMP MAIN
      ;################################
      ORG 0BH
      LOOP:
      CPL P1.0
      RETI
      ;#################################
      ORG 03H
      MAIN:
      MOV TMOD,#02H
      MOV TH0,#(-50)
      SETB TR0
      MOV IE,#82H
      SJMP $
      END
      Last edited by BabyKid; 28-02-2010, 19:40.
      "Cái quý nhất của con người ta là sự sống. Đời người chỉ sống có một lần.Phải sống sao cho khỏi xót xa ân hận..."
      Lê lết, lay lất sống qua ngày! >:)

      Comment


      • #18
        MOV IE,#82H
        Và thiếu tmod chế độ 16
        Cái này do em viết lại trên mobi nên thiếu thôi ạ, code trên là dùng r0 làm biến đếm số lần tràn, bộ đếm từ giá trị 15535 để sau 20 lần tràn sẽ là 1s. R0 làm biến đếm, và lệnh djne r0, t0 có vấn đề gì k ạ, sao nó k chạy tới được lệnh cpl p0.0
        Last edited by coofhair; 28-02-2010, 20:27.

        Comment


        • #19
          Là như vậy, mình chỉ biết có 2 lệnh so sánh và nhảy có cú pháp gần giống nhau ( và cũng dễ nhầm nhất) là DJNZ và CJNE, chứ mình chưa biết lệnh DJNE là gì cả nhưng theo cách bạn nói vậy thì có thể là bạn muốn xài lệnh DJNZ cho R0 đúng không nè

          Với lại 2 dòng nạp giá trị cho TH0, và TL0 không có # nữa. Có cách này bạn có thể điền trực tiếp giá trị bằng số luôn mà bạn không cần phải tính toán chuyển đổi cho tốn thời gian và cũng giúp người đọc dễ hiểu tí là:

          VD bạn muốn nạp cho timer0 16bit giá trị là 1500uS thì bạn có thể ghi là:
          MOV TH0,#HIGH(-1500) ;lấy 8bit cao của 1500
          MOV TL0,#LOW(-1500) ;lấy 8bit thấp của 1500

          Hoặc cho timer 8bit giá trị 150:
          MOV TL0,#(-150)

          Thân!
          Last edited by BabyKid; 28-02-2010, 22:28.
          "Cái quý nhất của con người ta là sự sống. Đời người chỉ sống có một lần.Phải sống sao cho khỏi xót xa ân hận..."
          Lê lết, lay lất sống qua ngày! >:)

          Comment


          • #20
            Ngồi gõ = cái mobi màn hình bé tẹo nên nhầm nh quá, em đã sửa lại rồi bác xem lại dùm em sai chỗ nào mà nó chẳng chịu nháy gì cả
            Em thấy chuyển đổi sang Hex rồi chuyển vào Thx dễ hiểu hơn là high(-tg) low(-tg) cái này lúc đầu em đọc mãi mới hiểu, nhìn thì nó đơn giản nhưng thật sự là khó hiểu hơn vì nó dùng đến số - số bù 2

            Comment


            • #21
              He he, thông báo với bạn là mình thử cho chạy giả lập chương trình của bạn, và kết quả là...............chương trình chạy tốt, không có bị gì cả. ( --" bạn thông cảm, mình không có làm mạch thực tế nên đành phải chạy giả lập).

              Với lại nếu bạn nạp giá trị số Dex thì không cần thêm D đâu, cứ nhập thẳng số vào là được.
              "Cái quý nhất của con người ta là sự sống. Đời người chỉ sống có một lần.Phải sống sao cho khỏi xót xa ân hận..."
              Lê lết, lay lất sống qua ngày! >:)

              Comment


              • #22
                Mạch e dùng thạch anh 12M, 2tụ 33pF cấp dao động cho At89c52
                Trở 200om tụ 10uF Reset.
                trở 220om nối led và V+,chân p1.0, Mức 0 là tích cực.
                Khi nạp file hex bằng proload4.2 hay bị báo lỗi verify fail at 0 và 1, tỷ lệ successful/fail là 1/3.

                Vậy k biết là do mạch nap hay do mạch điện ạ

                Comment


                • #23
                  Nếu như phần cứng bạn kết nối đúng về nguồn, Reset .v..v... thì khả năng lỗi là do phần nạp chương trình vào chip là khá cao. Proload thì mình chưa có sử dụng bao giờ nên không biết cách sử dụng nó, bạn có thể mượn một mạch nạp khác (cùng chương trình tương ứng với nó) của bạn bè để kiểm tra thử xem.
                  "Cái quý nhất của con người ta là sự sống. Đời người chỉ sống có một lần.Phải sống sao cho khỏi xót xa ân hận..."
                  Lê lết, lay lất sống qua ngày! >:)

                  Comment


                  • #24
                    Em dân amater thôi ạ, xa HN lắm mua cái mạch nạp này ở chợ trời đã phải đi hơn 100km đổi cái khác rồi ạ, bạn bè thì toàn đi cày chỉ có học ae trên này thôi
                    Chẳng nhẽ lại phải đợi có dịp qua thủ đô mua 1 cái mạch khác, giờ học Proteus vậy

                    ai dùng proload nạp cho 8051 cho em hỏi chút
                    doạn code trên dịch ra file hex là 145byte
                    nạp vào chip rồi đọc ra 1 file khác thì thấy là 22.5kbyte
                    so sánh thấy đoạn đầu mã hex không giống nhau
                    Điều đó có bình thường k ạ

                    Code 145byte

                    :03000000020030CB
                    :0F000B00D80CB290B2917828758C3C758AAF32C0
                    :10003000C290C291758901758C3C758AAF7828D2BF
                    :060040008C75A88280FE11
                    :00000001FF

                    Code 22.5Kb

                    :10000000020030FFFFFFFFFFFFFFFFD80AB290782A
                    :1000100014758C3C758AAF32FFFFFFFFFFFFFFFFB7
                    :10002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
                    :10003000C290758901758C3C758AAF7814D28C7525
                    :10004000A88280FEFFFFFFFFFFFFFFFFFFFFFFFF14
                    :10005000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
                    :10006000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
                    :10007000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
                    :10008000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
                    :10009000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
                    :1000A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
                    .........
                    ...........
                    Last edited by coofhair; 01-03-2010, 23:02.

                    Comment


                    • #25
                      Có phải đọc ra từ rom của dòng 8051 cái nào cũng là 22.5kB k cho dù khi mình ghi file hex vào ít dung lượng hơn
                      2 đoạn code trên 1 cái là em ghi vào,1 cái là đọc ra sao thấy nó không giống nhau chỗ nào vậy
                      có phải lỗi gì không ạ
                      Em dùng Proload 4.2
                      Last edited by coofhair; 02-03-2010, 19:15.

                      Comment

                      Về tác giả

                      Collapse

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

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

                      Collapse

                      Đang tải...
                      X