Thông báo

Collapse
No announcement yet.

Hỏi về code cho 89c51

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

  • Hỏi về code cho 89c51

    chào mọi người! mình có viết đoạn code để đổi chế độ và tăng giảm tốc độ nháy cho led. nhưng nó bị lỗi ở doạn gọi hàm ngắt ngoài, cụ thể là mình định cho nó chạy tăng hoặc giảm từ từ khi gọi hàm ngắt, nhưng khi bấm lần đầu nó đã tăng hoặc giảm đến mức cao nhất hoặc thấp nhất luôn rồi. mọi người xem code và cho mình xin ý kiến! cám ơn mọi người!
    Code:
    #include <REGX51.H>
    #include <stdio.h>
    char chi[4] = {0x7e, 0x3c, 0x18, 0x00 }; // mang
    char duoi[8] = {0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe  };  // mang 
    char don[10] = {0xe7,0xdb, 0xbd, 0x7e, 0x66, 0x5a, 0x3c, 0x24, 0x18, 0x00 };  
    
    int i;
    int j;
    int dem=0;
    int good=0;
    unsigned long thoigian=5000;
    		   
    void tre(unsigned long time)					  // ham tao tre
    {
    while(time--);						   // dem giam dan tu time khi nao den 0 thi thoat ham tre
    }
    void baoanh1(void) interrupt 2
    {
    thoigian=thoigian+1000;
    }  
    
    void baoanh2(void) interrupt 0
    {
    if(thoigian!=0)
    thoigian=thoigian-1000;
    }
    
    
    void ledtang()		   //ham tao hieu ung led tang
    {
    for(i=0; i<=8; i++)
    {
    P2= 0xff << i;
    tre(thoigian);
    }
    }
    void ledgiam()
    {
    for(i=0; i<=8; i++)
    {
    P2= 0xff >> i;
    tre(thoigian);
    }
    }
    
    void baoanh()				  //ham tao hieu ung bao anh
    {
    for(i=0; i<=3; i++)
    {
    P2= chi[i];
    tre(thoigian);
    }
    }
    
    
    void nhay()					  // ham tao hieu ung nahy lien tuc 3 lan day led
    {
    
    P2=0x00;
    tre(thoigian);
    P2=0xff;
    tre(thoigian);
    }
    
    void nhaychanle()				   // ham tao hieu ung nhay chan le
    {
    P2=0xaa;
    tre(thoigian);
    P2=~0xaa;
    tre(thoigian);
    }
    
    
    void leddon()					   // ham tao hieu ung led don
    {
    for(i=0; i<=9; i++)
    {
    P2=don[i];
    tre(thoigian);
    }
    }
    
    main()                                             
    {
    IE=0x85;
    TMOD=0x60;       
    TH1=0xFA;
    TL1=0xFA;             
    P3_5=1;              
    TR1=1;
                 
    while(1)              
     {
     switch(TL1)
     {
     case 0xFA:
     ledtang();
     break;
    
     case 0xFB:
     ledgiam();
     break;
    
     case 0xFC:
     baoanh();
     break;
    
     case 0xFD:
     nhay();
     break;
    
     case 0xFE:
     nhaychanle();
     break;
    
     default:
     leddon();
    
    }
    }
    }

  • #2
    em không hiểu code của bác lắm.bác không dùng ngắt ngoài thì bác để cái nút bấm ở đâu.

    Comment

    Về tác giả

    Collapse

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

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

    Collapse

    Đang tải...
    X