單片機(jī)
原理圖怎么畫?。縄/O接口怎么連接?
普通電風(fēng)扇電機(jī)一般用調(diào)相法調(diào)速,對(duì)于象電加熱器之類熱慣量較大的,還可用調(diào)功 法來調(diào)溫,即控制每秒內(nèi)正弦波形個(gè)數(shù).
調(diào)功 法當(dāng)每秒內(nèi)完整波形少于25個(gè)時(shí),平均電壓波動(dòng)較大,負(fù)載的熱慣性會(huì)起一個(gè)平衡作用,一般不低于10個(gè).但用于慣量較小的風(fēng)扇,就會(huì)有明顯的抖晃了.
調(diào)相法調(diào)速缺點(diǎn)是不能過零觸發(fā),因此干擾毛刺較大.而調(diào)**可過零觸發(fā),干擾很小.
下面是俺以前做過的一個(gè)小產(chǎn)品,可參考一下.
lc.sch → http://bbs.21ic.com/upfiles/img/200711/2007112282813673.rar
lc.asm → http://bbs.21ic.com/upfiles/img/200711/200711228352463.rar
;
; ┏━━━━━━━━━━━┓
; ┃┏━━━━━━━━━┓┃
; ┃┃無線遙控開關(guān)接收器┃┃
; ┃┃ 源程序 ┃┃
; ┃┃ V1.0 01.03.18 ┃┃
; ┃┗━━━━━━━━━┛┃
; ┗━━━━━━━━━━━┛
;
ORG 0000H
AJMP CSH ;主程序進(jìn)入點(diǎn)
ORG 0003H
LJMP WT0 ;外部中斷WT0入口
ORG 000BH
AJMP TI0 ;定時(shí)中斷T0入口
ORG 001BH
AJMP TI1 ;定時(shí)中斷T1入口
;
;**********
;* 初始化 *
;**********
;
ORG 0020H
CSH: MOV R0,#7FH ;內(nèi)部RAM(00H~7FH)清零
CSH1: MOV @R0,#00H
DJNZ R0,CSH1
MOV SP,#60H ;堆棧60H~7FH,【使用89C2051】
MOV TMOD,#00010010B ;T0作8位計(jì)數(shù)器 (自動(dòng)裝入),T1作16位計(jì)數(shù)器
MOV TH0,#155 ;FFH-9BH=100D,12M/12/100D=10000HZ(100us)
MOV TH1,#0ECH ;FFFFH-1388H=EC77H
MOV TL1,#77H ;T1頻率為12M/12/5000D=200HZ(5ms)
;
SETB TCON.4 ;T0開始動(dòng)作
SETB IE.1 ;T0允許中斷
SETB TCON.6 ;T1開始動(dòng)作
SETB IE.3 ;T1開始中斷
SETB IE.0 ;INT0允許中斷
SETB TCON.0 ;INT0低電平觸發(fā)
SETB PT0 ;T0中斷優(yōu)先
SETB IE.7 ;系統(tǒng)允許中斷
;
MOV 46H,#03
LCALL BEL
;
CLR 24H ;24.4H←"0"開一短鍵標(biāo)志復(fù)位(關(guān))
CLR 26H ;24.6H←"0"開一短鍵標(biāo)志復(fù)位(關(guān))
MOV 30H,#85 ;調(diào)相上電初始亮度(最暗)
MOV 31H,#02 ;調(diào)功上電初始亮度(最暗)
;
;**********
;* 主程序 *
;**********
;
MAIN: NOP
LCALL JS ;調(diào)用PT2272解碼信號(hào)接收子程序
LCALL DTCL ;調(diào)用PT2272解碼信號(hào)處理子程序
LJMP MAIN
;
;**********************
;* PT2272解碼信號(hào)接收 *
;**********************
;
JS: JNB P1.2,JS5 ;P1.2="0",解碼信號(hào)無效,轉(zhuǎn)JS5
;
JNB P1.4,JS2 ;不是調(diào)相鍵,轉(zhuǎn)JS2繼續(xù)
SETB 0AH ;調(diào)相鍵有效標(biāo)志置位
JS2: JNB P1.5,JS3 ;不是調(diào)功鍵,轉(zhuǎn)JS3繼續(xù)
SETB 0BH ;調(diào)功鍵有效標(biāo)志置位
JS3: JNB P1.6,JS4 ;不是開一鍵,轉(zhuǎn)JS4繼續(xù)
SETB 0CH ;開一鍵有效標(biāo)志置位
JS4: JNB P1.7,JS0 ;不是開二鍵,轉(zhuǎn)JS0出口
SETB 0DH ;開二鍵有效標(biāo)志置位
JS0: RET
;
JS5: CLR 0AH ;調(diào)相鍵有效標(biāo)志復(fù)位
CLR 0BH ;調(diào)功鍵有效標(biāo)志復(fù)位
CLR 0CH ;開一鍵有效標(biāo)志復(fù)位
CLR 0DH ;開二鍵有效標(biāo)志復(fù)位
RET
;
;*************************************
;* 解碼信號(hào)處理 *
;*-----------------------------------*
;* 【調(diào)相鍵】 P14H="1"鍵按下 *
;* 【調(diào)功鍵】 P15H="1"鍵按下 *
;* 【開一鍵】 P16H="1"鍵按下 *
;* 【開二鍵】 P17H="1"鍵按下 *
;*-----------------------------------*
;* 短鍵作開、關(guān)用 *
;* 長(zhǎng)鍵作控制用(="0"減低,="1"增高) *
;*************************************
;
DTCL: JB 06H,TXK3 ;轉(zhuǎn)TXK3,檢查調(diào)相長(zhǎng)鍵有否放開?
JB 11H,TXK2 ;正在作調(diào)相短鍵定時(shí),轉(zhuǎn)TXK2
JNB 0AH,DTL1 ;不是調(diào)相鍵,轉(zhuǎn)DTL1繼續(xù)
;**************
;* 調(diào)相鍵處理 *
;**************
JB 10H,TXK1 ;正在作調(diào)相鍵按下消抖動(dòng)延時(shí),轉(zhuǎn)TXK1
SETB 10H ;22.0H←"1",調(diào)相鍵消抖動(dòng)延時(shí)標(biāo)志置位
MOV 54H,#10 ;設(shè)置30ms鍵按下消抖動(dòng)延時(shí)
TXK1: MOV A,54H
CJNE A,#00,TXK0 ;30ms定時(shí)未到,轉(zhuǎn)TXK0出口
CLR 10H ;10H←"0",調(diào)相鍵消抖動(dòng)延時(shí)標(biāo)志復(fù)位
JNB 0AH,TXK0 ;無效鍵入,轉(zhuǎn)TXK0出口
LCALL BEL1 ;蜂鳴一次
SETB 11H ;11H←"1",調(diào)相長(zhǎng)鍵定時(shí)已設(shè)置標(biāo)志置位
MOV 54H,#80 ;設(shè)置400ms長(zhǎng)鍵定時(shí)
TXK2: MOV A,54H
CJNE A,#00,TXK4 ;400ms長(zhǎng)鍵定時(shí)未到,轉(zhuǎn)TXK4檢查有否放鍵
JB 20H,TXK5 ;20H="1",調(diào)相短鍵已打開
SETB 20H ;打開調(diào)相短鍵
MOV A,30H
SETB 21H ;30H<"50",蠻亮了,設(shè)置調(diào)暗方向
CJNE A,#50,TXK6
TXK6: JC TXK5
CLR 21H ;30H≥"50",蠻暗了,設(shè)置調(diào)亮方向
TXK5: CPL 21H ;21H←"X"調(diào)相長(zhǎng)鍵標(biāo)志取反
SETB 06H ;06H←"1",調(diào)相長(zhǎng)鍵標(biāo)志置位
MOV 46H,#01 ;長(zhǎng)鍵蜂鳴
LCALL BEL
TXK3: JB 0AH,TXK0 ;>400ms,鍵未放,保持長(zhǎng)鍵,轉(zhuǎn)TXK0
CLR 11H ;11H←"1",調(diào)相長(zhǎng)鍵定時(shí)已設(shè)置標(biāo)志復(fù)位
CLR 06H ;06H←"0",調(diào)相長(zhǎng)鍵標(biāo)志復(fù)位
TXK0: RET
;
TXK4: JB 0AH,TXK0 ;調(diào)相鍵未放,轉(zhuǎn)TXK0
;************************
;* <400ms就放鍵,是短鍵 *
;************************
CPL 20H ;20H←"X"調(diào)相短鍵標(biāo)志取反
CLR 11H ;11H←"1",調(diào)相長(zhǎng)鍵定時(shí)已設(shè)置標(biāo)志復(fù)位
RET
;
DTL1: JB 07H,TGK3 ;轉(zhuǎn)TGK3,檢查調(diào)功長(zhǎng)鍵有否放開?
JB 13H,TGK2 ;正在作調(diào)功短鍵定時(shí),轉(zhuǎn)TGK2
JNB 0BH,DTL2 ;不是調(diào)功鍵,轉(zhuǎn)DTL2繼續(xù)
;**************
;* 調(diào)功鍵處理 *
;**************
JB 12H,TGK1 ;正在作調(diào)功鍵按下消抖動(dòng)延時(shí),轉(zhuǎn)TGK1
SETB 12H ;12H←"1",調(diào)功鍵消抖動(dòng)延時(shí)標(biāo)志置位
MOV 54H,#10 ;設(shè)置10ms鍵按下消抖動(dòng)延時(shí)
TGK1: MOV A,54H
CJNE A,#00,TGK0 ;10ms定時(shí)未到,轉(zhuǎn)TGK0出口
CLR 12H ;12H←"0",調(diào)功鍵消抖動(dòng)延時(shí)標(biāo)志復(fù)位
JNB 0BH,TGK0 ;無效鍵入,轉(zhuǎn)TGK0出口
SETB 13H ;13H←"1",調(diào)功長(zhǎng)鍵定時(shí)已設(shè)置標(biāo)志置位
LCALL BEL1 ;蜂鳴一次
MOV 54H,#80 ;設(shè)置400ms長(zhǎng)鍵定時(shí)
TGK2: MOV A,54H
CJNE A,#00,TGK4 ;400ms長(zhǎng)鍵定時(shí)未到,轉(zhuǎn)TGK4檢查有否放鍵
JB 22H,TGX5
SETB 22H ;打開調(diào)功短鍵
MOV A,31H
CLR 23H ;31H≥"25",蠻暗了,設(shè)置調(diào)亮方向
CJNE A,#12,TGX6
TGX6: JC TGX5
SETB 23H ;31H<"25",蠻亮了,設(shè)置調(diào)暗方向
TGX5: CPL 23H ;23H←"X"調(diào)功長(zhǎng)鍵標(biāo)志取反
SETB 07H ;07H←"1",調(diào)功長(zhǎng)鍵標(biāo)志置位
MOV 46H,#01 ;蜂鳴二次
LCALL BEL
TGK3: JB 0BH,TGK0 ;>400ms,鍵未放,保持長(zhǎng)鍵,轉(zhuǎn)TGK0
CLR 13H ;13H←"1",調(diào)功長(zhǎng)鍵定時(shí)已設(shè)置標(biāo)志復(fù)位
CLR 07H ;07H←"0",調(diào)功長(zhǎng)鍵標(biāo)志復(fù)位
TGK0: RET
;
TGK4: JB 0BH,TGK0 ;調(diào)功鍵未放,轉(zhuǎn)TGK0
;************************
;* <400ms就放鍵,是短鍵 *
;************************
CPL 22H ;22H←"X"調(diào)功短鍵標(biāo)志取反
CLR 13H ;13H←"0",調(diào)功長(zhǎng)鍵定時(shí)已設(shè)置標(biāo)志復(fù)位
RET
;
DTL2: JB 08H,K1C2
JNB 0CH,DTL3 ;不是開一鍵,轉(zhuǎn)DTL3繼續(xù)
;**************
;* 開一鍵處理 *
;**************
JB 14H,K1C1 ;正在作開一鍵按下消抖動(dòng)延時(shí),轉(zhuǎn)K1C1
SETB 14H ;22.4H←"1",開一鍵消抖動(dòng)延時(shí)標(biāo)志置位
MOV 54H,#10 ;設(shè)置30ms鍵按下消抖動(dòng)延時(shí)
K1C1: MOV A,54H
CJNE A,#00,K1C0 ;30ms定時(shí)未到,轉(zhuǎn)K1C0出口
CLR 14H ;22.4H←"0",開一鍵消抖動(dòng)延時(shí)標(biāo)志復(fù)位
JNB 0CH,K1C0 ;無效鍵入,轉(zhuǎn)K1C0出口
LCALL BEL1 ;蜂鳴一次
SETB 08H ;禁止開一鍵連續(xù)蜂鳴
CPL 24H ;24.4H←"X"開一短鍵標(biāo)志取反
K1C2: JB 0CH,K1C0 ;鍵未放,轉(zhuǎn)K1C0
CLR 08H ;允許開一鍵蜂鳴
K1C0: RET
;
DTL3: JB 09H,K2C2
JNB 0DH,K2C0 ;不是開二鍵,轉(zhuǎn)K2C0出口
;**************
;* 開二鍵處理 *
;**************
JB 16H,K2C1 ;正在作開二鍵按下消抖動(dòng)延時(shí),轉(zhuǎn)K2C1
SETB 16H ;22.6H←"1",開二鍵消抖動(dòng)延時(shí)標(biāo)志置位
MOV 54H,#10 ;設(shè)置30ms鍵按下消抖動(dòng)延時(shí)
K2C1: MOV A,54H
CJNE A,#00,K2C0 ;30ms定時(shí)未到,轉(zhuǎn)K2C0出口
CLR 16H ;22.6H←"0",開二鍵消抖動(dòng)延時(shí)標(biāo)志復(fù)位
JNB 0DH,K2C0 ;無效鍵入,轉(zhuǎn)K2C0出口
SETB 09H ;禁止開二鍵連續(xù)蜂鳴
LCALL BEL1 ;蜂鳴一次
CPL 26H ;24.6H←"X"開二短鍵標(biāo)志取反
K2C2: JB 0DH,K2C0 ;鍵未放,轉(zhuǎn)K2C0
CLR 09H ;允許開二鍵蜂鳴
K2C0: RET
;
;********
;* 蜂鳴 *
;********
;
BEL1: MOV 46H,#01
BEL: SETB 01H ;允許蜂鳴
MOV 38H,#30 ;150ms蜂鳴定時(shí)
RET
;
;***************************
;* 100us時(shí)標(biāo)T0定時(shí)中斷處理 *
;***************************
;
TI0: PUSH PSW ;PSW進(jìn)棧
SETB PSW.3 ;RS0←"1"
CLR PSW.4 ;RS1←"0",選工作寄存區(qū)1(R08H ̄R0FH)
PUSH ACC
CPL P3.1
MOV R1,#04 ;需延時(shí)計(jì)數(shù)器字節(jié)
MOV R0,#50H ;延時(shí)計(jì)數(shù)器R50H~R53H
DY2: MOV A,@R0 ;讀計(jì)數(shù)值
JZ DY1 ;=0?是轉(zhuǎn)DY1處理下一位
DEC @R0 ;計(jì)數(shù)器減一
DY1: INC R0 ;計(jì)數(shù)器指針加一
DJNZ R1,DY2 ;3字節(jié)到?
;*************************************
;* 調(diào)相滯后觸發(fā)處理 (脈寬0.1ms) *
;* 40H裝載當(dāng)前調(diào)相觸發(fā)滯后時(shí)間值 *
;* 40H每0.1ms減一,(40H最大為100) *
;* 40H="01"時(shí)P3.7←"0",觸發(fā)脈沖前沿 *
;* 40H="00"時(shí)P3.7←"1",觸發(fā)脈沖后沿 *
;*************************************
JNB 20H,TCL0 ;20H="0",調(diào)相輸出關(guān)
JNB 30H,TCL0 ;30H="0",電壓未過零,禁止調(diào)相觸發(fā)定時(shí)
JB 04H,TCL1
MOV 40H,30H ;取出30H當(dāng)前調(diào)相觸發(fā)滯后時(shí)間值
SETB 04H ;20.4H←"1",滯后觸發(fā)已置初值
TCL1: DEC 40H ;當(dāng)前調(diào)相觸發(fā)滯后時(shí)間值減0.1ms
MOV A,40H
CJNE A,#01,TCL2
CLR P3.7 ;P3.7←"0",調(diào)相觸發(fā)脈沖前沿(脈寬0.1ms)
TCL0: POP ACC ;ACC出棧
POP PSW ;PSW出?!净謴?fù)進(jìn)棧前寄存器區(qū)】
RETI ;中斷返回
;
TCL2: CJNE A,#00,TCL0
CLR 04H ;04H←"0",觸發(fā)定時(shí)器允許重置初值
CLR 30H ;30H←"0",禁止調(diào)相觸發(fā)定時(shí)
SETB P3.7 ;P3.7←"1",調(diào)相觸發(fā)脈沖后沿
SJMP TCL0 ;出中斷
;
;*************************
;* 5ms時(shí)標(biāo)T1定時(shí)中斷處理 *
;*************************
;
TI1: MOV TH1,#0ECH ;FFFFH-1388H=EC77H
MOV TL1,#77H ;T0頻率為12M/12/5000D=1388H=200HZ(5ms)
PUSH PSW ;PSW進(jìn)棧
CLR PSW.3 ;RS0←"0"
SETB PSW.4 ;RS1←"1",選工作寄存區(qū)2(R10H ̄R17H)
PUSH ACC
;
CPL P3.0 ;看門狗定時(shí)100Hz(10ms)
;
MOV R1,#02 ;需延時(shí)計(jì)數(shù)器字節(jié)
MOV R0,#54H ;延時(shí)計(jì)數(shù)器R54H~R55H
DY4: MOV A,@R0 ;讀計(jì)數(shù)值
JZ DY3 ;=0?是轉(zhuǎn)DY1處理下一位
DEC @R0 ;計(jì)數(shù)器減一
DY3: INC R0 ;計(jì)數(shù)器指針加一
DJNZ R1,DY4 ;3字節(jié)到?
;****************
;* 蜂鳴定時(shí)處理 *
;****************
JB 05H,TT9 ;05H="1",正在作關(guān)蜂鳴定時(shí),轉(zhuǎn)TT9
JB 02H,TT9K ;02H="1",正在作開蜂鳴定時(shí),轉(zhuǎn)TT9K
JNB 01H,TT8 ;01H="0",禁止蜂鳴處理,轉(zhuǎn)TT8繼續(xù)
CLR P1.3 ;開蜂鳴
SETB 02H ;02H←"1",開蜂鳴定時(shí)
TT9K: DEC 38H ;蜂鳴10ms計(jì)數(shù)器減一
MOV A,38H ;取出蜂鳴10ms計(jì)數(shù)器
CJNE A,#10,TT8 ;開蜂鳴100ms未到,轉(zhuǎn)TT8繼續(xù)
SETB 05H ;05H←"1",關(guān)蜂鳴定時(shí)
SETB P1.3 ;關(guān)蜂鳴
TT9: DEC 38H ;蜂鳴10ms計(jì)數(shù)器減一
MOV A,38H ;取出蜂鳴10ms計(jì)數(shù)器
CJNE A,#00,TT8 ;關(guān)蜂鳴50ms未到,轉(zhuǎn)TT8繼續(xù)
CLR 05H ;05H←"0",關(guān)蜂鳴定時(shí)標(biāo)志復(fù)位
CLR 02H ;02H←"0",開蜂鳴定時(shí)標(biāo)志復(fù)位
MOV 38H,#30 ;重置蜂鳴定時(shí)150ms常數(shù)
DJNZ 46H,TT8 ;蜂鳴次數(shù)未到,轉(zhuǎn)TT8繼續(xù)
CLR 01H ;01H←"0",禁止蜂鳴處理
;**********************************
;* 調(diào)相觸發(fā)滯后時(shí)間調(diào)整 *
;*--------------------------------*
;* 每20ms調(diào)整一檔,每檔0.1ms *
;* 半周期共調(diào)整10ms÷0.1ms=100檔 *
;* 20msX100=2s調(diào)完半程,4s調(diào)完全程 *
;**********************************
TT8: JNB 20H,DY5 ;20H="0",調(diào)相關(guān),轉(zhuǎn)DY5不調(diào)整
INC 56H ;5ms計(jì)數(shù)器加一
MOV A,56H ;取出5ms計(jì)數(shù)器值
CJNE A,#12,DY5 ;20ms未到,轉(zhuǎn)DY5出口
MOV 56H,#00
JNB 06H,DY5 ;06H="0",禁止調(diào)相,轉(zhuǎn)DY5不調(diào)整
JNB 21H,DY6 ;21H="0",轉(zhuǎn)DY6電壓調(diào)低
MOV A,30H ;取出當(dāng)前調(diào)相觸發(fā)滯后時(shí)間值
CJNE A,#08,DY7 ;30H="02",電壓最高值
SJMP DY5 ;30H="0",電壓已調(diào)到最高了,轉(zhuǎn)DY5出口
;
DY7: DEC 30H ;每20ms調(diào)相觸發(fā)延時(shí)減一檔(每檔0.1ms),電壓調(diào)高
SJMP DY5
;
DY6: MOV A,30H ;取出當(dāng)前調(diào)相觸發(fā)滯后時(shí)間值
INC 30H ;每20ms調(diào)相觸發(fā)延時(shí)加一檔(每檔0.1ms),電壓調(diào)低
CJNE A,#85,DY5 ;100usX100=10ms未到,轉(zhuǎn)DY5出口
MOV 30H,#85 ;30H="97",電壓已調(diào)到最低了,不再增加
;
DY5: POP ACC ;ACC出棧
POP PSW ;PSW出棧【恢復(fù)進(jìn)棧前寄存器區(qū)】
RETI ;定時(shí)中斷返回
;
;****************
;* 外部中斷處理 *
;****************
;
WT0: PUSH PSW ;PSW進(jìn)棧
PUSH ACC ;ACC進(jìn)棧
SETB PSW.3 ;RS0←"1"
SETB PSW.4 ;RS1←"1",選工作寄存區(qū)3(R18H ̄R1FH)
;*************************
;* 電壓過零,允許調(diào)相觸發(fā) *
;*************************
JNB 20H,TOFF1 ;20H="0",調(diào)相關(guān),轉(zhuǎn)TOFF1
SETB 30H ;30H←"1",電壓過零,允許調(diào)相觸發(fā)定時(shí)
;********************
;* 調(diào)功周期觸發(fā)處理 *
;********************
TOFF1: JNB 22H,TOFF2 ;22H="0",調(diào)功關(guān),轉(zhuǎn)TOFF2
INC 33H ;21H="0",當(dāng)前周期觸發(fā)步進(jìn)定時(shí)計(jì)數(shù)器加一
MOV A,33H ;讀取當(dāng)前周期觸發(fā)步進(jìn)定時(shí)計(jì)數(shù)器
CJNE A,#50,TF13 ;未到250ms設(shè)定數(shù)
MOV 33H,#01 ;周期觸發(fā)脈沖計(jì)數(shù)器清"0"
;**************************
;* 周期觸發(fā)脈沖數(shù)調(diào)整環(huán)節(jié) *
;**************************
JNB 07H,TF13 ;07H="0",禁止調(diào)功,轉(zhuǎn)TF13直接觸發(fā)
MOV A,31H ;讀取開周期計(jì)數(shù)器
JB 23H,TF12 ;23H="1",遞增
DEC 31H ;開周期計(jì)數(shù)器減一
CJNE A,#02,TF13 ;未到開周期設(shè)定數(shù)下限(20%)
MOV 31H,#02 ;到設(shè)定數(shù)下限,不再減少
SJMP TF13
TF12: INC 31H ;開周期計(jì)數(shù)器加一
CJNE A,#20,TF13 ;未到開周期設(shè)定數(shù)上限(100%)
MOV 31H,#20 ;到設(shè)定數(shù)上限,不再增加
;****************
;* 周期脈沖觸發(fā) *
;****************
TF13: MOV A,32H ;讀取周期觸發(fā)脈沖計(jì)數(shù)器
INC 32H ;21H="0",調(diào)功觸發(fā)計(jì)數(shù)器加一
JB 29H,TF10
CLR 29H ;29H←"0",當(dāng)前周期觸發(fā)開
CJNE A,31H,TF10 ;未到開周期設(shè)定數(shù)
SETB 29H ;29H←"1",當(dāng)前周期觸發(fā)關(guān)
TF10: CJNE A,#20,TF11 ;未到周期
MOV 32H,#00 ;加載周期觸發(fā)脈沖計(jì)數(shù)器
CLR 29H ;29H←"0",當(dāng)前周期觸發(fā)開
;
TF11: JB 29H,TOFF2 ;29H="1",調(diào)功間隙,禁止觸發(fā)
CLR P3.3 ;P3.3←"0",調(diào)功觸發(fā)脈沖前沿
;
TOFF2: JNB 24H,TOFF3 ;24H="0",開1關(guān),轉(zhuǎn)TOFF3
CLR P3.4 ;P3.4←"0",開1觸發(fā)脈沖前沿
;
TOFF3: JNB 26H,TOFF4 ;26H="0",開2關(guān),轉(zhuǎn)TOFF4
CLR P3.5 ;P3.5←"0",開2觸發(fā)脈沖前沿
;
TOFF4: MOV R7,#50 ;設(shè)置100us觸發(fā)脈寬軟件延時(shí)
WAIT: DJNZ R7,WAIT ;產(chǎn)生100us觸發(fā)脈寬
SETB P3.3 ;P3.3←"1",調(diào)功觸發(fā)脈沖后沿
SETB P3.4 ;P3.4←"1",開1觸發(fā)脈沖后沿
SETB P3.5 ;P3.5←"1",開2觸發(fā)脈沖后沿
;
POP ACC ;ACC出棧
POP PSW ;PSW出棧=【恢復(fù)進(jìn)棧前寄存器區(qū)】
RETI ;外部中斷返回
;
END