Thông báo

Collapse
No announcement yet.

mình nhức đầu về nó quá!!

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

  • mình nhức đầu về nó quá!!

    đây là những câu lệnh rất đơn giản của con 89C51:
    main:
    mov R1,P0
    cjne R1,#10001111,main
    setb P2.0
    ở đây mình muốn khi P0=10001111 thì P2.0 sẽ được nhảy lên mức 1. Nhưng chẳng hiểu sao nó ko chạy ,mặc dù mình đã ktra P0 =10001111. Ai biết lỗi gì chỉ mình nhé!!!

  • #2
    Nguyên văn bởi trungBK Xem bài viết
    đây là những câu lệnh rất đơn giản của con 89C51:
    main:
    mov R1,P0
    cjne R1,#10001111,main
    setb P2.0
    ở đây mình muốn khi P0=10001111 thì P2.0 sẽ được nhảy lên mức 1. Nhưng chẳng hiểu sao nó ko chạy ,mặc dù mình đã ktra P0 =10001111. Ai biết lỗi gì chỉ mình nhé!!!
    có lẽ bạn quên thêm chữ "b" sau 10001111 để nó hiểu đây là số nhị phân.
    hãy cố gắng dù vướn phải thất bại!!!!!!!!

    Comment


    • #3
      có chữ B mình quên đấy ,có chữ B nhưng nó vẫn ko chạy

      Comment


      • #4
        Nguyên văn bởi trungBK Xem bài viết
        đây là những câu lệnh rất đơn giản của con 89C51:
        main:
        mov R1,P0
        cjne R1,#10001111b,main
        setb P2.0
        ở đây mình muốn khi P0=10001111 thì P2.0 sẽ được nhảy lên mức 1. Nhưng chẳng hiểu sao nó ko chạy ,mặc dù mình đã ktra P0 =10001111. Ai biết lỗi gì chỉ mình nhé!!!
        Bạn hãy hàn trở băng 9 chân 4,7K vào cổng P0 thử xem, treo tất cả R lên + nguồn ấy mà. Vì P0 không có trở treo bên trong nên rất nhiều lỗi xảy ra cho những người mới làm quen.
        Nếu bạn đã có trở rồi mà vẫn bị thì hãy mô tả kỹ hơn: P0 hàn những gì vào, làm gì để kiểm tra đúng như bạn đã nói...

        email:mahaco@fpt.vn

        Comment


        • #5
          Chào a 89xxx, cảm ơn lần trước chỉ e nhé. E đã thử port P2, port này được kết nối vớ 5 chân của con SC2272, đây là bộ thu phát vô tuyến e mới mua , khi nhận lệnh , phần phát sẽ cho ra 1 mã ra 5 chân của SC2272. Ví dụ mã đó là 10001, mã này vào 5 chân của P2, 3 chân còn lại của P2 e đã ktra đều ờ mức 1 hết . Vì vậy khi phần phát phát mã lệnh là 10001 thì P2 sẽ là 10001111. Do đó e chỉ cần ktra nếu P2=10001111 thì nó sẽ đưa 1 chân nào đó của VDK lên mức 1 . Rất đơn giản nhưng ko hiểu sao nó ko chạy.A chỉ e nhé!!!

          Comment


          • #6
            Nguyên văn bởi trungBK Xem bài viết
            Chào a 89xxx, cảm ơn lần trước chỉ e nhé. E đã thử port P2, port này được kết nối vớ 5 chân của con SC2272, đây là bộ thu phát vô tuyến e mới mua , khi nhận lệnh , phần phát sẽ cho ra 1 mã ra 5 chân của SC2272. Ví dụ mã đó là 10001, mã này vào 5 chân của P2, 3 chân còn lại của P2 e đã ktra đều ờ mức 1 hết . Vì vậy khi phần phát phát mã lệnh là 10001 thì P2 sẽ là 10001111. Do đó e chỉ cần ktra nếu P2=10001111 thì nó sẽ đưa 1 chân nào đó của VDK lên mức 1 . Rất đơn giản nhưng ko hiểu sao nó ko chạy.A chỉ e nhé!!!
            Giải sử bạn dùng 5 bit mã cho vào các cổng P2.3 đến P2.7 ( nếu bạn cho vào 5 cổng thấp thì chắc chắn là sai nên kiểm tra lại).
            -Kiểm tra xem 5 chân nối vào P2 có ổn định không, vì nếu không ổn định thì cũng khó kiểm tra đúng. nên bỏ tạm 5 chân nối SC2272, hàn trực tiếp để tạo 10001 trên cổng P2, kiểm tra xem có hoạt động không.
            -Nên khoá 3 bit không dùng lại:
            MOV A,P2
            ANL A,#11111000b
            MOV R1,A

            email:mahaco@fpt.vn

            Comment


            • #7
              Có thể do chân port của 89 không đủ dòng để kéo module vô tuyến lên mức 1, bạn nên kéo dương tất cả các chân của port2, dùng điện trở khoảng 2k7 kéo dương các chân này thử xem.

              Comment


              • #8
                E đã ktra ,khi e nhấn nút ,rõ ràng các chân của P2 có nhảy lên mức 1 ,tương ứng với mã vào, a yên tâm e đã làm ra mạch in ,đảm bảo các chân nối ko bị lỏng

                Comment


                • #9
                  bạn thử viết một lệnh đơn giản ví dụ cho chân p2.0 nhấp nháy xem nó có chạy không đã, với lại sau câu lệnh kia là gì? biết đâu nó setb xong rồi lại clear thì sao

                  Comment


                  • #10
                    P0 thường là open drain nên cần phải có pull up resistor, dùng 4.7k là được
                    Bạn thử viết lại như vậy xem sao
                    Code:
                    Main:	mov P0,#0ffh				; Set port as input
                    	mov A,P0				; Read port
                    	anl A,#0f8h				; Mask lower 3 bit
                    	cjne A,#88h,Main			;
                    	cpl P2.0				;
                    	jmp Main				;
                    Last edited by thelam; 20-01-2008, 05:09.

                    Comment


                    • #11
                      Nguyên văn bởi trungBK Xem bài viết
                      Chào a 89xxx, cảm ơn lần trước chỉ e nhé. E đã thử port P2, port này được kết nối vớ 5 chân của con SC2272, đây là bộ thu phát vô tuyến e mới mua , khi nhận lệnh , phần phát sẽ cho ra 1 mã ra 5 chân của SC2272. Ví dụ mã đó là 10001, mã này vào 5 chân của P2, 3 chân còn lại của P2 e đã ktra đều ờ mức 1 hết . Vì vậy khi phần phát phát mã lệnh là 10001 thì P2 sẽ là 10001111. Do đó e chỉ cần ktra nếu P2=10001111 thì nó sẽ đưa 1 chân nào đó của VDK lên mức 1 . Rất đơn giản nhưng ko hiểu sao nó ko chạy.A chỉ e nhé!!!
                      vậy trước tiên bạn cần kiểm tra lại con VDK của mình cái đã. bạn tháo bọ thu phát ra đi, tạo dữ liệu bằng tay theo ý muốn coi sao đã, có thể bạn viết chương trình chưa đúng, hoặc là VDK của bạn bị out rùi.
                      hãy cố gắng dù vướn phải thất bại!!!!!!!!

                      Comment


                      • #12
                        mạch nạp vẫn còn nhận được VDK thì ko có lý do gì nó lại chết được. Mà chương trính của a The Lam sao e thấy kỳ vậy,ý của e là 5 chân của P2 kết nối với 5 chân của SC2272 để khi 5 chân của SC2272 là 10001 thì 8 chân của P2 sẽ là 10001000, rồi so sánh nếu P2=10001000 thì setb p0.1

                        Comment


                        • #13
                          Nguyên văn bởi trungBK Xem bài viết
                          mạch nạp vẫn còn nhận được VDK thì ko có lý do gì nó lại chết được. Mà chương trính của a The Lam sao e thấy kỳ vậy,ý của e là 5 chân của P2 kết nối với 5 chân của SC2272 để khi 5 chân của SC2272 là 10001 thì 8 chân của P2 sẽ là 10001000, rồi so sánh nếu P2=10001000 thì setb p0.1
                          Chương trình rất đơn giản, phần cứng mà đúng như tôi đã nói thì chỉ còn phần mềm. Bạn hãy đưa phần mềm của bạn lên để mọi người giúp cho (phần quan trọng với bạn mà không liên quan trong câu hỏi thì bạn bỏ đi). Cái đoạn ban đầu bạn đưa lên chưa đầy đủ. Nếu không thì PM cho tôi, tôi giúp cho.

                          email:mahaco@fpt.vn

                          Comment


                          • #14
                            Sorry trungBK
                            Nếu hardware như bạn mô tả thì chỉ cần thay đổi chút xíu thôi chứ khó gì đâu
                            Code:
                            Main:	mov P2,#0ffh				; Set port as input
                            Here:	mov A,P2				; Read port
                            	anl A,#0f8h				; Mask lower 3 bit
                            	cjne A,#88h,Here			;
                            	cpl P0.1				;
                            	jmp Main				;
                            	end					;
                            Last edited by thelam; 21-01-2008, 10:22.

                            Comment


                            • #15
                              xin loi cac a nhe, may tinh cua e tu nhien ko danh duoc tieng viet. E da thu chuong trinh cua a The Lam,nhung van ko duoc, con phan mem, y a 89XXX muon noi den phan mem nap va bien dich dung ko. Ok a yen tam, e xai cai nay nhieu lam roi ,rat chinh xac ko sai. E tinh dung SC2272 xuat ra den 8 ma lenh de dk 8 thiet bi the ma co moi 1 mot cai ma lenh ma cung chua lam duoc . Tuc qua,kho hieu thiet!!

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X