Thông báo

Collapse
No announcement yet.

dòng while có tác dụng gì trong đoạn code chỉnh giờ này

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

  • dòng while có tác dụng gì trong đoạn code chỉnh giờ này

    Code:
    ghilenhLCD(0xC5);
    while(menu==0);
    caidatgio:while(tang!=0  &&  giam!=0   &&  menu!=0);
            if(tang==0)
    	{
    	        gio++;
    		if(gio==24)	gio=0;
    		ghilenhLCD(0xC4);
    		ghiso(gio);
    	        ghilenhLCD(0xC5);
    	        delay(300);
    	        goto caidatgio;
             }
             if(giam==0)
    	 {
    		gio--;
    		if(gio==0xff)
                    gio=23;
    		ghilenhLCD(0xC4);
    		ghiso(gio);
    		ghilenhLCD(0xC5);
    		delay(300);
    		goto caidatgio;
             }
    	////////////////////////////////////////////
    while(menu==0);
    ghilenhLCD(0xC8);
    caidatphut:	while(tang!=0  &&  giam!=0   &&  menu!=0);
             if(tang==0)
              {
    	         phut++;
    	         if(phut==60) phut=0;
    		 ghilenhLCD(0xC7);
    	         ghiso(phut);
    		 ghilenhLCD(0x10);
    	         delay(300);
    	         goto caidatphut;}
    	        if(giam==0)
                  	{
    	            	phut--;
    	            	if(phut==0xff)
                            phut=59;
    	            	ghilenhLCD(0xC7);
    	             	ghiso(phut);
    	             	ghilenhLCD(0x10);
    	            	delay(300);
    	            	goto caidatphut;
    		}
    các vòng while em tô màu đỏ đó có ý nghĩa như thế nào, bác nào biết chỉ em với. em dở code c lắm.

  • #2
    while(menu==0);

    khi menu có giá trị =0 thì chương trình đứng ( dừng tại đó - con trỏ dừng tại vị trí đó ) mà chẳng làm cái gì cả ... khi nào menu # 0 ( khác 0 ) thì nó lại chạy tiếp .
    Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

    Comment


    • #3
      cú pháp : while ( biểu thức điều kiện đúng );


      while(tang!=0 && giam!=0 && menu!=0);

      // MCu sẽ kiểm tra

      tang!=0 && giam!=0 && menu!=0

      Nếu cụm biểu thức này đúng ... thì dừng ( nằm chờ ) tại đây , nếu sai ... bỏ qua và xử lý lệnh tiếp theo bên dưới
      Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

      Comment


      • #4
        tiện thể đây cho em hỏi bác queduong là chân D7 trong lcd 16x2 còn có tác dụng gì. vì trong vài đoạn code em thấy có cho chân này bằng 0 hoặc 1.

        Comment


        • #5
          từ D0-D7 tác dụng là như nhau với chế độ 8 bit, chế độ 4 bit thì nó bẻ đôi byte ra thành ra thì bỏ D0-D3 chỉ xài D4-D7 các chân này chỉ mang giá trị data bình thường ko có gì đặc biệt
          Website chính thức đổi địa chỉ website thành
          Mời các bạn ghé thăm !!!

          Comment


          • #6
            Nguyên văn bởi vdanhp Xem bài viết
            tiện thể đây cho em hỏi bác queduong là chân D7 trong lcd 16x2 còn có tác dụng gì. vì trong vài đoạn code em thấy có cho chân này bằng 0 hoặc 1.
            mình không biết người nào đó viết code cho nó = 0, =1 ... ??? D0 - D7 trong LCD 16x2 để người ta đưa dữ liệu vào đó ... nhằm điều khiển, hiển thị cái LCD đó là các chân data ( 8 bits ) D0 - D7 .

            Trong 1 số trường hợp, mode ... người ta lại chỉ dùng có D4 - D7 ( 4 bits ) ... nhằm tiết kiệm chân cẳng giao tiếp cho MCU (đương nhiên tốc độ sẽ chậm hơn so với 8 bits ( tuy chậm nhưng mắt người không thấy được ), và phải phân chia dữ liệu ra làm 2 lần truyền ( cao, thấp )
            Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

            Comment


            • #7
              Nguyên văn bởi vdanhp Xem bài viết
              Code:
              ghilenhLCD(0xC5);
              while(menu==0);
              caidatgio:while(tang!=0  &&  giam!=0   &&  menu!=0);
                      if(tang==0)
              	{
              	        gio++;
              		if(gio==24)	gio=0;
              		ghilenhLCD(0xC4);
              		ghiso(gio);
              	        ghilenhLCD(0xC5);
              	        delay(300);
              	        goto caidatgio;
                       }
                       if(giam==0)
              	 {
              		gio--;
              		if(gio==0xff)
                              gio=23;
              		ghilenhLCD(0xC4);
              		ghiso(gio);
              		ghilenhLCD(0xC5);
              		delay(300);
              		goto caidatgio;
                       }
              	////////////////////////////////////////////
              while(menu==0);
              ghilenhLCD(0xC8);
              caidatphut:	while(tang!=0  &&  giam!=0   &&  menu!=0);
                       if(tang==0)
                        {
              	         phut++;
              	         if(phut==60) phut=0;
              		 ghilenhLCD(0xC7);
              	         ghiso(phut);
              		 ghilenhLCD(0x10);
              	         delay(300);
              	         goto caidatphut;}
              	        if(giam==0)
                            	{
              	            	phut--;
              	            	if(phut==0xff)
                                      phut=59;
              	            	ghilenhLCD(0xC7);
              	             	ghiso(phut);
              	             	ghilenhLCD(0x10);
              	            	delay(300);
              	            	goto caidatphut;
              		}
              các vòng while em tô màu đỏ đó có ý nghĩa như thế nào, bác nào biết chỉ em với. em dở code c lắm.
              lệnh while(menu==0); có nghĩa là trong khi nút menu của bạn đang được bấm giữ (menu==0) thì đợi không làm gì cả. Khi nút menu được nhả ra (menu==1) thì thoát khỏi lệnh này để chuyển sang lệnh kế tiếp.
              Tương tự lệnh while(tang!=0 && giam!=0 && menu!=0); có nghĩa là trong khi ba nút nhấn tăng, giảm, menu đồng thời khác 0 ( chưa được bấm ) thì đợi đến khi một có ít nhất một nút trong ba nút trên bằng 1 ( được bấm ) thì thoát khỏi lệnh while để đến lệnh tiếp theo.
              Trong lệnh while() mà không có lệnh con nào bên trong mà chỉ có dấu ; có nghĩa là lệnh while() đó dùng để chờ một điều kiện nào đó mà không làm gì cả.
              FPT Service bảo hành, sửa chữa dịch vụ UPS, các loại nguồn công suất.
              Mr Xô : Email :
              ĐT : 01674524129

              Comment


              • #8
                cho em hỏi thêm 1 câu nữa là điều chỉnh giờ trong đồng hồ dùng ds1307 không dùng ngắt để kích hoạt chỉnh giờ được không, nếu được thì lưu đồ giải thuật như thế nào, bác nào biết chỉ em với.

                Comment


                • #9
                  cho 1 biến đếm số lần ấn nút.... giá trị này tương ứng với giá trị của thời gian cần chỉnh ( giờ, phút, giây, ngày, tháng, năm )
                  ngắt thì dùng để đọc giá trị từ ds1307, quét led và ngắt để tạo hiệu ứng nhấp nháy khi đang chỉnh thời gian của giá trị đang chỉnh.

                  Comment

                  Về tác giả

                  Collapse

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

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

                  Collapse

                  Đang tải...
                  X