• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 雙核單片機(jī)紅外遙控碼代碼

    雙核單片機(jī)紅外遙控碼代碼

    作者: 時(shí)間:2011-12-01 來源:網(wǎng)絡(luò) 收藏
    一個(gè)用應(yīng)廣做的紅外遮擋開光(反射式)全部代碼。

    IR_SW equ pb.1
    IR_INPUT equ pa.0
    IR_OUTPUT equ pa.6


    byte ir_new
    byte ir_old
    byte ir_enable
    byte i
    byte ir_new1
    byte ir_new2
    byte ir_new3

    goto main0
    goto main1

    //----------------FPPA0-------------------
    main0:
    .ADJUST_OTP_IHRCR 8MIPS// IHRC/2 = 8MIPS, WatchDog Disable, RAM 0,1 temporary be used

    sp = 0x30

    disgint
    inten = 0

    mov a,0b000_11_111 //disable timer
    mov t16m,a

    set1 pbc.1
    set0 IR_SW

    set0 pac.0
    set1 pac.6
    set0 IR_OUTPUT

    delay 200

    ir_new = 0
    ir_old = 0
    ir_enable = 0

    mov a,0
    mov intrq,a


    set1 fppen.1 //eanble FPPA1

    ir_enable = 1
    i = 20
    while(i)
    {
    delay 200
    i--
    }

    if(IR_INPUT)
    {
    ir_old = 1
    }
    else
    {
    ir_old = 0
    }

    ir_enable = 0
    i = 5
    while(i)
    {
    delay 200
    i--
    }

    clkmd.1 = 1 //enable watch dog


    main0_loop:
    wdreset
    call check_ir

    if(ir_new != ir_old)
    {
    if(ir_new != 1)
    {
    tog IR_SW
    }
    ir_old = ir_new
    }

    i = 100
    while(i)
    {
    delay 200
    i--
    }
    goto main0_loop

    check_ir:
    ir_enable = 1
    i = 20
    while(i)
    {
    delay 200
    i--
    }

    if(IR_INPUT)
    {
    ir_new1 = 1
    }
    else
    {
    ir_new1 = 0
    }

    i = 5
    while(i)
    {
    delay 200
    i--
    }

    if(IR_INPUT)
    {
    ir_new2 = 1
    }
    else
    {
    ir_new2 = 0
    }

    i = 5
    while(i)
    {
    delay 200
    i--
    }

    if(IR_INPUT)
    {
    ir_new3 = 1
    }
    else
    {
    ir_new3 = 0
    }

    if((ir_new1 == ir_new2) (ir_new2 == ir_new3))
    {
    ir_new = ir_new1
    }
    else
    {
    ir_new = ir_old
    }

    ir_enable = 0
    i = 20
    while(i)
    {
    delay 200
    i--
    }
    ret

    //----------------FPPA1-------------------
    main1:
    sp = 0x38
    delay 200
    main1_loop: //output 38k IR signal
    if(ir_enable)
    {
    set1 IR_OUTPUT
    delay 33
    set0 IR_OUTPUT
    delay 67
    }
    else
    {
    set0 IR_OUTPUT
    delay 10
    }
    goto main1_loop


    關(guān)鍵詞: 雙核單片機(jī) 紅外遙控

    評(píng)論


    相關(guān)推薦

    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 龙口市| 汉源县| 巴东县| 宝兴县| 介休市| 府谷县| 化州市| 普格县| 吴江市| 昌江| 名山县| 调兵山市| 上饶市| 嘉善县| 丹东市| 武平县| 乌兰察布市| 安西县| 于都县| 石柱| 淳化县| 辽宁省| 顺义区| 定陶县| 黔东| 鹿泉市| 天台县| 化州市| 河南省| 博爱县| 泰顺县| 湛江市| 灌云县| 玉山县| 房产| 镇雄县| 湖南省| SHOW| 平乐县| 武功县| 大名县|