1. Xin chào Khách ! Ban quản trị sẽ tiến hành nâng cấp diễn đàn từ ngày 11/8/2017 Mọi truy cập có thể bị dán đoạn, mong bạn thông cảm!
    Dismiss Notice

Cần giúp giao tiếp mắt hồng ngoại 20 phím với 8051

Thảo luận trong 'Họ 8051'

Đang xem chủ đề này ( Thành viên: 0, Khách: 0)

  1. huynhantrong

    huynhantrong Học sinh phổ thông

    Tham gia ngày:
    30/9/13
    Bài viết:
    24
    Đã được thích:
    5
    Điểm thành tích:
    3
    Giới tính:
    Nam
  2. huynhantrong

    huynhantrong Học sinh phổ thông

    Tham gia ngày:
    30/9/13
    Bài viết:
    24
    Đã được thích:
    5
    Điểm thành tích:
    3
    Giới tính:
    Nam
    em có đoạn chương trình này nhưng muc đích của e là không giữ , sư huynh nào hướng dẫn em với,:


    #include <REGX52.H>

    unsigned int number_pulse = 0;
    sbit DATA_INFR = P3^2;
    sbit tb1 = P1^0; //so1
    sbit tb2 = P1^1; //so2
    sbit tb3 = P1^2; //so3

    sbit tb4 = P3^0; // tut_nang


    void delay_us(unsigned int i)
    {
    while(i--);
    }


    void delay_ms(unsigned int t) //hàm delay
    {
    unsigned int x,y;
    for(x=0;x<t;x++)
    {
    for(y=0;y<123;y++);
    }
    }
    // Check START============
    unsigned char check_start()
    {
    TH0 = 0x00; //Reset Timer 0 Value = 0
    TL0 = 0x00; //Reset Timer 0 Value = 0
    TR0 = 1; //Start Timer 0
    while(DATA_INFR == 0); //Cho cho den khi het muc 0
    TR0 = 0; //Stop Timer 0
    TF0 = 0;//Clear timer 0 Flag
    number_pulse = 0;
    number_pulse = TH0*256+TL0;

    if(number_pulse>8000)
    return 1;
    else return 0;
    }
    void Read_IR_Key(void) interrupt 0 //External Interrupt
    {
    unsigned char i=0;
    long int DATA_IR = 0x00000000;

    if(check_start()== 1)
    {
    while(DATA_INFR == 1); //Cho cho het phan bit 1 cua START

    while(i<32)
    {
    if(DATA_INFR == 1) //Neu co muc cao
    {
    TH0 = 0x00; //Reset Timer 0 Value = 0
    TL0 = 0x00; //Reset Timer 0 Value = 0
    TR0 = 1; //Start timer 0
    while(DATA_INFR == 1); //Cho cho den khi het muc 1
    TR0 = 0; //Stop Timer 0
    TF0 = 0;//Clear timer 0 Flag
    number_pulse = 0;
    number_pulse = TH0*256+TL0;
    DATA_IR = DATA_IR <<= 1;
    if(number_pulse>1300)
    {DATA_IR+=1;}
    i++;
    }
    while(DATA_INFR == 0);
    }
    delay_ms(100);

    i = DATA_IR;
    switch(i)
    {

    case 0xcf: P1=0xfb;; break; // 1
    case 0xE7: P1=0xfd; break; // 2
    case 0x85: P1=0xfe; break; // 3

    case 0xEF: tb4=~tb4; break; // 4

    }
    }
    }
    void main()
    {
    TMOD=0x01; //Timer 0 Mode 1
    EA = 1; //Enable Global Interrupt
    EX0=1; //Enable External 0 Interrupt
    IT0 = 1; //Interrupt at pulse up edge
    bip1();
    while(1)
    {

    }
    }


    giờ em muốn sửa code lại,khi nhấn nút 1 thì led 1 sáng thả ra thì led1 tắt,,,,,ae hướng dẫn giúp em với
     

Chia sẻ trang này