Thông báo

Collapse
No announcement yet.

Dành cho người mới tìm hiểu 8051

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

  • led sáng lâu là do thời gian trễ nhiều hay ít. Tất nhiên trong chương trình của bạn có 1 chương trình con delay. Nếu bằng một cách nào đó, thay đổi giá trị mặc định ban đầu trong delay thì thời gian delay cũng thay đổi: VD nhé
    delay:
    - mov r1,bien_delay
    --d1: mov r2,#255
    ---d2:djnz r2,d2
    -- --djnz r1,d1
    --ret
    Nếu bằng phím bấm, bạn điều chỉnh giá trị của bien_delay (tăng hoặc giảm) thì thời gian trễ thay cũng thay đổi(tăng hoặc giảm).VD:
    scan_button:
    ----- JB p3.0,exit
    ----- INC bien_delay ; INC lệnh tăng giá trị thanh ghi (ô nhớ ) thêm 1 đơn vị.
    -exit: ; DEC: lệnh giảm .
    --ret
    Chúc bạn thành công.

    Comment


    • trc hết xin cảm ơn bạn.mình làm theo cách bạn và viết chtrinh ra thế này:
      tạo sóng tại p1.0,nhấn nút p1.7 làm tăng trễ và nhấn p1.6 thì giảm.mình mô phong bằng Proteus nhưng lại k thấy thay đổi
      include 8051.mc
      main:
      MOV 20H,#5 ;DELAY 0.25S
      MOV 21H,#10 ;DELAY .5S
      MOV 22H,#15 ;DELAY .75S
      MOV 23H,#20 ;DELAY 1S
      MOV R1,#21H
      MOV A,@R1
      LOOP:
      SETB P1.0
      ACALL KIEMTRA
      ACALL DELAY
      CLR P1.0
      ACALL KIEMTRA
      CALL DELAY
      SJMP LOOP
      KIEMTRA:
      JNB P1.7,TTUC1
      TTUC1: INC R1
      MOV A,@R1
      JNB P1.6,TTUC2
      TTUC2:
      DEC R1
      MOV A,@R1
      RET
      DELAY:
      MOV R5,A
      LAP2:MOV R6,#100
      LAP1:MOV R7,#250
      DJNZ R7,$
      DJNZ R6,LAP1
      DJNZ R5,LAP2
      RET
      END
      |

      Comment


      • Code:
        KIEMTRA:
        JNB P1.7,TTUC1
        TTUC1: INC R1
        MOV A,@R1
        JNB P1.6,TTUC2
        TTUC2:
        DEC R1
        MOV A,@R1
        RET
        Thứ 1:Câu hỏi đặt ra là nếu R1 tăng quá giá trị 23h thì chuyện gì xảy ra? Có lẽ trường hợp của bạn rơi vào tình huống này.
        Thứ 2: Khi bạn bấm 1 phím, VD phím tăng chẳng hạn, thì vi điều khiển đã thực hiện kiểm tra được bao nhiêu lần bạn bấm phím? Khi bạn bấm phím, ít ra là bạn đấ giữ phím trong khoảng 20ms rồi. Bạn thử tưởng tượng xem con trỏ R1 đã tăng bao nhiêu đơn vị khi 1 lần bạn bấm ?
        Thứ 3: Đừng dùng A vào công việc delay, nên thay bằng 1 thanh ghi R nào đó.
        Thứ 4: Chương trình kiểm tra phím không đúng.
        Bạn thử kiểm lại nhé:
        ---------------------Nếu phím chân P1.7 được bấm thì........................
        ---------------------Nếu phím chân P1.7 không được bấm thì..............
        Hãy thật bình tĩnh, xem xét cẩn thận ý mình vừa nói bạn sẽ tìm được cái sai.
        Last edited by mrcuongcon; 23-11-2008, 19:52.

        Comment


        • Ban quynh cho to hoi lâ tai sao trong chounh trinh j<120 ko?>
          |

          Comment


          • có aj có sách j về vi điều khiển họ 8051 không?send ch
            o e mới.e mới học về vi điều khiển nên rất cần.mong các tiên bối jup sức.mail của e là
            :mylove_forever_9x_thichtien@yahoo.com

            Comment


            • tài liệu tiếng việt thì em xin còn tiếng anh thì em chiu em không bít tiếng anh

              Comment


              • http://dientuvietnam.net/forums/show...ghlight=tallht
                bác vào trang này nhá!
                SỰ HỌC LÀ MÃI MÃI......!!!!

                Comment


                • bạn dùng delay bình thường đi chớ kiểm tra cờ bận đó khó lắm.Mình cũng từng mô phỏng như bạn mà chưa được

                  Comment


                  • Nguyên văn bởi DungNTvt Xem bài viết
                    Các bác giúp em với. Hiện nay em đang làm bài tập về LCD mô phỏng hiện chữ lên màn hình dùng chương trình mô phỏng Proteus. Em đã mô phỏng 2 trường hợp của chương trình con WAIT_LCD
                    Trường hợp 1 em đợi khoảng thời gian mù ( dùng delay ) thì chữ hiện lên LCD bình thường.
                    Trường họp 2 em đợi cho cờ BF (ACC.7) từ mức 1 xuống mức 0. Nhưng cờ không thể xuống mức 0 được ( em không hiểu tại sao ??) và chương trình không thể thoát khỏi chương trình con được.
                    Đây là chương trình và của em. Mong các bác tìm giúp em lỗi sai ở cờ BF (ACC.7). Em có đính kèm các file chương trình + mô phỏng ở dưới.
                    Em cảm ơn nhiều.


                    org 0000h
                    DB0 BIT P0.0
                    DB1 BIT P0.1
                    DB2 BIT P0.2
                    DB3 BIT P0.3
                    DB4 BIT P0.4
                    DB5 BIT P0.5
                    DB6 BIT P0.6
                    DB7 BIT P0.7
                    RW BIT P3.5
                    RS BIT P3.6
                    E BIT P3.7
                    MAIN:

                    LCALL DELAY
                    LCALL INIT_LCD
                    LCALL CLR_LCD
                    MOV A,#'D'
                    LCALL WRITE_TEXT
                    MOV A,#'U'
                    LCALL WRITE_TEXT
                    MOV A,#'N'
                    LCALL WRITE_TEXT
                    MOV A,#'G'
                    LCALL WRITE_TEXT

                    ;************************************************* *************
                    ; Delay program
                    ;************************************************* *************
                    DELAY:
                    PUSH 7
                    PUSH 6
                    MOV R7,#1
                    RE1: MOV R6,#2
                    DJNZ R6, $
                    DJNZ R7,RE1
                    POP 6
                    POP 7

                    RET

                    ;************************************************* **************
                    ; Start LCD
                    ;************************************************* **************
                    INIT_LCD:
                    CLR RS
                    CLR RW
                    MOV P0,#38h
                    SETB E
                    CLR E
                    LCALL WAIT_LCD
                    CLR RS
                    CLR RW
                    MOV P0,#0Eh
                    SETB E
                    CLR E
                    LCALL WAIT_LCD
                    CLR RS
                    CLR RW
                    MOV P0,#06h
                    SETB E
                    CLR E
                    LCALL WAIT_LCD
                    RET

                    ;************************************************* **************
                    ; Clear LCD
                    ;************************************************* **************
                    CLR_LCD:
                    CLR RW
                    CLR RS
                    MOV P0,#01h
                    SETB E
                    CLR E
                    LCALL WAIT_LCD
                    RET

                    ;************************************************* *************
                    ; Write the context to LCD
                    ;************************************************* ************
                    WRITE_TEXT:
                    CLR RW
                    SETB RS
                    MOV P0,A
                    SETB E
                    CLR E
                    LCALL WAIT_LCD
                    RET

                    ;************************************************* *************
                    ; Test busy flat ( wait lcd program )
                    ;************************************************* ************
                    WAIT_LCD:
                    ; lcall delay
                    ; CLR E ;Start LCD command
                    CLR RS ;It's a command
                    SETB RW ;It's a read command
                    MOV P0,#0FFh ;Set all pins to FF initially
                    SETB E
                    MOV A,P0 ;Read the return value
                    JB ACC.7,$ ;If bit 7 high, LCD still busy
                    CLR E ;Finish the command
                    CLR RW ;Turn off RW for future commands
                    RET
                    END
                    bạn dùng delay bình thường đi chớ kiểm tra cờ bận đó khó lắm.Mình cũng từng mô phỏng như bạn mà chưa được

                    Comment


                    • ;********************************************
                      READY:SETB BUSY
                      SETB RW
                      CLR RS
                      HERE:
                      CLR ENB
                      SETB ENB
                      JB BUSY,HERE
                      RET
                      ;********************************************
                      Bạn so sánh module kiểm tra cờ bận của mình nhé, hơi khác của bạn chút. Mình làm rất nhiều với nó, thấy nó thực sự ổn định. Trong quyển Họ vi điều khiển 8051 của Nguyễn Tăng Cường đã nói rất rõ.
                      Nhưng làm với Proteus chỉ là giả lập thôi, thực tế thì dường như cái LCD nó chạy khác hẳn. Có mạch là tốt nhất, tất nhiên nên chạy giả lập dc thì hay hơn.
                      Last edited by mrcuongcon; 27-11-2008, 23:58.

                      Comment


                      • ban nào cho mình xin mạch nạp 89c52 với

                        Comment


                        • Mạch AT89c52, tốt nhất nên đi mua bạn à, đến PNLAB trên đường Lương Định Của mà mua, cũng kô đắt lắm . Tại sao bạn kô dùng AT89s52, con chíp này làm mạch nạp dễ thôi, kô như con AT89c52

                          Comment


                          • cho minh hoi khi thi hanh chuong trinh trong ram noi thi chan ALE va PSEND duoc ket noi nhu the nao
                            cam on
                            |

                            Comment


                            • Em muốn tìm hiểu cấu trúc hoạt động ngắt của ONCHIP 8051. Mọi người giúp em với???

                              Comment


                              • cac ban co gang nha , hay noi nhieu de chun toi duoc mo mang kien thuc!!

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X