Thông báo

Collapse
No announcement yet.

xem zum e đoạn code này với

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

  • xem zum e đoạn code này với

    e lập trình cho 89c51 chay tuần tựu 8 led :
    #include<at89x51.h>
    void delay(unsigned long ms)
    {
    while ( ms--) ;
    }
    void main ( void )
    {
    int n;
    while ( 1)
    {
    P3 = 0x01;
    for ( n=0;n<8;n++)
    {
    P3=P3<<1;
    delay ( 25000);
    }
    }
    }

    nhưng khi thữ thì e thấy led đầu tiên e nối zo P3.0 lại ko sáng . . . mấy a xem e sai chỗ nào và sửa giúp e với . .

  • #2
    hĩ ai xem sửa zumf e với . .

    Comment


    • #3
      bạn thêm một biến ở main chẳng hạn như t và ở while(1) thì t=t<<1;P3=t; thử xem

      Comment


      • #4
        code bạn viết không sai gì cả chỉ là bạn hiểu nhầm xíu thôi do khi vào vòng lặp for thì P3 đã bị dịch mất một bit rồi nên led tại P3.0 sẽ không sáng được. Bạn thử sửa chương trình như thế này xem mình nghĩ chắc chắn sẽ chạy
        #include<at89x51.h>
        void delay(unsigned long ms)
        {
        while ( ms--) ;
        }
        void main ( void )
        {
        int n;
        while ( 1)
        {
        P3 = 0x01;
        delay ( 25000);
        for ( n=0;n<8;n++)
        {
        P3=P3<<1;
        delay ( 25000);
        }
        }
        }
        Mình chắc chắn nó sẽ chạy theo đúng ý của bạn là sáng dần từng led một từ P3.0->P3.7 thử xem ha.

        Mobile: 0985158901
        Email:

        Comment


        • #5
          Nguyên văn bởi quanghuydck Xem bài viết
          code bạn viết không sai gì cả chỉ là bạn hiểu nhầm xíu thôi do khi vào vòng lặp for thì P3 đã bị dịch mất một bit rồi nên led tại P3.0 sẽ không sáng được. Bạn thử sửa chương trình như thế này xem mình nghĩ chắc chắn sẽ chạy
          #include<at89x51.h>
          void delay(unsigned long ms)
          {
          while ( ms--) ;
          }
          void main ( void )
          {
          int n;
          while ( 1)
          {
          P3 = 0x01;
          delay ( 25000);
          for ( n=0;n<8;n++)
          {
          P3=P3<<1;
          delay ( 25000);
          }
          }
          }
          Mình chắc chắn nó sẽ chạy theo đúng ý của bạn là sáng dần từng led một từ P3.0->P3.7 thử xem ha.
          quá chuẩn . . tks bạn nha . . ak tiện thể cho mình hỏi 1 cái này . . . đoạn code trên bạn sửa đã làm cho ca 8 led chạy . . vậy mình cần phải thêm gì vào để nó chạy led từ P3.0->P3.7 . . sau dó nó lại lặp lại từ P3.0->P3.6 . . trong khi led P3.7 vẫn sáng . . và lần lượt lới lúc sáng hết đc ko vậy ??

          Comment


          • #6
            ai giúp e vấn đề này với
            #include<at89x51.h>
            void delay(unsigned long ms)
            {
            while ( ms--) ;
            }
            void main ( void )
            {
            int n;
            while ( 1)
            {
            P3 = 0x01;
            delay ( 25000);
            for ( n=0;n<8;n++)
            {
            P3=P3<<1;
            delay ( 25000);
            }
            }
            }


            đoạn code trên làm cho ca 8 led chạy . . vậy mình cần phải thêm gì vào để nó chạy led từ P3.0->P3.7 . . sau dó nó lại lặp lại từ P3.0->P3.6 . . trong khi led P3.7 vẫn sáng . . và lần lượt lới lúc sáng hết đc ko vậy ??

            Comment


            • #7
              ai giúp e với

              Comment


              • #8
                #include<at89x51.h>
                char m=0;
                void delay(unsigned long ms)
                {
                while ( ms--) ;
                }
                void main ( void )
                {
                int n;
                while ( 1)
                {
                P3 = 0x01+m;
                delay ( 25000);
                for ( n=0;n<(8-m);n++)
                {
                P3=(1<<n)+m;
                delay ( 25000);
                }
                m++;
                if(m==8)m=0;
                }
                }
                Bạn thử code thế này xem sao. Mình nghĩ đúng đó, do mình không cài trình dịch C nên không test thử được bạn thử dịch xem có gì thì post lên mọi người cùng trao đổi.

                Mobile: 0985158901
                Email:

                Comment


                • #9
                  #include<at89x51.h>
                  char m=0,c=0;
                  void delay(unsigned long ms)
                  {
                  while ( ms--) ;
                  }
                  void main ( void )
                  {
                  int n;
                  while ( 1)
                  {
                  P3 = 0x01+c;
                  delay ( 25000);
                  for ( n=0;n<(8-m);n++)
                  {
                  P3=(1<<n)+c;
                  delay ( 25000);
                  }
                  m++;
                  c=c+(1<<(7-m));
                  if(m==8){
                  m=0;
                  c=0;
                  }
                  }
                  xin lỗi code trước sai rồi bạn thử thế này xem

                  Mobile: 0985158901
                  Email:

                  Comment


                  • #10
                    Nguyên văn bởi anhgia1607 Xem bài viết
                    ai giúp e vấn đề này với
                    #include<at89x51.h>
                    void delay(unsigned long ms)
                    {
                    while ( ms--) ;
                    }
                    void main ( void )
                    {
                    int n;
                    while ( 1)
                    {
                    P3 = 0x01;
                    delay ( 25000);
                    for ( n=0;n<8;n++)
                    {
                    P3=P3<<1;
                    delay ( 25000);
                    }
                    }
                    }


                    đoạn code trên làm cho ca 8 led chạy . . vậy mình cần phải thêm gì vào để nó chạy led từ P3.0->P3.7 . . sau dó nó lại lặp lại từ P3.0->P3.6 . . trong khi led P3.7 vẫn sáng . . và lần lượt lới lúc sáng hết đc ko vậy ??
                    chú xem có phải thế này không nhé

                    Comment


                    • #11
                      Nguyên văn bởi kidteam Xem bài viết
                      chú xem có phải thế này không nhé
                      hihi đúng rồi đó a . . nhìn hay wa

                      Comment


                      • #12
                        Nguyên văn bởi quanghuydck Xem bài viết
                        #include<at89x51.h>
                        char m=0,c=0;
                        void delay(unsigned long ms)
                        {
                        while ( ms--) ;
                        }
                        void main ( void )
                        {
                        int n;
                        while ( 1)
                        {
                        P3 = 0x01+c;
                        delay ( 25000);
                        for ( n=0;n<(8-m);n++)
                        {
                        P3=(1<<n)+c;
                        delay ( 25000);
                        }
                        m++;
                        c=c+(1<<(7-m));
                        if(m==8){
                        m=0;
                        c=0;
                        }
                        }
                        xin lỗi code trước sai rồi bạn thử thế này xem
                        e thu mo phong tren proteus thấy nó ko đc chính xác lắm a ơi . . . nó chạy luân phiên 8 led xong . sáng led 7 xong chạy tiếp các led còn lại . . sau đó nó sáng led 6 và 7 . . cu nhu vậy tới hét . . còn led 8 thì ko sáng

                        Comment


                        • #13
                          chả chịu tìm gì cả
                          trong diễn đàn có rồi mà
                          Code:
                          #include <reg51.h>
                          //Ngo Hung Cuong
                          unsigned char a,c,d;
                          unsigned char i,j,t,k;
                          void delay(void);
                          void delay50ms(void);
                          void main()
                          {
                          	//khoi tao cho bo dinh thoi 0
                          	//dau tien tat tat ca cac led
                          	TMOD=1;
                          	tiep:
                          	P1=0xff;
                          	a=0xff;//tat ca cac led tat
                          	delay();
                          	for(i=0;i<8;++i)
                          	{
                          		d=0xff;
                          		for(j=0;j<i;++j)
                          			d>>=1;
                          		a=0xff;
                          		for(j=0;j<8-i;++j)
                          		{
                          			a<<=1;
                          			c=0;
                          			for(k=0;k<j;++k)
                          			{
                          				c<<=1;
                          				c|=1;
                          			}
                          			a|=c;
                          			a&=d;
                          			P1=a;
                          			delay();
                          		}
                          	}
                          	goto tiep;
                          }
                          void delay50ms(void)
                          {
                          	//tre khoang 50ms
                          	TR0=0;
                          	TL0=0xb0;
                          	TH0=0x3c;
                          	TF0=0;
                          	TR0=1;
                          	while(!TF0);
                          	TR0=0;
                          	TF0=0;
                          }
                          void delay(void)
                          {
                          	//tre 500ms
                          	for(t=0;t<10;++t)
                          		delay50ms();
                          }

                          Comment


                          • #14
                            Nguyên văn bởi kidteam Xem bài viết
                            chả chịu tìm gì cả
                            trong diễn đàn có rồi mà
                            Code:
                            #include <reg51.h>
                            //Ngo Hung Cuong
                            unsigned char a,c,d;
                            unsigned char i,j,t,k;
                            void delay(void);
                            void delay50ms(void);
                            void main()
                            {
                            	//khoi tao cho bo dinh thoi 0
                            	//dau tien tat tat ca cac led
                            	TMOD=1;
                            	tiep:
                            	P1=0xff;
                            	a=0xff;//tat ca cac led tat
                            	delay();
                            	for(i=0;i<8;++i)
                            	{
                            		d=0xff;
                            		for(j=0;j<i;++j)
                            			d>>=1;
                            		a=0xff;
                            		for(j=0;j<8-i;++j)
                            		{
                            			a<<=1;
                            			c=0;
                            			for(k=0;k<j;++k)
                            			{
                            				c<<=1;
                            				c|=1;
                            			}
                            			a|=c;
                            			a&=d;
                            			P1=a;
                            			delay();
                            		}
                            	}
                            	goto tiep;
                            }
                            void delay50ms(void)
                            {
                            	//tre khoang 50ms
                            	TR0=0;
                            	TL0=0xb0;
                            	TH0=0x3c;
                            	TF0=0;
                            	TR0=1;
                            	while(!TF0);
                            	TR0=0;
                            	TF0=0;
                            }
                            void delay(void)
                            {
                            	//tre 500ms
                            	for(t=0;t<10;++t)
                            		delay50ms();
                            }
                            oh tks a nhìu

                            Comment


                            • #15
                              Click image for larger version

Name:	a.jpg
Views:	1
Size:	68.1 KB
ID:	1360718

                              thế này là sao a . . e gán đc " chung " sao ko gán đc " chung1"

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X