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

  • Chào bạn rongconn2t mình hỏi ngoài lề một chút nha
    Bạn học DH Công nghiệp ah lớp nào vậy , mình học DT2
    Có gì thì liên lạc nhé
    .: Lê Tiến Mạnh :.
    Phone number : 0989 735 804
    YM,Skype,mail : [leemanhj916]@gmail.com

    Comment


    • Chào cac bạn ! Có bạn nào biết chỉ mình cái này với.
      VD mình có đoạn sau :


      Code:
      .................
      main:
      jnb nut1, ct1
      jnb nut2, ct2
      sjmp main
      
      ;=============
      ct1:
         ; Doan chuong trinh
      ret
      ;----------
      ct2:
         ; Doan chuong trinh
      ret
      
      .......................
      Cho mình hỏi nếu nút 1 được nhấn thì ct1 được thực hiện vậy thì sau khi chương trình thực hiện xong, thì chương trinh lại quay về chương trình main à.

      Hôm nay làm bài tập mình dùng câu lệnh này tự dưng không biết giải thích sao nữa. Ai biết chỉ dùm mình nhé

      Comment


      • Vấn đề ở đây không phải là sai hay không sai cái gì, vấn đề bạn embsys hỏi đó là sau khi thực hiện 1 chương trình con, gặp lệnh RET thì trong trường hợp này chương trình sẽ thực hiện tiếp tại đâu. Mình cũng chưa có đáp án trong trường hợp này.

        Comment


        • ủa trường hợp này sau khi thực hiện ct1 xong thì nó sẽ quay lai ngay sau câu lệnh jnb,ct1 mà.
          SỰ HỌC LÀ MÃI MÃI......!!!!

          Comment


          • Theo mình biết thì lệnh jnblệnh nhẩy có điều kiện.
            lệnh nhẩy thì không giống lệnh gọi.
            Tức là sau khi thực hiện xong các chức năng mà chương trình con cần làm thì nó sẽ ...........................
            Nếu kết thúc chương trình mà bạn để lệnh nhẩy ljmp đến đâu đấy thì nó sẽ nhẩy đến đó để thực hiện tiếp ...................
            Còn nếu kết thúc chương trình bạn đặt lệnh RET thì nó sẽ đi đâu nhỉ

            Comment


            • Có ai biết hai chương trình nay khác nhau chỗ nào không mà mình cho no chạy thì thời gian khác nhau rất nhiều
              Code:
              void delay()
              	{
              	unsigned char t;
              	for(t=0 ;t<1000 ;t++);
              	}

              Code:
              void delay()
              	{
              	unsigned char t=1000;
              	while(t--);
              	}
              .: Lê Tiến Mạnh :.
              Phone number : 0989 735 804
              YM,Skype,mail : [leemanhj916]@gmail.com

              Comment


              • Ai biết cấu trúc của một chương trình của con MASTER trong mạch nạp 89xx qua cổng COM không ?
                Mình đang cần viết , nghe nói khó lắm hả
                mình cần cái code hoặc hướng dãn về cái code này nha chứ không phải là file HEX .Mạch nạp thì chạy rồi nhưng ko hiểu nó nạp như thế nào cả
                .: Lê Tiến Mạnh :.
                Phone number : 0989 735 804
                YM,Skype,mail : [leemanhj916]@gmail.com

                Comment


                • Nguyên văn bởi leemanhj916 Xem bài viết
                  có ai biết hai chương trình nay khác nhau chỗ nào không mà mình cho no chạy thì thời gian khác nhau rất nhiều
                  Code:
                  void delay()
                  	{
                  	unsigned char t;
                  	for(t=0 ;t<1000 ;t++);
                  	}

                  Code:
                  void delay()
                  	{
                  	unsigned char t=1000;
                  	while(t--);
                  	}
                  2 chương trình này chẳng khác gì nhau cả bác ơi,chủ yếu là cái hàm mà bạn dùng thôi,còn ý nghĩa thì như nhau mà
                  SỰ HỌC LÀ MÃI MÃI......!!!!

                  Comment


                  • Nguyên văn bởi leemanhj916 Xem bài viết
                    Có ai biết hai chương trình nay khác nhau chỗ nào không mà mình cho no chạy thì thời gian khác nhau rất nhiều
                    Code:
                    void delay()
                    	{
                    	unsigned char t;
                    	for(t=0 ;t<1000 ;t++);
                    	}

                    Code:
                    void delay()
                    	{
                    	unsigned char t=1000;
                    	while(t--);
                    	}
                    Mình góp ý với bạn :
                    1. unsigned char t; // biến này có giá trị tối đa là 255 , rồi bạn gán t=1000;
                    vậy thì nó có giá trị hình như là 235 thì phải. Vậy thì thứ nhất là giá trị delay là không đúng với thời gian giữ chậm mong muốn.
                    2. Cái thứ 2 là do hàm trong C hỗ trợ thế nào đó mà khi dịch sang asm nó sẽ khác nhau vì cấu trúc khác nhau :

                    Theo mình nghĩ thì dùng vòng lặp for thì thời gian gấp rưỡi vòng lặp while ( khong biết có đúng không ? )

                    Comment


                    • Nguyên văn bởi embsys Xem bài viết
                      Mình góp ý với bạn :
                      1. unsigned char t; // biến này có giá trị tối đa là 255 , rồi bạn gán t=1000;
                      vậy thì nó có giá trị hình như là 235 thì phải. Vậy thì thứ nhất là giá trị delay là không đúng với thời gian giữ chậm mong muốn.
                      2. Cái thứ 2 là do hàm trong C hỗ trợ thế nào đó mà khi dịch sang asm nó sẽ khác nhau vì cấu trúc khác nhau :

                      Theo mình nghĩ thì dùng vòng lặp for thì thời gian gấp rưỡi vòng lặp while ( khong biết có đúng không ? )
                      Mình cũng nghĩ vậy. Nếu chạy mô phỏng (hợp ngữ) ta sẽ thấy lệnh for và lệnh while khác nhau thế nào:
                      for chuyển qua hợp ngữ sẽ dùng các lệnh cjnz và cả jmp. Trong khi while(--x) thì chỉ cần dùng djnz.
                      !e

                      Comment


                      • Nguyên văn bởi leemanhj916 Xem bài viết
                        Có ai biết hai chương trình nay khác nhau chỗ nào không mà mình cho no chạy thì thời gian khác nhau rất nhiều
                        Code:
                        void delay()
                        	{
                        	unsigned char t;
                        	for(t=0 ;t<1000 ;t++);
                        	}

                        Code:
                        void delay()
                        	{
                        	unsigned char t=1000;
                        	while(t--);
                        	}
                        Mình có nhận xét thế này : chương trình đầu của bạn cho t là biến unsigned char nên nó nhận giá trị tối đa là 255,đến 255 bạn thực hiện lệnh t++ thì nó lại quay về giá trị là 0 -> điều kiện (t<1000) luôn đúng,chương trình sẽ ở mãi trong vòng lặp for.Chương trình thứ 2 thì bạn gán t =1000 nhưng trình dịch (mình dùng uVision3) sẽ cho t giá trị là 232(cái này mình cũng không hiểu vì sao ????),sau đó nó thực hiện vòng lặp while đến khi t =0 thì thoát ra-> thời gian delay của bạn sẽ bị sai.Theo mình bạn chỉ cần sửa lại là int t thì 2 chương trình trên là như nhau thôi

                        Comment


                        • may anh oi em moi vao hoc mon Vi Dieu Khien nen chi moi hieu ve 89C51 thoi, anh nao biet ve cac kieu chop tat cua led đơn vui long gui chuong trinh chop tat cac kieu led cho em biết nhé vi du nhu cac kieu sáng chạy 1 led, sang chạy 2 led, sáng dồn, 1 led sáng 1 led tắt em cảm ơn rat nhieu, cang nhieu kieu thi cang tot em xin cam on anh rat nhieu ạ

                          Comment


                          • Thank các bạn đúng là unsigned char thì tối đa chỉ 255 có thế mà cũng không nghĩ ra
                            .: Lê Tiến Mạnh :.
                            Phone number : 0989 735 804
                            YM,Skype,mail : [leemanhj916]@gmail.com

                            Comment


                            • Thế ai biết cấu trúc một chương trình của con MASTER của mạch nạp 89xx không ?
                              .: Lê Tiến Mạnh :.
                              Phone number : 0989 735 804
                              YM,Skype,mail : [leemanhj916]@gmail.com

                              Comment


                              • Nguyên văn bởi minhhieu9999 Xem bài viết
                                may anh oi em moi vao hoc mon Vi Dieu Khien nen chi moi hieu ve 89C51 thoi, anh nao biet ve cac kieu chop tat cua led đơn vui long gui chuong trinh chop tat cac kieu led cho em biết nhé vi du nhu cac kieu sáng chạy 1 led, sang chạy 2 led, sáng dồn, 1 led sáng 1 led tắt em cảm ơn rat nhieu, cang nhieu kieu thi cang tot em xin cam on anh rat nhieu ạ
                                cậu nói rõ ý tưởng đi.cậu cho bao nhiêu led?tốt nhất cậu nên tự thiết kế mạch rồi tự viết chương trình.post lên a e xem rồi chỉ cho.như vậy hay hơn.

                                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