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

📄 progcontrol.asm

📁 程控滤波器
💻 ASM
📖 第 1 页 / 共 4 页
字号:
               MOV    5DH,#06H       ;X=04H
               MOV    5EH,#80H       ;ASCII"^"
               LCALL ASCIICODE8
               MOV    5DH,#04H       ;X=06H
               MOV    5EH,#64H       ;ASCII"d"
               LCALL ASCIICODE8
               MOV    5DH,#05H       ;X=07H
               MOV    5EH,#42H       ;ASCII"B"
               LCALL ASCIICODE8
               MOV    60H,#08H       ;Y=08H
               MOV    5DH,#04H       ;X=04H
               MOV    5EH,#36H       ;ASCII"6"
               LCALL ASCIICODE8
               MOV    5DH,#05H       ;X=05H
               MOV    5EH,#30H       ;ASCII"0"
               LCALL ASCIICODE8
               MOV    64H,#33H       ;X=33H
               MOV    65H,#07H       ;Y=08H
               LCALL ASCIIPOINT      ;Y轴"."显示
               MOV    64H,#34H
               LCALL ASCIIPOINT
               MOV    64H,#35H
               LCALL ASCIIPOINT
               MOV    64H,#33H       ;X=33H
               MOV    R7,#44
DISPLOOP1:     INC    65H
               LCALL ASCIIPOINT      ;"."显示
               DJNZ   R7,DISPLOOP1
               MOV    60H,#2BH
               MOV    5DH,#05H       ;X=05H
               MOV    5EH,#30H       ;ASCII"0"
               LCALL ASCIICODE8
               MOV    65H,#33H       ;Y=33H
               MOV    R7,#99;
               MOV    64H,#33H
               LCALL ASCIIPOINT      ;"."显示
DISPLOOP2:     INC    64H            ;X轴"."显示
               LCALL ASCIIPOINT      ;"."显示
               DJNZ   R7,DISPLOOP2
               MOV    60H,#30H       ;Y=30H
               MOV    5DH,#12H       ;X=12H
               MOV    5EH,#83H       ;ASCII">"
               LCALL ASCIICODE8      ;
               MOV    60H,#38H       ;Y=38H
               MOV    5DH,#12H       ;X=12H
               MOV    5EH,#66H       ;ASCII"f"
               LCALL ASCIICODE8      ;
               MOV    60H,#37H       ;Y=37H
               MOV    5DH,#07H
               MOV    5EH,#30H       ;ASCII"0"
               LCALL ASCIICODE8
               INC    5DH
               MOV    5EH,#2EH       ;ASCII"."
               LCALL ASCIICODE8
               INC    5DH
               MOV    5EH,#31H       ;ASCII"1"
               LCALL ASCIICODE8
               MOV    5DH,#0FH
               MOV    5EH,#32H       ;ASCII"2"
               LCALL ASCIICODE8
               INC    5DH
               MOV    5EH,#30H       ;ASCII"0"
               LCALL ASCIICODE8
               INC    5DH
               MOV    5EH,#30H       ;ASCII"0"
               LCALL ASCIICODE8
               MOV   64H,#88H
               MOV   65H,#31H
               LCALL ASCIIPOINT
               INC   65H
               LCALL ASCIIPOINT
               LCALL  D100MS
               LCALL  D100MS
               MOV    R7,#14
               MOV     TH0,#038H
               MOV     TL0,#038H
               MOV     MIAO,#00
               MOV     64H,#30H              ;定位X坐标
LOOPP0:

               SETB    ET0
               SETB    TR0
               SETB    EA
               ACALL   D500MS
               ;CLR     ET0
               LCALL   ADSWITCH
               MOV     A,CUNSHU
               CLR     C
               CJNE    A,#88,DOCOMP

DOCOMP:        JC      TOFPDISP
               MOV     A,#88
TOFPDISP:
               MOV     B,#2
               DIV     AB
               MOV     65H,A
               MOV     A,52
               CLR     C
               SUBB    A,65H
               MOV     65H,A
               LCALL   FPDISP
               DJNZ    R7,LOOPP0
               CLR     ET0
               CLR     TR0
               RET
ADSWITCH:
        CLR     KCS
;Write "1"  ,The 1' pusle   0832起始
        CLR     KCLK
        NOP
        SETB    KDI
        NOP
        SETB    KCLK
        NOP
        NOP
        CPL     KDI                   ;反相便于送入
;Write "1" ,The 2' pusle    0832配置
        CLR     KCLK
        NOP
        SETB    KDI
        NOP
        SETB    KCLK
        NOP
        NOP
        CPL     KDI                   ;反相便于送入
;Write "0" ,The 3' pusle    0832配置
        CLR     KCLK
        NOP
        CLR     KDI
        NOP
        SETB    KCLK
        NOP
        NOP
        CPL     KDI                   ;反相便于送入
        CLR     KCLK
        NOP
        NOP
        SETB    KCLK
        NOP
        NOP
;读数据
        MOV     R6,#8                 ;把八位数据装进CUNSHU里
