⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asm

📁 单片机的类PLC功能程序原代码,若有PLC的使用经历
💻
📖 第 1 页 / 共 3 页
字号:
                mov     fuwh5,c
                
l6wh_dif:       mov     c, acc.6                
                jnb     difuwh6,l7wh_dif
                mov     fuwh6,c
                
l7wh_dif:       mov     c, acc.7                ;;
                jnb     difuwh7,DifNew00
                mov     fuwh7,c

DifNew00:       mov     a,difwhIn0
                mov     difwhTmp0,a

;---------------------------------------------------
difW8_15:       mov     difwhOut1,#0                   ;wh
                mov     a,DifwhIn1
                xrl     a,difwhTmp1

l8wh_dif:       mov     c,acc.0
                jnb     difuwh8,l9wh_dif
                mov     fuwh8,c

l9wh_dif:       mov     c, acc.1
                jnb     difuwh9,l10wh_dif
                mov     fuwh9,c
                
l10wh_dif:      mov     c, acc.2
                jnb     difuwh10,l11wh_dif
                mov     fuwh10,c
                
l11wh_dif:      mov     c, acc.3
                jnb     difuwh11,l12wh_dif
                mov     fuwh11,c
                
l12wh_dif:      mov     c, acc.4
                jb      difdwh12,l13wh_dif
                mov     fdwh12,c
                
l13wh_dif:      mov     c, acc.5
                jnb     difuCntW1,l14wh_dif
                mov     fuCntW1,c
                
l14wh_dif:      mov     c, acc.6                
                jnb     difuCntW0,l15wh_dif
                mov     fuCntW0,c
                
l15wh_dif:       mov     c, acc.7                ;;
                jnb     difu_SFTClk,DifNew000
                mov     fu_SFTClk,c

DifNew000:      mov     a,difwhIn1
                mov     difwhTmp1,a

;-------------------------------------------------

DIF1_7:         mov     difPrgOut0,#0
                mov     a,DifPrgIn0
                xrl     a,difPrgTmp0

l0_dif:         mov     c,acc.0
                jnb     difu0,l1_dif
                mov     fu0,c

l1_dif:         mov     c, acc.1
                jnb     difu1,l2_dif
                mov     fu1,c
                
l2_dif:         mov     c, acc.2
                jnb     difu2,l3_dif
                mov     fu2,c
                
l3_dif:         mov     c, acc.3
                jnb     difu3,l4_dif
                mov     fu3,c
                
l4_dif:         mov     c, acc.4
                jnb     difu4,l5_dif
                mov     fu4,c
                
l5_dif:         mov     c, acc.5
                jnb     difu5,l6_dif
                mov     fu5,c
                
l6_dif:         mov     c, acc.6                
                jnb     difu6,l7_dif
                mov     fu6,c
                
l7_dif:         mov     c, acc.7                ;;
                jnb     difu7,DifNew0
                mov     fu7,c

DifNew0:        mov     a,difPrgIn0
                mov     difPrgTmp0,a

;-------------------------------------------------
DIF8_15:        mov     difPrgOut1,#0
                mov     a,DifPrgIn1
                xrl     a,difPrgTmp1

l8_dif:         mov     c,acc.0
                jb      difd8,l9_dif
                mov     fd8,c

l9_dif:         mov     c, acc.1
                jb      difd9,l10_dif
                mov     fd9,c
                
l10_dif:        mov     c, acc.2
                jb      difd10,l11_dif
                mov     fd10,c
                
l11_dif:        mov     c, acc.3
                jb      difd11,l12_dif
                mov     fd11,c
                
l12_dif:        mov     c, acc.4
                jnb     difuCnt0,l13_dif
                mov     FuCnt0,c
                
l13_dif:        mov     c, acc.5
                jnb     difuCnt1,l14_dif
                mov     fuCnt1,c
                
l14_dif:        mov     c, acc.6                
                jnb     difuCnt2,l15_dif
                mov     FuCnt2,c
                
l15_dif:        mov     c, acc.7                ;;
                jb      difdCnt3,DifNew1
                mov     FdCnt3,c

DifNew1:        mov     a,difPrgIn1
                mov     difPrgTmp1,a
                
                ret
;-------------------------------------------------------------------------------------
SFT:            jnb     FU_SFTClk,SFT_ret
                mov     c,SFT_D
                mov     a,SFT_Reg0
                rlc     a
                mov     SFT_Reg0,a
                mov     a,SFT_Reg1
                rlc     a
                mov     SFT_Reg1,a
                mov     SFT_BitOV,c
SFT_ret:        ret
;-------------------------------------------------------------------------------------
TimeCnterRefresh:
                mov     c,Time1Out
                anl     c,Time1Str
                mov     Time1Out,c

                mov     c,Time2Out
                anl     c,Time2Str
                mov     Time2Out,c

                mov     c,Time3Out
                anl     c,Time3Str
                mov     Time3Out,c

                mov     c,Time4Out
                anl     c,Time4Str
                mov     Time4Out,c

                mov     c,Time5Out
                anl     c,Time5Str
                mov     Time5Out,c

                mov     c,Time6Out
                anl     c,Time6Str
                mov     Time6Out,c

                mov     c,Time7Out
                anl     c,Time7Str
                mov     Time7Out,c

                mov     c,Time8Out
                anl     c,Time8Str
                mov     Time8Out,c

