1. THÔNG BÁO TUYỂN ADMIN DIỄN ĐÀN 2013
    Tìm kiếm nhà trọ - Ở ghép
    THÔNG BÁO BÁN ÁO SPKT.NET CHO THÀNH VIÊN DIỄN ĐÀN


    HÃY TÌM KIẾM Ở ĐÂY TRƯỚC KHI ĐẶT CÂU HỎI
    {xen:phrase loading}

[HELP] Giúp đỡ code KeilC

Thảo luận trong 'Kỹ thuật Điện - Điện tử' bắt đầu bởi leantuanlv, 5 Tháng một 2011.

  1. leantuanlv New Member

    Số bài viết: 2
    Đã được thích: 0
    Điểm thành tích: 0
    nhờ mấy pro xem giùm mình code này tại sao debug không có lỗi mà khi cho vào pro teus không chạy được mình làm mạch đếm sp có bàn phím hex nhập trước số lượng?????
    khi mình chạy = mô phỏng thì P1 quét led rất chậm P2 báo bị lỗi không thục hiện quét phím
    Mã:
    #include <AT89x52.h>
    #include <string.h>
    unsigned int couter_scand=100;       //so lan quet ma
    
    // Keypad Config.
    sbit h0 = P2^0;
    sbit h1 = P2^1;
    sbit h2 = P2^2;
    
    sbit c0 = P2^4;
    sbit c1 = P2^5;
    sbit c2 = P2^6;
    sbit c3 = P2^7;
    sbit led_bao=P3^7;
    sbit dem=P3^0;
    unsigned long int gt_nhap=100,gt_dich=0,hien_thi=0;
    int key=0;
    void delay (unsigned int ms)
        {
            while(ms--) //ms nhap 1000 de co dc 1S
                {
                        TMOD=0x01;
                        TH0=0xFC;
                        TL0=0x18;
                        TR0=1;
                        while(!TF0);
                        TR0=0;
                        TF0=0;
                }
        }
    //khai bao ma quet
    unsigned char scan_key[4]={0x7F,0xbF,0xdF,0xEF};      //mang quet phim
    
    //Khai bao ma phim
    unsigned int key_code[13]= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; //mang du lieu phim
    //Chuong trinh 
    /***************************************/
    /* Quet phim bam */
    /* tra ve 0 neu khong bam phim */
    /* hoac ky tu phim bam */
    /***************************************/
    void scan_keypad(void)                                  //chuong trinh quet phim
            {
                unsigned int i,x;
                unsigned int idx=0;
    
                for (i=0; i < 4; i++)
                    {
                        P2= scan_key[i];
                        for (x=0; x<couter_scand; x++)
                            {
                                if (h0==0) idx = (i*3) + 1;    break;
                                if (h1==0) idx = (i*3) + 2;    break;
                                if (h2==0) idx = (i*3) + 3;    break;
                            
                            }
                    }
    key = key_code[idx];
                                        //xac dinh gia tri phim vua bam
    
            }
    void ma_key  (unsigned long int m_key  )
        {
            switch(m_key) 
                {
                      case 0 : gt_nhap = gt_nhap*10  ; break; //
                     case 2 : gt_nhap = gt_nhap*10+1; break; //1
                    case 3 : gt_nhap = gt_nhap*10+2; break; //2
                      case 4 : gt_nhap = gt_nhap*10+3; break; //3
                       case 5 : gt_nhap = gt_nhap*10+4; break; //4
                      case 6 : gt_nhap = gt_nhap*10+5; break; //5
                      case 7 : gt_nhap = gt_nhap*10+6; break; //6
                      case 8 : gt_nhap = gt_nhap*10+7; break; //7
                      case 9 : gt_nhap = gt_nhap*10+8; break; //8
                      case 10 : gt_nhap = gt_nhap*10+9; break; //9
                      case 11 : gt_dich = gt_nhap     ; break; // enter
                      case 12 : gt_nhap = 0; gt_dich = 0; hien_thi = 0; break; // DELETE
                  } 
          }
    void chuyen_ma(unsigned int ma)
        {
           switch(ma)
               {
              case 0 : P0 = 0x3f; break;
              case 1 : P0 = 0x06; break;
              case 2 : P0 = 0x5b; break;
              case 3 : P0 = 0x4f; break;
              case 4 : P0 = 0x66; break;
              case 5 : P0 = 0x6d; break;
              case 6 : P0 = 0x7d; break;
              case 7 : P0 = 0x07; break;
              case 8 : P0 = 0x7f; break;
              case 9 : P0 = 0x6f; break;
           }
        }
    void main (void)
        {                                
           unsigned int c_tam,c_ht;
           P2 = 0xFF; led_bao = 0; 
    while(1)
           {
            scan_keypad();            //quet phim de dua ra gia tri phim vua nhap               
            ma_key(key);        //lay ra gia tri phim de hthi             
        if ((gt_dich > 0)&&(hien_thi < gt_dich))
            { if (dem==0)               //nhan gia tri tu cam bien va dem
            --gt_dich;}
            if ((hien_thi==gt_dich)&&(gt_dich==0))
             led_bao = 1;
             else led_bao = 0;
              gt_nhap = hien_thi;
              c_tam = c_ht%10; c_ht = (c_ht - c_ht%10)/10;
              chuyen_ma(c_tam);P1 = 0x0e;  delay(500);
              c_tam = c_ht%10; c_ht = (c_ht - c_ht%10)/10;
              chuyen_ma(c_tam); P1 = 0x0d; delay(500);      
              c_tam = c_ht%10; c_ht = (c_ht - c_ht%10)/10;
              chuyen_ma(c_tam); P1 = 0x08; delay(500);      
              c_tam = c_ht%10; c_ht = (c_ht - c_ht%10)/10;
              chuyen_ma(c_tam); P1 = 0x0b; delay(500);      
           }
        }
    
    
    
  2. himas88 New Member

    Số bài viết: 247
    Đã được thích: 1
    Điểm thành tích: 0

Chia sẻ trang này