INTIME1:
        CLR     KCLK
        NOP
        MOV     C,KD0
        RLC     A
        SETB    KCLK
        DJNZ    R6,INTIME1
        ;MOV     A,#255
        MOV     CUNSHU,A
        ;MOV
        SETB    KCS
        RET
FPDISP:
        INC     MIAO
        MOV     A,MIAO
        CJNE    A,#1,BIJIAO1          ;第一秒到,变换的频率
        MOV     TH0,#059H
        MOV     TL0,#059H
        MOV     64H,#3BH              ;定位X坐标

        LCALL ASCIIPOINT
        AJMP    RET1
BIJIAO1:
        CJNE    A,#2,BIJIAO2          ;第二秒到,变换的频率
        CLR     TR0
        MOV     TH0,#097H
        MOV     TL0,#097H
        MOV     64H,#40H              ;定位X坐标
        LCALL ASCIIPOINT
        AJMP    RET1
BIJIAO2:
        CJNE    A,#3,BIJIAO3          ;第三秒到,变换的频率
        CLR     TR0
        MOV     TH0,#0ACH
        MOV     TL0,#0ACH
        MOV     64H,#45H              ;定位X坐标
        LCALL ASCIIPOINT
        AJMP    RET1
BIJIAO3:
        CJNE    A,#4,BIJIAO4          ;第四秒到,变换的频率
        CLR     TR0
        MOV     TH0,#0C9H
        MOV     TL0,#0C9H
        MOV     64H,#4AH              ;定位X坐标
        LCALL ASCIIPOINT
        AJMP    RET1
BIJIAO4:
        CJNE    A,#5,BIJIAO5          ;第五秒到,变换的频率
        CLR     TR0
        MOV     TH0,#0D1H
        MOV     TL0,#0D1H
        MOV     64H,#4FH              ;定位X坐标
        LCALL ASCIIPOINT
        AJMP    RET1
BIJIAO5:
        CJNE    A,#6,BIJIAO6          ;第六秒到,变换的频率
        CLR     TR0
        MOV     TH0,#0D6H
        MOV     TL0,#0D6H
        MOV     64H,#54H              ;定位X坐标
        LCALL ASCIIPOINT
        AJMP    RET1
BIJIAO6:
        CJNE    A,#7,BIJIAO7          ;第七秒到,变换的频率
        CLR     TR0
        MOV     TH0,#0DEH
        MOV     TL0,#0DEH
        MOV     64H,#59H              ;定位X坐标
        LCALL ASCIIPOINT
        AJMP    RET1
BIJIAO7:
        CJNE    A,#8,BIJIAO8          ;第八秒到,变换的频率
        CLR     TR0
        MOV     TH0,#0E4H
        MOV     TL0,#0E4H
        MOV     64H,#5EH              ;定位X坐标
        LCALL ASCIIPOINT
        AJMP    RET1
BIJIAO8:
        CJNE    A,#9,BIJIAO9          ;第九秒到,变换的频率
        CLR     TR0
        MOV     TH0,#0EBH
        MOV     TL0,#0EBH
        MOV     64H,#63H              ;定位X坐标
        LCALL ASCIIPOINT
        AJMP    RET1
BIJIAO9:
        CJNE    A,#10,BIJIAO10          ;第十秒到,变换的频率
        CLR     TR0
        MOV     TH0,#0EFH
        MOV     TL0,#0EFH
        MOV     64H,#68H              ;定位X坐标
        LCALL ASCIIPOINT
        AJMP    RET1
BIJIAO10:
        CJNE    A,#11,BIJIAO11          ;第11秒到,变换的频率
        CLR     TR0
        MOV     TH0,#0F4H
        MOV     TL0,#0F4H
        MOV     64H,#6DH              ;定位X坐标
        LCALL ASCIIPOINT
        AJMP    RET1
BIJIAO11:
        CJNE    A,#12,BIJIAO12          ;第12秒到,变换的频率
        CLR     TR0
        MOV     TH0,#0F5H
        MOV     TL0,#0F5H
        MOV     64H,#72H              ;定位X坐标
        LCALL ASCIIPOINT
        AJMP    RET1
BIJIAO12:
        CJNE    A,#13,BIJIAO13          ;第13秒到,变换的频率
        CLR     TR0
        MOV     TH0,#0F7H
        MOV     TL0,#0F7H
        MOV     64H,#77H              ;定位X坐标
        LCALL ASCIIPOINT
        AJMP    RET1
BIJIAO13:                              ;第七秒到,退出
        MOV     64H,#7CH              ;定位X坐标
        LCALL   ASCIIPOINT
RET1:   SETB    TR0
        SETB    ET0
        RET

;**********************************************************************************
;从HD7279接收1个字节,高位在前
RECEIVE:     MOV      BIT_COUNT,#8                    ;设定计数器=8
             SETB     DAT
             LCALL    LONG_DELAY
RECEIVE_LOOP:SETB     CLK2
             LCALL    SHORT_DELAY
             MOV      A,DATA_IN                       ;数据左移
             RL       A
             MOV      DATA_IN,A
             MOV      C,DAT                           ;读取1位数据
             MOV      DATA_IN.0,C
             CLR      CLK2
             LCALL    SHORT_DELAY
             DJNZ     BIT_COUNT,RECEIVE_LOOP          ;是否已接收8位数据
             CLR      DAT
             RET