;--------------------------------------------------

                mov     c,Cnter0Out             
                anl     c,Cnter0Str
                mov     Cnter0Out,c

                mov     c,Cnter1Out
                anl     c,Cnter1Str
                mov     Cnter1Out,c

                mov     c,Cnter2Out
                anl     c,Cnter2Str
                mov     Cnter2Out,c

                mov     c,Cnter3Out
                anl     c,Cnter3Str
                mov     Cnter3Out,c                    

                mov     c,CnterW0Out            ;WH 
                anl     c,CnterW0Str
                mov     CnterW0Out,c

                mov     c,CnterW1Out
                anl     c,CnterW1Str
                mov     CnterW1Out,c           


                ret

;-------------------------------------------------------------------------------------
CnterInt:       jb      Cnter0Out,Cnter1Int
                mov     c,Cnter0Str
                anl     c,FuCnt0
                jnc     Cnter1Int
                djnz    Cnter0ctrL,Cnter1Int
                djnz    Cnter0ctrH,Cnter1Int
                setb    Cnter0Out

Cnter1Int:      jb      Cnter1Out,Cnter2Int
                mov     c,Cnter1Str
                anl     c,FuCnt1
                jnc     Cnter2Int
                djnz    Cnter1ctrL,Cnter2Int
                djnz    Cnter1ctrH,Cnter2Int
                setb    Cnter1Out

Cnter2Int:      jb      Cnter2Out,Cnter3Int
                mov     c,Cnter2Str
                anl     c,FuCnt2
                jnc     Cnter3Int
                djnz    Cnter2ctrL,Cnter3Int
                djnz    Cnter2ctrH,Cnter3Int
                setb    Cnter2Out

Cnter3Int:      jb      Cnter3Out,CnterW0Int
                mov     c,Cnter3Str
                anl     c,FdCnt3
                jnc     CnterW0Int
                djnz    Cnter3ctrL,CnterW0Int
                djnz    Cnter3ctrH,CnterW0Int
                setb    Cnter3Out

CnterW0Int:     jb      CnterW0Out,CnterW1Int
                mov     c,CnterW0Str
                anl     c,FuCntW0
                jnc     CnterW1Int
                djnz    CnterW0ctrL,CnterW1Int
                djnz    CnterW0ctrH,CnterW1Int
                setb    CnterW0Out

CnterW1Int:     jb      CnterW1Out,CnterIntret
                mov     c,CnterW1Str
                anl     c,FuCntW1
                jnc     CnterIntret
                djnz    CnterW1ctrL,CnterIntret
                djnz    CnterW1ctrH,CnterIntret
                setb    CnterW1Out

CnterIntret:    ret

;-------------------------------------------------------------------------------------
ScanIO:         mov     a,p1                    ;Qn=Xn-1*Xn + Qn-1*Xn-1 + Qn-1*Xn
                cpl     a
                mov     r7,a                    ;r7=new
                anl     a,Inp1_Old              ;r6 tmp
                mov     r6,a
                mov     a,Inp1_Sta
                anl     a,Inp1_Old
                orl     a,r6
                mov     r6,a
                mov     a,r7
                anl     a,Inp1_Sta
                orl     a,r6
                mov     Inp1_Sta,a
                mov     Inp1_Old,r7             
                
ScanP3:         mov     a,p3                    ;Qn=Xn-1*Xn + Qn-1*Xn-1 + Qn-1*Xn
                cpl     a
                mov     r7,a                    ;r7=new
                anl     a,Inp3_Old              ;r6 tmp
                mov     r6,a
                mov     a,Inp3_Sta
                anl     a,Inp3_Old
                orl     a,r6
                mov     r6,a
                mov     a,r7
                anl     a,Inp3_Sta
                orl     a,r6
                mov     Inp3_Sta,a
                mov     Inp3_Old,r7             

                ret
;-------------------------------------------------------------------------------------
TimeInt:        jb      Time1Out ,Time2Int
                jnb     Time1Str,Time2Int
                djnz    Time1ctrL,Time2Int
                djnz    Time1ctrH,Time2Int
                setb    Time1Out

Time2Int:       jb      Time2Out,Time3Int
                jnb     Time2Str,Time3Int
                djnz    Time2ctrL,Time3Int
                djnz    Time2ctrH,Time3Int
                setb    Time2Out

Time3Int:       jb      Time3Out,Time4Int                  ;;;;
                jnb     Time3Str,Time4Int
                djnz    Time3ctrL,Time4Int
                djnz    Time3ctrH,Time4Int
                setb    Time3Out


Time4Int:       jb      Time4Out,Time5Int
                jnb     Time4Str,Time5Int
                djnz    Time4ctrL,Time5Int
                djnz    Time4ctrH,Time5Int
                setb    Time4Out

Time5Int:       jb      Time5Out,Time6Int
                jnb     Time5Str,Time6Int
                djnz    Time5ctrL,Time6Int
                djnz    Time5ctrH,Time6Int
                setb    Time5Out

Time6Int:       jb      Time6Out,Time7Int
                jnb     Time6Str,Time7Int
                djnz    Time6ctrL,Time7Int
                djnz    Time6ctrH,Time7Int
                setb    Time6Out

Time7Int:       jb      Time7Out,Time8Int
                jnb     Time7Str,Time8Int
                djnz    Time7ctrL,Time8Int
                djnz    Time7ctrH,Time8Int
                setb    Time7Out

Time8Int:       jb      Time8Out,TimeIntret
                jnb     Time8Str,TimeIntret
                djnz    Time8ctrL,TimeIntret
                djnz    Time8ctrH,TimeIntret
                setb    Time8Out

TimeIntRet:     ret


                 END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -