[MSP430 LaunchPad - GCC] Giải mã remote sony

NgoHungCuong

http://ngohungcuong.com
#1
- Mắt thu irm56384 mua tại Hoàng Phát Hoàng Phát-Cửa hàng linh kiện điện tử
- Điều khiển sony RM-969
- Chân tín hiệu ra của mắt thu hồng ngoại đưa vào chân P1.5

Mỗi khi nhấn phím power thì ON/OFF 2 led trên kit launchpad
PHP:
#include "msp430.h"

void Try_Decode(void);

#define signal (P1IN & BIT5)

int main(void) {
    WDTCTL = WDTHOLD + WDTPW ;
   
    BCSCTL1 = CALBC1_1MHZ; // Set DCO
    DCOCTL = CALDCO_1MHZ;
   
    P1SEL &= ~(BIT0 + BIT5 + BIT6);
    P1SEL2 &= ~(BIT0 + BIT5 + BIT6) ;
    P1DIR |= BIT0 + BIT6; // P1.0 : OUT
    // BIT 5 : INPUT
    P1DIR &= ~BIT5 ; // LENH XOA BIT 3
    P1OUT |= BIT5 ;  //BIT3 = 1
    P1REN = BIT5 ; //PULL UP BIT3

    while(1) {
        if ((P1IN & BIT5)==0) {  // se tat khi p1.3 khong co bam nut.
            //P1OUT |= (BIT0 + BIT6);
            Try_Decode();
        } //else {
            //P1OUT &= ~(BIT0 + BIT6); // se sang
        //}
    }
    return 0;
}

void Try_Decode(void) {
    unsigned char i,j;
    unsigned char cmd;
    cmd=0;
    for(i=0;i<3;++i)
    {
        //kiem tra xem co phai la nhieu hay khong
        __delay_cycles(750);
        if(signal)
            return;
    }
    //doi tiep cho tin hieu len cao
    while(!signal);
    //sau 3 lan delay ma van o muc thap chung to khong phai la nhieu
    //bat dau thu tin hieu thoi nao
    //thong nhat la chi thu 7 bit ma lenh thoi
    //khong thu 5 bit dia chi
    //cho cho tin hieu len cao
    //phai cho vao vong lap
    //tin hieu dang o muc cao
    for(i=0;i<7;++i)
    {
        cmd>>=1;
        while(signal);
        __delay_cycles(750);
        //kiem tra bit
        if(!signal)//bit 0
        {
            //bit 1
            cmd|=0x80;
            while(!signal);
        }
    }
    cmd>>=1;
    if(cmd==21)
        P1OUT ^= (BIT0 + BIT6);
    for(i=0;i<100;++i)
        for(j=0;j<10;++j)
            __delay_cycles(750);
}
 

Đính kèm

Quảng cáo Google