free性丰满hd毛多多,久久综合给合久久狠狠狠97色69 ,欧美成人乱码一区二区三区,国产美女久久久亚洲综合,7777久久亚洲中文字幕

0
問答首頁 最新問題 熱門問題 等待回答標(biāo)簽廣場(chǎng)
我要提問

單片機(jī)

單片機(jī)怎么通過可控硅調(diào)節(jié)白熾燈亮度(單相交流電機(jī))

原理圖怎么畫?。縄/O接口怎么連接?

提問者:chiaho168 地點(diǎn):- 瀏覽次數(shù):4557 提問時(shí)間:10-22 15:23
我有更好的答案
提 交
1條回答
wangchao28 07-01 04:44

普通電風(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

撰寫答案
提 交
1 / 3
1 / 3
相關(guān)單片機(jī)
具有音調(diào)控制的單片機(jī)立體聲前置放大器
用于單片機(jī)與電子裝置中的開關(guān)電源
單片機(jī)軟硬件復(fù)位的條件都有啥
電動(dòng)機(jī)的單片機(jī)控制
單片機(jī)應(yīng)用系統(tǒng)開發(fā)實(shí)例導(dǎo)航