Thông báo

Collapse
No announcement yet.

HELP !! Tạo xung trên AT89c51

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

  • HELP !! Tạo xung trên AT89c51

    Chào các bạn, mình mới bít vè VĐK>
    Mong các bạn giúp đỡ cho bài này, lập trình sử dụng Timer số 1 ở chế độ 2, tạo ra xung chu kỳ 1s, có độ rộng = 650ms ở chân cổng P0.0
    Và bài của mình đây, nhưng chạy ko đc
    PHP Code:
    ORG 0000H
        MOV TMOD
    ,#20H
        
    MOV TH1,#HIGH(-250)
        
    MOV TL1,#LOW(-250)
        
    SETB TR1
    AGAIN
    :    CLR P0.0
        MOV R1
    ,#14
    BACK2:    MOV R2,#100
    BACK1:    JNB TF1,$
        
    CLR TF1
        DJNZ R2
    ,BACK1
        DJNZ R1
    ,BACK2
        SETB P0.0
        MOV R3
    ,#26
    BACK4:    MOV R4,#100
    BACK3:    JNB TF1,$
        
    CLR TF1
        DJNZ R4
    ,BACK1
        DJNZ R3
    ,BACK2
        SJMP AGAIN
    END 
    Nếu có thể các bác giúp mình mô phỏng cái này trên Protel
    Cảm ơn nhiều
    |

  • #2
    Hjc, ko ai giúp mình .....?
    |

    Comment


    • #3
      có phải bạn nhầm lẫn ở chỗ
      BACK4: MOV R4,#100
      BACK3: JNB TF1,$
      CLR TF1
      DJNZ R4,BACK3
      DJNZ R3,BACK4
      SJMP AGAIN


      BACK4: MOV R4,#100
      BACK3: JNB TF1,$
      CLR TF1
      DJNZ R4,BACK1
      DJNZ R3,BACK2
      SJMP AGAIN
      Điện thoại:
      email:

      Comment


      • #4
        KO phải bạn ơi, đây ko phải là xung đối xứng, nên chu kỳ xung ko bằng 2 lần độ rộng xung....
        Mình làm như thế để tính thời gian của đoạn xung sau mà....
        |

        Comment


        • #5
          Oh, hình như là thế rùi, tại sao lại BACK về BACK1 chứ....?
          Cảm ơn bạn, để mình tét lại xem
          |

          Comment


          • #6
            Sao bạn không viết chương trình con là Delay dùng timer, sau đó gọi chương trình con đó ra sẽ dễ thao tác hơn. Với lại khi bạn sử dụng giảm giá trị thanh ghi trong Delay dùng timer thì bạn nên xóa cờ TR khi cờ TF lên 1, sau đó kiểm tra thanh ghi, nếu chưa bằng 0 thì cho quay lại từ đầu và tiếp tục set cờ TR cho timer chạy tiếp.

            Ví dụ đây là Delay dùng Timer 1 ở chế độ 1 cho thời gian trễ 1s

            DELAY1S:
            PUSH R0
            MOV TMOD,#00010000B
            MOV R0,#100
            AAA:
            MOV TH1,#HIGH(-10000)
            MOV TL1,#LOW(-10000)
            SETB TR1
            JNB TF1,$
            CLR TF1
            CLR TR1
            DJNZ R0,AAA
            POP R0
            RET

            Từ giờ bạn có chương trình con là delay 1s, khi bạn muốn cho chỗ nào trì hoãn 1s thì bạn cứ gọi chương trình con ra bằng lệnh LCALL DELAY1S bình thường.

            Thân!
            "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


            • #7
              Hic, chào các Bro, dùng ở Mode 1, thì ko nói rùi, em muốn dùng Mode 2 cơ. Vì bài tập đưa ra như vậy:
              lập trình dùng bộ định thời số 1, hoạt động ở mode 2, tạo chuỗi điện áp hình vuông có chu kỳ 1 giây ở chân cổng P0.0
              Và CODE của em sau khi đã sửa, nhưng chu kỳ xung vẫn ko đảm bảo là 1 giây, Các Bro giúp em nha
              PHP Code:
              ;***********************************
              ;
              TIMER 0MODE 2XUNG1HZP0.0  *
              ;***********************************
              ORG 0000H
                  MOV TMOD
              ,#02H
                  
              MOV TH0,#HIGH(-250)
                  
              MOV TL0,#LOW(-250)
                  
              SETB TR0
                  CLR P0.0
              AGAIN
              :    MOV R2,#20
              BACK1:    MOV R3,#100
              BACK2:    JNB TF0,$
                  
              CLR TF0
                  DJNZ R3
              ,BACK2
                  DJNZ R2
              ,BACK1
                  CPL P0.0
                  JMP AGAIN
              END 
              |

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              • Andrea14
                Vấn đề về tốc độ quay
                bởi Andrea14
                Chào mọi người,

                Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
                hôm nay, 12:42
              • bqviet
                Trả lời cho Đấu tắt điện cho máy tính bảng
                bởi bqviet
                Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
                06-12-2025, 17:17
              • nguyendinhvan
                Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
                bởi nguyendinhvan
                Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
                05-12-2025, 19:59
              • afrendly
                Trả lời cho Đấu tắt điện cho máy tính bảng
                bởi afrendly
                Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
                04-12-2025, 01:27
              Đang tải...
              X