Thông báo

Collapse
No announcement yet.

Cách sử dụng P0 của vi điều khiển 89s52

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

  • Cách sử dụng P0 của vi điều khiển 89s52

    Em code hiệu ứng led thử khi sử dụng P0 thì thấy nó không như chương trình viết , cách viết code cũng giống như viết cho các P1, P2, P3,mấy Port 1,2,3 thì chạy đúng. khi sử dụng P0 như một Port I/O trong kielC có cần phải khai báo gì thêm không ? mong mọi người giúp em với ! thanks tất cả các anh em
    code của em đây
    Code:
    #include<at89x52.h>
    unsigned char nhayled[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //cac hieu ung
    unsigned char leddon[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
    unsigned char hben[4]={0x81,0xc3,0xe7,0xff};
    unsigned char hben1[4]={0x18,0x3c,0x7e,0xff};
    void delay(unsigned int i)
    {
        while(i--)
        {
           unsigned char j=121;
          while(j--){}
        }
    }
    void sangduoi1()
    {
    	char k;
          for(k=0;k<8;k++)
          {
             P0=nhayled[k];
             delay(50);
          } 
    	  	 P0=0x00;
          for(k=0;k<8;k++)
          {
             P1=nhayled[k];
             delay(50);
          } 
    	  	 P1=0x00;
          for(k=0;k<8;k++)
          {
             P2=nhayled[k];
             delay(50);
          } 
    	  	 P2=0x00;
          for(k=0;k<8;k++)
          {
             P3=nhayled[k];
             delay(50);
          } 
    	  	 P3=0x00;
    
    }
    void sangduoi3()
    {
    	char i,j;
    
    	for(j=0;j<=3;j++)
    	{
          for(i=7;i>=0;i--)
          {
             P0=nhayled[i];
             P1=nhayled[i];
    		 P2=nhayled[i];
    		 P3=nhayled[i];
             delay(200);
          }  
    	  	 P1=0x00;  P2=0x00;P3=0X00;P0=0X00;
    		 delay(80);
    	}
    }
    void sangduoi2()
    {
    	char i;
    
          for(i=0;i<=7;i++)
          {
             P0=nhayled[i];
             P1=nhayled[i];
    		 P2=nhayled[i];
    		 P3=nhayled[i];
             delay(200);
          }  
    	  	 P1=0x00;  P2=0x00;P3=0X00;P0=0X00;
    		 delay(200);
    }
    void sangdon()
    {
    	char i;
    
          for(i=0;i<=7;i++)
          {
             P0=leddon[i];
             P1=leddon[i];
    		 P2=leddon[i];
    		 P3=leddon[i];
             delay(250);
          }  
    	  	 P1=0x00;  P2=0x00;P3=0X00;P0=0X00;
    		 delay(500);
    }
    void sangdon1()
    {
    	char i;
    
          for(i=7;i>=0;i--)
          {
             P0=leddon[i];
             P1=leddon[i];
    		 P2=leddon[i];
    		 P3=leddon[i];
             delay(250);
          }  
    	  	 P1=0x00;  P2=0x00;P3=0X00;P0=0X00;
    		 delay(500);
    }
    void sangdon2()
    {
    	char k,i;
    	for(i=0;i<=3;i++)
    	{
          for(k=0;k<8;k++)
          {
             P0=leddon[k];
             delay(50);
          } 
    	  	 P0=0xff;
          for(k=0;k<8;k++)
          {
             P1=leddon[k];
             delay(50);
          } 
    	  	 P1=0xff;
          for(k=0;k<8;k++)
          {
             P2=leddon[k];
             delay(50);
          } 
    	  	 P2=0xff;
          for(k=0;k<8;k++)
          {
             P3=leddon[k];
             delay(50);
          } 
    	  	 P3=0xff;
    		 delay(500);
    		 P1=0x00;  P2=0x00;P3=0X00;P0=0X00;
    		 delay(500);
    	}
    		 P1=0x00;  P2=0x00;P3=0X00;P0=0X00;
    		 delay(500);
    	
    }
    void sanghaiben()
    {
    	char i,j;
        for(j=0;j<=3;j++)
    	{
          for(i=0;i<=3;i++)
          {
             P0=hben[i];
             P1=hben[i];
    		 P2=hben[i];
    		 P3=hben[i];
             delay(250);
          }  
    	  	 P1=0x00;  P2=0x00;P3=0X00;P0=0X00;
    		 delay(500);
    	}
    	
    }
    void sanghaiben1()
    {
    	char i,j;
    	  for(j=0;j<=3;j++)
    	  {
          for(i=0;i<=3;i++)
          {
             P0=hben1[i];
             P1=hben1[i];
    		 P2=hben1[i];
    		 P3=hben1[i];
             delay(250);
          }  
    	  	 P1=0x00;  P2=0x00;P3=0X00;P0=0X00;
    		 delay(500);
    	 }
    	
    }
    void choptat()
    {
    	int i;
    	for(i=0;i<=4;i++)
    		{
    			P0=0xff;
    			P1=0xff;
    			P2=0xff;
    			P3=0xff;
    			delay(100);
    	  	 P1=0x00;  P2=0x00;P3=0X00;P0=0X00;
    		 	delay(100);
    		}
    }
    void main()
    {
    //   unsigned char k,i;
       P0=0x00;
       P1=0x00;
       P2=0x00;
       P3=0x00;
       while(1)
       {
    
        sangduoi1();
        sangduoi3();
    
       }
    }

  • #2
    P0 phải có trở treo bạn ơi, bạn mua cái trở thanh 10k hoặc 4k7 gắn vào thì nó sẽ như mấy port kia thôi

    Comment

    Về tác giả

    Collapse

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

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

    Collapse

    Đang tải...
    X