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

    EEPW首頁 > 嵌入式系統 > 設計應用 > PWM控制LED臺燈程序帶紅外遙控

    PWM控制LED臺燈程序帶紅外遙控

    作者: 時間:2012-10-31 來源:網絡 收藏

    ;/*************************************************
    ;* 標題: 程序*
    ;* 文件: .asm *
    ;* 日期: 2008-12-18 *
    ;* 版本: 1.0*
    ;* 作者: *
    ;****************************************************
    ; 程序帶有功能*
    ; 利用定時器控制產生占空比可變的PWM 波*
    ; 按K1,PWM 值增加,則占空比減小,LED 燈漸暗。*
    ; 按K2,PWM 值減小,則占空比增加,LED 燈漸亮。*
    ; 我的5644遙控器上的0~9數字鍵對應10個亮度等級。*
    ; 當PWM 值增加到最大值或減小到最小值時,蜂鳴器將報警*
    ; 資源:p1 口,數碼管。p3.4,p3.5 亮度控制按鍵P3.0 PWM端口,p3.1 蜂鳴器報警*
    ;*********************************************************
    LEVEL0EQU2FH;亮度等級9
    LEVEL1EQU4FH;亮度等級8
    LEVEL2EQU6FH;亮度等級7
    LEVEL3EQU8FH;亮度等級6
    LEVEL4EQU0AFH;亮度等級5
    LEVEL5EQU0BFH;亮度等級4
    LEVEL6EQU0CFH;亮度等級3
    LEVEL7EQU0DFH;亮度等級2
    LEVEL8EQU0EFH;亮度等級1
    LEVEL9EQU0FFH;亮度等級0

    PWM EQU 7FH ;PWM 賦初始值

    LED_RAMEQU30H
    IRCOM EQU 50H;50H-53H IR 使用
    IR_NEWEQU 60H;新的遙控代碼值用

    LED_PORTEQUP1 ;數碼管接口,共陰極
    PWM_OUT EQU P3.0 ;輸出接口
    INCKEY EQU P3.5 ;K1,PWM 值增加鍵。
    DECKEY EQU P3.4 ;K2,PWM 值減小鍵。
    BEEP EQU P3.1 ;蜂鳴器
    IRINEQU P3.2

    ;---------------------------
    ORG 0000H
    SJMP START
    ORG 0003H
    LJMP REMOT;IRF
    ORG 000BH
    SJMP INTT0
    ORG 001BH
    SJMP INTT1
    ORG 0030H
    ;---------------------------
    ;主程序
    ;定時器0 工作在模式1,定時器1 工作在模式2。
    ;---------------------------

    START:
    MOV SP,#30H
    MOV TMOD,#21H
    MOV IP,#00001010B
    MOV TH1,PWM ;脈寬調節
    MOV TL1,#00H

    MOV TH0,#0FEH ;1ms 延時常數0FC
    MOV TL0,#0CH ;頻率調節066

    SETB EA;開總中斷
    SETB ET0 ;定時器0允許
    SETB ET1 ;定時器1允許
    SETB TR0 ;定時器0啟動
    SETB EX0;外中斷0打開
    SETB IT0;外中斷0采用脈沖方式 ;
    LOOP:
    LCALL DISPLAY
    MOV A,PWM ;
    JB INCKEY,LOOP1 ;增加鍵是否按下?
    CALL DELAY ;延時去抖動
    JB INCKEY,LOOP1
    CJNE A,#0FFH,PWMINC ;是否到最大值?
    CALL BEEP_BL ;是,蜂鳴器報警。
    SJMP LOOP

    PWMINC: INC PWM ;調節脈寬(脈寬減小)
    SJMP LOOP

    LOOP1: JB DECKEY,LOOP2 ;減小鍵是否按下?
    CALL DELAY ;延時去抖動
    JB DECKEY,LOOP2
    CJNE A,#01H,PWMDEC ;是否到最小值?
    CALL BEEP_BL ;是,蜂鳴器報警。
    SJMP LOOP

    PWMDEC: DEC PWM ;調節脈寬(脈寬增加)
    LOOP2: SJMP LOOP

    ;-----------------------------
    ;T0 中斷服務子程序(頻率)
    ;控制定時器1 中斷
    ;-----------------------------
    INTT0:
    CLR TR1
    MOV TH0,#0FEH ;1ms 延時常數
    MOV TL0,#0CH ;頻率調節
    MOV TH1,PWM
    SETB TR1
    CLR PWM_OUT ;啟動輸出
    RETI

    ;-----------------------------
    ;T1 中斷服務子程序(脈寬)
    ;控制PWM 脈沖寬度
    ;-----------------------------
    INTT1:
    CLR TR1 ;脈寬調節結束
    SETB PWM_OUT ;結束輸出
    RETI

    ;-----------------------------
    ;************************有接收到遙控器信號*******
    REMOT:
    CLR EA
    PUSH ACC
    PUSH PSW
    SETB PSW.3;選擇工作寄存器組1(SETB PSW.3)
    CLR PSW.4; (CLR PSW.4)
    MOV R0,#IRCOM
    I1: JNB IRIN,I2 ;等待IR 信號出現
    JMP IR_SHOW1;I1;原值I1
    I2: MOV R4,#20
    I20: CALL DEL
    DJNZ R4,I20
    JB IRIN,IR_SHOW1;I1 ;確認IR 信號出現
    I21: JB IRIN,I3 ;等IR 變為高電平
    CALL DEL
    JMP I21
    I3: MOV R3,#0 ;8 位數清為0
    LL:JNB IRIN,I4 ;等IR 變為低電平
    CALL DEL
    JMP LL
    I4: JB IRIN,I5 ;等IR 變為高電平
    CALL DEL
    JMP I4
    I5: MOV R2,#0 ;0.14ms 計數
    L1: CALL DEL
    JB IRIN, N1 ;等IR 變為高電平;IR=0,檢查R2 中的計數值
    MOV A,#8
    CLR C
    SUBB A,R2 ;判斷高低位;IF C=0 BIT=0
    MOV A,@R0
    RRC A
    MOV @R0,A ;處理完一位
    INC R3
    CJNE R3,#8,LL ;需處理完8 位
    MOV R3,#0
    INC R0
    CJNE R0,#54H,LL ;收集到4 字節了
    JMP IR_SHOW
    N1: INC R2
    CJNE R2,#30,L1 ;30--0.14ms 計數過長則時間到自動離開
    JMP IR_SHOW1

    pwm相關文章:pwm原理


    蜂鳴器相關文章:蜂鳴器原理
    紅外遙控器相關文章:紅外遙控器原理

    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 博爱县| 铜鼓县| 土默特右旗| 德州市| 鹤壁市| 崇州市| 科尔| 蒙自县| 盘山县| 邹平县| 和龙市| 桃江县| 余庆县| 炎陵县| 浦江县| 江源县| 扶风县| 肇庆市| 建水县| 锦屏县| 舞钢市| 哈密市| 四平市| 长顺县| 若尔盖县| 云南省| 会东县| 泰宁县| 吴忠市| 沅江市| 综艺| 安阳市| 仲巴县| 阜南县| 阿巴嘎旗| 固原市| 桦川县| 平昌县| 郧西县| 嘉定区| 扬中市|