?? 1實現賽題要求.txt
字號:
;*****************************
;*函數功能:烘手機 *
;熱釋電 RSD
;紅外 HONGW
;燈泡 DENGPAO
;PWM信號的高電平長度 PWMH
;PWM信號的周期長度 PWMT
;*****************************
RSD BIT P3.6
HONGW BIT P3.7
DENGPAO BIT P3.5
PWM BIT P1.6
PWMH EQU 60H
PWMT EQU 61H
COUNT EQU 62H
K1 BIT P1.0
K2 BIT P1.1
K3 BIT P1.2
K4 BIT P1.3
K5 BIT P1.4
K6 BIT P1.5
ORG 0000H
AJMP MAIN
ORG 000BH
LJMP TIME0
ORG 0030H
MAIN: MOV COUNT,#1
MOV PWMT,#100 ;設PWM信號一個周期的總長度為100
MOV TMOD,#01H
SETB EA
SETB ET0
MOV TH0,#0FFH
MOV TL0,#50H
MOV P3,#00H
MOV DPTR,#TABLE
;*****************************
;* 主函數 *
;*****************************
PANDUAN:JB RSD,YHWM ;熱釋電為1,則判斷是否有紅外
MOV A,#0
LCALL DISPLAY
AJMP PANDUAN
YHWM:JNB HONGW,PANDUAN
JIANCE:JNB K1,D1 ;檢測冷.熱風,判斷K1\K2是否有一個被按下
JNB K2,D2
AJMP JIANCE
D1:LCALL DL ;按鍵延時
JB K1,JIANCE ;K1是否真按下,否,則重新判斷
MOV R0,#4
CLR DENGPAO
LCALL FENGSU ;K1按下,繼續判斷風速
RE1:LCALL DISPLAY_L
JNB K1,D1
JNB K2,D2
JNB RSD,RE1 ;熱釋電為1,則判斷是否有紅外
CLR PWM ;若人走開,則停止吹風
CLR TR0
AJMP PANDUAN
D2:LCALL DL
JB K2,JIANCE
SETB DENGPAO
MOV R0,#5
LCALL FENGSU
RE2:LCALL DISPLAY_L
JNB K1,D1
JNB K2,D2
JNB RSD,RE2 ;熱釋電為1,則判斷是否有紅外
CLR DENGPAO
CLR PWM
CLR TR0
AJMP PANDUAN
TIME0:INC COUNT
MOV A,COUNT
CJNE A,PWMH,RETIME ;維持PWM信號的高電平到高電平的設定值
CPL PWM ;到設定植后,PWM電平取反
RETIME:CJNE A,PWMT,EXIT ;保持取反后的電平,直到PWM信號周期的總長度后再取反
CPL PWM
MOV COUNT,#1
EXIT:MOV TH0,#0FFH ;定時10MS
MOV TL0,#50H
RETI
;*****************************
;* 判斷風速子程序 *
;*****************************
FENGSU: JNB K3,DISU ;判斷采用哪種風速
JNB K4,ZHONGSU
JNB K5,GAOSU
AJMP FENGSU
DISU: LCALL DL
JB K3,FENGSU ;低速鍵是否按下
MOV R1,#1 ;低速鍵按下,則顯示L001
LCALL QUEDING ;確定鍵是否按下
MOV PWMH,#10
SETB TR0
RET
ZHONGSU:LCALL DL
JB K4,FENGSU ;中速鍵是否按下
MOV R1,#2 ;中速鍵按下,則顯示L002
LCALL QUEDING ;確定鍵是否按下
MOV PWMH,#50
SETB TR0
RET
GAOSU: LCALL DL
JB K5,FENGSU
MOV R1,#3 ;高速鍵按下,則顯示L003
LCALL QUEDING ;確定鍵是否按下
RET
QUEDING:JB K6,QUEDING ;確定鍵判斷程序
LCALL DL
JB K6,QUEDING
MOV PWMH,#90
SETB TR0
RET
;*****************************
;* 顯示子程序 *
;*****************************
DISPLAY:MOVC A,@A+DPTR ;顯示0000和1111的程序
MOV P0,A
MOV P2,#0F0H
RET
DISPLAY_L:MOV A,R1 ;顯示最后一位,即風速檔1\2\3
MOVC A,@A+DPTR
MOV P0,A
MOV P2,#0FEH
LCALL DELAY
MOV P2,#0FFH
MOV A,#0 ;顯示中間兩位00
MOVC A,@A+DPTR
MOV P0,A
MOV P2,#0F9H
LCALL DELAY
MOV P2,#0FFH
MOV A,R0 ;顯示冷.熱風,L\M
MOVC A,@A+DPTR
MOV P0,A
MOV P2,#0F7H
LCALL DELAY
MOV P2,#0FFH
RET
;*****************************
;* 延時子程序 *
;*****************************
DL:MOV R6,#2 ;按鍵延時
D3:MOV R7,#10
DJNZ R7,$
DJNZ R6,D3
RET
DELAY:MOV R6,#20 ;顯示延時
D4:MOV R7,#20
DJNZ R7,$
DJNZ R6,D4
RET
;*****************************
;* 共陰斷碼 *
;*****************************
TABLE: DB 3FH,06H,5BH,4FH,38H,76H ;對應0、1、2、3、L、H
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -