PWM控制LED臺(tái)燈程序帶紅外遙控
;/*************************************************
;* 標(biāo)題: LED臺(tái)燈程序*
;* 文件: LED臺(tái)燈PWM控制帶紅外遙控.asm *
;* 日期: 2008-12-18 *
;* 版本: 1.0*
;* 作者: *
;****************************************************
; LED臺(tái)燈程序帶有紅外遙控功能*
; 利用定時(shí)器控制產(chǎn)生占空比可變的PWM 波*
; 按K1,PWM 值增加,則占空比減小,LED 燈漸暗。*
; 按K2,PWM 值減小,則占空比增加,LED 燈漸亮。*
; 我的5644遙控器上的0~9數(shù)字鍵對(duì)應(yīng)10個(gè)亮度等級(jí)。*
; 當(dāng)PWM 值增加到最大值或減小到最小值時(shí),蜂鳴器將報(bào)警*
; 資源:p1 口,數(shù)碼管。p3.4,p3.5 亮度控制按鍵P3.0 PWM端口,p3.1 蜂鳴器報(bào)警*
;*********************************************************
LEVEL0EQU2FH;亮度等級(jí)9
LEVEL1EQU4FH;亮度等級(jí)8
LEVEL2EQU6FH;亮度等級(jí)7
LEVEL3EQU8FH;亮度等級(jí)6
LEVEL4EQU0AFH;亮度等級(jí)5
LEVEL5EQU0BFH;亮度等級(jí)4
LEVEL6EQU0CFH;亮度等級(jí)3
LEVEL7EQU0DFH;亮度等級(jí)2
LEVEL8EQU0EFH;亮度等級(jí)1
LEVEL9EQU0FFH;亮度等級(jí)0
PWM EQU 7FH ;PWM 賦初始值
LED_RAMEQU30H
IRCOM EQU 50H;50H-53H IR 使用
IR_NEWEQU 60H;新的遙控代碼值用
LED_PORTEQUP1 ;數(shù)碼管接口,共陰極
PWM_OUT EQU P3.0 ;PWM控制輸出接口
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
;---------------------------
;主程序
;定時(shí)器0 工作在模式1,定時(shí)器1 工作在模式2。
;---------------------------
START:
MOV SP,#30H
MOV TMOD,#21H
MOV IP,#00001010B
MOV TH1,PWM ;脈寬調(diào)節(jié)
MOV TL1,#00H
MOV TH0,#0FEH ;1ms 延時(shí)常數(shù)0FC
MOV TL0,#0CH ;頻率調(diào)節(jié)066
SETB EA;開總中斷
SETB ET0 ;定時(shí)器0允許
SETB ET1 ;定時(shí)器1允許
SETB TR0 ;定時(shí)器0啟動(dòng)
SETB EX0;外中斷0打開
SETB IT0;外中斷0采用脈沖方式 ;
LOOP:
LCALL DISPLAY
MOV A,PWM ;
JB INCKEY,LOOP1 ;增加鍵是否按下?
CALL DELAY ;延時(shí)去抖動(dòng)
JB INCKEY,LOOP1
CJNE A,#0FFH,PWMINC ;是否到最大值?
CALL BEEP_BL ;是,蜂鳴器報(bào)警。
SJMP LOOP
PWMINC: INC PWM ;調(diào)節(jié)脈寬(脈寬減小)
SJMP LOOP
LOOP1: JB DECKEY,LOOP2 ;減小鍵是否按下?
CALL DELAY ;延時(shí)去抖動(dòng)
JB DECKEY,LOOP2
CJNE A,#01H,PWMDEC ;是否到最小值?
CALL BEEP_BL ;是,蜂鳴器報(bào)警。
SJMP LOOP
PWMDEC: DEC PWM ;調(diào)節(jié)脈寬(脈寬增加)
LOOP2: SJMP LOOP
;-----------------------------
;T0 中斷服務(wù)子程序(頻率)
;控制定時(shí)器1 中斷
;-----------------------------
INTT0:
CLR TR1
MOV TH0,#0FEH ;1ms 延時(shí)常數(shù)
MOV TL0,#0CH ;頻率調(diào)節(jié)
MOV TH1,PWM
SETB TR1
CLR PWM_OUT ;啟動(dòng)輸出
RETI
;-----------------------------
;T1 中斷服務(wù)子程序(脈寬)
;控制PWM 脈沖寬度
;-----------------------------
INTT1:
CLR TR1 ;脈寬調(diào)節(jié)結(jié)束
SETB PWM_OUT ;結(jié)束輸出
RETI
;-----------------------------
;************************有接收到遙控器信號(hào)*******
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 信號(hào)出現(xiàn)
JMP IR_SHOW1;I1;原值I1
I2: MOV R4,#20
I20: CALL DEL
DJNZ R4,I20
JB IRIN,IR_SHOW1;I1 ;確認(rèn)IR 信號(hào)出現(xiàn)
I21: JB IRIN,I3 ;等IR 變?yōu)楦唠娖?BR>CALL DEL
JMP I21
I3: MOV R3,#0 ;8 位數(shù)清為0
LL:JNB IRIN,I4 ;等IR 變?yōu)榈碗娖?BR>CALL DEL
JMP LL
I4: JB IRIN,I5 ;等IR 變?yōu)楦唠娖?BR>CALL DEL
JMP I4
I5: MOV R2,#0 ;0.14ms 計(jì)數(shù)
L1: CALL DEL
JB IRIN, N1 ;等IR 變?yōu)楦唠娖?IR=0,檢查R2 中的計(jì)數(shù)值
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 字節(jié)了
JMP IR_SHOW
N1: INC R2
CJNE R2,#30,L1 ;30--0.14ms 計(jì)數(shù)過(guò)長(zhǎng)則時(shí)間到自動(dòng)離開
JMP IR_SHOW1
pwm相關(guān)文章:pwm原理
蜂鳴器相關(guān)文章:蜂鳴器原理相關(guān)推薦
-
dolphin | 2014-06-12
-
renazan2000 | 2014-03-07
-
-
-
-
-
renazan2000 | 2014-03-08
-
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論