;*********************************************************************************
;发送1个字节到HD7279,高位在前
SEND:        MOV      BIT_COUNT,#8
             LCALL    LONG_DELAY
SEND_LOOP:   MOV      C,DATA_OUT.7         ;输出1位
             MOV      DAT,C
             SETB     CLK2
             MOV      A,DATA_OUT
             RL       A
             MOV      DATA_OUT,A
             LCALL    SHORT_DELAY
             CLR      CLK2
             LCALL    SHORT_DELAY
             DJNZ     BIT_COUNT,SEND_LOOP  ;检测是否8位均发送完毕
             CLR      DAT
             RET
;***********************************************************
;             时延子程序
;***********************************************************
D10MS:       MOV    TIMER1,#40       ;10MS时延
D10MS1:      MOV    TIMER2,#250
             DJNZ   TIMER2,$
             DJNZ   TIMER1,D10MS1
             RET

D100MS:      MOV    TIMER3,#2
             MOV    TIMER2,#200      ;100MS时延
D100MS1:     MOV    TIMER1,#248      ;0.5MS
             DJNZ   TIMER1,$
             DJNZ   TIMER2,D100MS1
             MOV    TIMER2,#200
             DJNZ   TIMER3,D100MS1
             RET

D500MS:      MOV    TIMER3,#10
             MOV    TIMER2,#200      ;100MS时延
D500MS1:     MOV    TIMER1,#248      ;0.5MS
             DJNZ   TIMER1,$
             DJNZ   TIMER2,D500MS1
             MOV    TIMER2,#200
             DJNZ   TIMER3,D500MS1
             RET

D1S:         MOV    TIMER3,#200      ;1S时延
D1S1:        MOV    TIMER2,#20       ;10MS
D1S2:        MOV    TIMER1,#229      ;0.5MS
             DJNZ   TIMER1,$
             DJNZ   TIMER2,D1S2
             DJNZ   TIMER3,D1S1
             RET
LONG_DELAY:  MOV      TIMER,#25                       ;设定延时为约50us
             DJNZ     TIMER,$
             RET
SHORT_DELAY: MOV      TIMER,#4                        ;设定延时为约8us
             DJNZ     TIMER,$
             RET
;*******************键值************************************
 TAB1:     DB  30H,31H,32H,33H,34H
           DB  35H,36H,37H,38H,39H
 TAB2:     DB  30H,31H,32H,33H,34H
           DB  35H,36H,37H,38H,39H

TO_MU_2:       ;LCALL    LOOPDO2345_2
               JB       KEY,$
               MOV      DATA_OUT,#00010101B               ;有键按下,发送读键盘指令
               LCALL    SEND
               LCALL    RECEIVE
               MOV      A,DATA_IN
               MOV      DPTR,#TAB1
               MOVC     A,@A+DPTR
               MOV      30H,A
               LCALL    SETUPMENU_2

D2:            JNB      KEY,$
               JB       KEY,$

               MOV      DATA_OUT,#00010101B               ;有键按下,发送读键盘指令
               LCALL    SEND
               LCALL    RECEIVE
               MOV      A,DATA_IN
               MOV      DPTR,#TAB1
               MOVC     A,@A+DPTR
               MOV      31H,A
               LCALL    SETUPMENU_2
               JNB      KEY,$
               JB       KEY,$
               ;MOV      DATA_OUT,#00010101B               ;有键按下,发送读键盘指令
               ;LCALL    SEND
               ;LCALL    RECEIVE
               ;MOV      A,DATA_IN

C1:
               MOV      A,30H
               CLR      C
               SUBB     A,#30H
               MOV      B,#2
               MUL      AB                                 ;A*2
               MOV      DPTR,#TAB3
               JMP      @A+DPTR                            ;跳转到“转移表”
TAB3:          AJMP     GN0
               AJMP     GN1                                ;功能0
               AJMP     GN2
               AJMP     GN3
               AJMP     GN4
               AJMP     GN5
               AJMP     GN6
GN0:           AJMP     EXIT
GN1:           CLR      P00     ;10DB  K1
               SETB     P01
               SETB     P02
               CLR      P03
               NOP
               AJMP     EXIT
GN2:           SETB     P00     ;20DB   K2
               CLR      P01
               SETB     P02
               CLR      P03
               NOP
               AJMP     EXIT
GN3:           SETB     P00     ;30DB   K3
               SETB     P01
               CLR      P02
               CLR      P03
               NOP
               AJMP     EXIT
GN4:           CLR      P00    ;40DB    K1+K3
               SETB     P01
               SETB     P02
               SETB     P03
               NOP
               AJMP     EXIT
GN5:           SETB     P00     ;50DB   K2+K3
               CLR      P01
               SETB     P02
               SETB     P03
               NOP
               AJMP     EXIT
GN6:           SETB     P00     ;60DB   K3+K4

⌨️ 快捷键说明

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