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

📄 程控滤波器.asm

📁 51单片机写的程控滤波器
💻 ASM
字号:
;P1.0至P1.5接373的1D到6D,P1.6接373的OE非端,同时接262的WR非
;P2口接按键,P0接显示的数据口,
;P3.0到P3.2接模拟开关CD40105
RS EQU P3.3
RW EQU P3.4
E  EQU P3.5
ORG 0000H
LJMP START
ORG 000BH
LJMP TIMER0
ORG 0100H
START:
      CLR P3.6
      MOV SP,#71H
      MOV 20H,#0FFH
      MOV 22H,#01H
      MOV 30H,#00H;存放增益值
      MOV 31H,#01H;存放低频截止频率
      MOV 32H,#01H;存放高频截止频率
      ;33H,34H,35H,36H在显示是作为公用单元
      MOV TMOD,#01H
      MOV IE,#82H
      MOV TH0,#3CH
      MOV TL0,#0B0H
      LCALL INT_LCD
      LCALL DISP
      MOV R7,#30
      SETB TR0
      JB 07H ,$
MAIN:
     SETB P3.6
     LCALL DISP
     LCALL READKEY
     LCALL MONIKG
     LCALL DITONG
     LCALL JINZHENGDT
     LCALL GAOTONG
     LCALL JINZHENGGT
     LJMP MAIN
TIMER0:
     MOV TH0,#3CH
     MOV TL0,#0B0H
     DJNZ R7,TIMER0END
T1MER01:
     CLR 07H
     CLR 10H
     SETB 11H
     CLR TR0
     CLR EA
TIMER0END:
     RETI
INT_LCD:
      LCALL DELAY5MS
      LCALL DELAY5MS
      LCALL DELAY5MS
      MOV A,#38H
      LCALL WCOM_NC;不检测忙信号
      LCALL DELAY5MS
      MOV A,#38H
      LCALL WCOM_NC
      LCALL DELAY5MS
      MOV A,#38H
      LCALL WCOM   ;忙检测
      LCALL DELAY5MS
      MOV A,#0CH
      LCALL WCOM
      LCALL DELAY5MS
      MOV A,#06H
      LCALL WCOM
      LCALL DELAY5MS
      MOV A,#01H
      LCALL WCOM
      LCALL DELAY5MS
      RET
WCOM_NC:;不忙检测子程序
      MOV P0,A
      CLR E
      NOP
      NOP
      CLR RS
      CLR RW
      SETB E
      LCALL DELAY250us
      CLR E
      RET
WCOM:;写指令子程序
      LCALL CHECKBUSY
      LCALL WCOM_NC
      RET
WDATE:;写数据子程序
      LCALL CHECKBUSY
      MOV P0,A
      CLR E
      NOP
      NOP
      SETB RS
      CLR RW
      SETB E
      LCALL DELAY250us
      CLR E
      RET
CHECKBUSY:;忙检测子程序
        PUSH ACC
        MOV P0,#0FFH
        CLR E
        NOP
        NOP
        CLR RS
        SETB RW
        SETB E
BUSYLOOP:
        NOP
        JB P0.7,BUSYLOOP
        CLR E
        POP ACC
        RET
BCDZH:          ;入口参数为16进制,最大值为255(一个单元)
      MOV A,R4  ;R4为入口参数,既要转化为BCD数的值也即直接送给液晶显示的数,
      MOV B,#100;R5,R6,R7为出口参数,R5存放百位数,R6存放十位数,R7存放个位数
      DIV AB
      MOV DPTR,#TABNUM
      MOVC A,@A+DPTR
      MOV R5,A
      MOV A,#10
      XCH A,B
      DIV AB
      MOV DPTR,#TABNUM
      MOVC A,@A+DPTR
      MOV R6,A
      MOV A,B
      MOV DPTR,#TABNUM
      MOVC A,@A+DPTR
      MOV R7,A
      RET
TABNUM:DB"0123456789"
XSXZ:
    JNB 10H,L1
    MOV DPTR,#DISTAB0
    LJMP L5
L1:
    JNB 11H,L2
    MOV DPTR,#DISTAB1
    LJMP L5
L2:
    JNB 12H,L3
    MOV R4,30H
    LCALL BCDZH
    MOV 33H,R6
    MOV 34H,R7
    MOV DPTR,#DISTAB2
    LJMP L5
L3:
    JNB 13H,L4
    MOV R4,31H
    LCALL BCDZH
    MOV 35H,R6
    MOV 36H,R7
    MOV DPTR,#DISTAB3
    LJMP L5
L4: JNB 14H,L5
    MOV R4,32H
    LCALL BCDZH
    MOV 35H,R6
    MOV 36H,R7
    MOV DPTR,#DISTAB4
L5:
    RET
DISP:
    LCALL XSXZ
    MOV R1,#80H
    MOV R2,#00H
DISP1:
    MOV A,R1
    LCALL WCOM
    MOV A,R2
    JB 12H,Z1
    JB 13H,Z2
    JB 14H,Z2
    AJMP Z3
Z1:
    CJNE R2,#18,Z11
    MOV A,33H
    AJMP Z4
Z11:
    CJNE R2,#19,Z3
    MOV A,34H
    AJMP Z4
Z2: CJNE R2,#19,Z21
    MOV A,35H
    AJMP Z4
Z21:
    CJNE R2,#20,Z3
    MOV A,36H
    AJMP Z4
Z3:
    MOVC A,@A+DPTR
Z4:
    LCALL WDATE
    INC R1
    INC R2
    CJNE R2,#16,DISPEND
    MOV R1,#0C0H
DISPEND:
    CJNE R2,#32,DISP1
    RET
READKEY:;20H单元存放按键值,P0口接按键
         MOV 20H,P2
READKEY1:
         JB 00H,READKEY2
         LCALL KEY1
READKEY2:
         JB 01H,READKEY3
         LCALL KEY2
READKEY3:
         JB 02H,READKEYEND
         LCALL KEY3
READKEYEND:
         RET
KEY1:;设置各项参数切换键
     LCALL DELAY40MS
     JB 00H,KEY1END
     JB 11H,KEY11
     JB 12H,KEY12
     JB 13H,KEY13
     JB 14H,KEY14
KEY11:
     CLR 11H
     SETB 12H
     AJMP KEY1END
KEY12:
     CLR 12H
     SETB 13H
     AJMP KEY1END
KEY13:
     CLR 13H
     SETB 14H
     AJMP KEY1END
KEY14:
     CLR 14H
     SETB 12H
KEY1END:
     RET
KEY2:;加键
     LCALL DELAY40MS
     JB 01H,KEY2END
     JNB 12H,KEY21
     MOV A,30H
     CJNE A,#60,KEY23
     AJMP KEY2END
KEY23:
     ADD A,#10
     MOV 30H,A
     LJMP KEY2END
KEY21:
     JNB 13H,KEY22
     MOV A,31H
     CJNE A,#20,KEY24
     LJMP KEY2END
KEY24:
     INC 31H
     LJMP KEY2END
KEY22:
     JNB 14H,KEY2END
     MOV A,32H
     CJNE A,#20,KEY25
     LJMP KEY2END
KEY25:
     INC 32H
KEY2END:
     RET
KEY3:;减键
     LCALL DELAY40MS
     JB 02H,KEY3END
     JNB 12H,KEY31
     MOV A,30H
     CJNE A,#00H,KEY33
     LJMP KEY3END
KEY33:
     CLR C
     SUBB A,#10
     MOV 30H,A
     LJMP KEY3END
KEY31:
     JNB 13H,KEY32
     MOV A,31H
     CJNE A,#01H,KEY34
     LJMP KEY3END
KEY34:
     DEC 31H
     LJMP KEY3END
KEY32:
     JNB 14H,KEY3END
     MOV A,32H
     CJNE A,#01H,KEY35
     LJMP KEY3END
KEY35:
     DEC 32H
KEY3END:
     RET
MONIKG:
     MOV A,30H
     CJNE A,#0,MONI1;000
     CLR P3.2;P3.2,P3.1,P3.0分别接地址的CBA
     CLR P3.1
     CLR P3.0
     LJMP MONIKGEND
MONI1:
     CJNE A,#10,MONI2;001
     CLR P3.2
     CLR P3.1
     SETB P3.0
     LJMP MONIKGEND
MONI2:
     CJNE A,#20,MONI3;010
     CLR P3.2
     SETB P3.1
     CLR P3.0
     LJMP MONIKGEND
MONI3:
     CJNE A,#30,MONI4;011
     CLR P3.2
     SETB P3.1
     SETB P3.0
     LJMP MONIKGEND
MONI4:
     CJNE A,#40,MONI5;100
     SETB P3.2
     CLR P3.1
     CLR P3.0
     LJMP MONIKGEND
MONI5:
     CJNE A,#50,MONI6;101
     SETB P3.2
     CLR P3.1
     SETB P3.0
     LJMP MONIKGEND
MONI6:
     CJNE A,#60,MONI1;110
     SETB P3.2
     SETB P3.1
     CLR P3.0
MONIKGEND:
     RET
DITONG:
    JNB 13H,DITONGEND
    MOV 44H,#00H     ;低通选择0模式
    MOV P1,44H
    LCALL DELAY250us
    SETB P3.6         ;P3.6接373的OE非端
    MOV DPTR,#TABA
    MOV A,31H
    MOVC A,@A+DPTR
    MOV 41H,A
    MOV 40H,#01H ;送选择频值
LL0:
    MOV A,41H
    RRC A
    MOV 41H,A
    JC LL1
    MOV 42H,#00H
    AJMP LL11
LL1:
    MOV 42H,#10H
LL11:
    MOV A,41H
    RRC A
    MOV 41H,A
    JC LL2
    MOV 43H,#00H
    AJMP LL12
LL2:
    MOV 43H,#20H
LL12:
    MOV A,40H
    ORL A,42H
    ORL A,43H
    MOV 44H,A
    MOV P1,A
    LCALL DELAY250us
    SETB P3.6
    MOV A,40H
    CJNE A,#03H,LL3
    AJMP LL4
LL3:
    INC 40H
    LJMP LL0
LL4:;送Q值0
    MOV 44H,#04H
LL5:
    MOV P1,44H
    LCALL DELAY250us
    SETB P3.6
    MOV A,44H
    CJNE A,#7,LL6
    AJMP DITONGEND
LL6:
    INC 44H
    AJMP LL5
DITONGEND:
    RET
JINZHENGDT: ;P2.5接C,P2.4接B,P2.3接A
   JNB 13H,ZL0
   AJMP ZL1
ZL0:
   LJMP JINZHENGDTEND

ZL1:;0,125K
   MOV A,31H
   CJNE A,#1,ZL2;0
   CLR P2.5
   CLR P2.4
   CLR P2.3
   LJMP JINZHENGDTEND
ZL2:;1,250K
   CJNE A,#2,ZL3;1
   CLR P2.5
   CLR P2.4
   SETB P2.3
   LJMP JINZHENGDTEND
ZL3:
   CJNE A,#3,ZL4
   CLR P2.5
   CLR P2.4
   SETB P2.3
   LJMP JINZHENGDTEND
ZL4:;2,500K
   CJNE A,#4,ZL5;
   CLR P2.5
   SETB P2.4
   CLR P2.3
   LJMP JINZHENGDTEND
ZL5:
   CJNE A,#5,ZL6
   CLR P2.5
   SETB P2.4
   CLR P2.3
   LJMP JINZHENGDTEND
ZL6:
   CJNE A,#6,ZL7
   CLR P2.5
   SETB P2.4
   CLR P2.3
   LJMP JINZHENGDTEND
ZL7:
   CJNE A,#7,ZL8
   CLR P2.5
   SETB P2.4
   CLR P2.3
   LJMP JINZHENGDTEND
ZL8:;3,1M
   CJNE A,#8,ZL9
   CLR P2.5
   SETB P2.4
   SETB P2.3
   LJMP JINZHENGDTEND
ZL9:
   CJNE A,#9,ZL10
   CLR P2.5
   SETB P2.4
   SETB P2.3
   LJMP JINZHENGDTEND
ZL10:
   CJNE A,#10,ZL11
   CLR P2.5
   SETB P2.4
   SETB P2.3
   LJMP JINZHENGDTEND
ZL11:
   CJNE A,#11,ZL12
   CLR P2.5
   SETB P2.4
   SETB P2.3
   LJMP JINZHENGDTEND
ZL12:
   CJNE A,#12,ZL13
   CLR P2.5
   SETB P2.4
   SETB P2.3
   LJMP JINZHENGDTEND
ZL13:
   CJNE A,#13,ZL14
   CLR P2.5
   SETB P2.4
   SETB P2.3
   LJMP JINZHENGDTEND
ZL14:
   CJNE A,#14,ZL15
   CLR P2.5
   SETB P2.4
   SETB P2.3
   LJMP JINZHENGDTEND
ZL15:
   CJNE A,#15,ZL16
   CLR P2.5
   SETB P2.4
   SETB P2.3
   LJMP JINZHENGDTEND
ZL16:;4,3.5MHZ
   CJNE A,#16,ZL17
   SETB P2.5
   CLR P2.4
   CLR P2.3
   LJMP JINZHENGDTEND
ZL17:
   CJNE A,#17,ZL18
   SETB P2.5
   CLR P2.4
   CLR P2.3
   LJMP JINZHENGDTEND
ZL18:
   CJNE A,#18,ZL19
   SETB P2.5
   CLR P2.4
   CLR P2.3
   LJMP JINZHENGDTEND
ZL19:
   CJNE A,#19,ZL20
   SETB P2.5
   CLR P2.4
   CLR P2.3
   LJMP JINZHENGDTEND
ZL20:
   SETB P2.5
   CLR P2.4
   CLR P2.3
JINZHENGDTEND:
   RET
GAOTONG:
    JNB 14H,LLL00
    AJMP LLL000
LLL00:
    LJMP GAOTONGEND
LLL000:
    MOV 44H,#20H     ;高通选择3模式
    MOV P1,44H
    LCALL DELAY250us
    SETB P3.6         ;P3.6接373的OE非端
    MOV DPTR,#TABB
    MOV A,32H
    MOVC A,@A+DPTR
    MOV 41H,A
    MOV 40H,#01H ;送选择频值
LLL0:
    MOV A,41H
    RRC A
    MOV 41H,A
    JC LLL1
    MOV 42H,#00H
    AJMP LLL11
LLL1:
    MOV 42H,#10H
LLL11:
    MOV A,41H
    RRC A
    MOV 41H,A
    JC LLL2
    MOV 43H,#00H
    AJMP LLL112
LLL2:
    MOV 43H,#20H
LLL112:
    MOV A,40H
    ORL A,42H
    ORL A,43H
    MOV 44H,A
    MOV P1,A
    LCALL DELAY250us
    SETB P3.6
    MOV A,40H
    CJNE A,#03H,LLL3
    AJMP LLL4
LLL3:
    INC 40H
    LJMP LLL0
LLL4: ;送Q值29
    MOV 41H,#29
    MOV 40H,#04H
    MOV A,41H
LLL5:
    MOV A,41H
    RRC A
    MOV 41H,A
    JC LLL6
    MOV 42H,#00H
    AJMP LLL61
LLL6:
    MOV 42H,#10H
LLL61:
    MOV A,41H
    RRC A
    MOV 41H,A
    JC LLL7
    MOV 43H,#00H
    AJMP LLL71
LLL7:
    MOV 43H,#20H
LLL71:
    MOV A,40H
    ORL A,42H
    ORL A,43H
    MOV 44H,A
    MOV P1,A
    LCALL DELAY250us
    SETB P3.6
    MOV A,40H
    CJNE A,#07H,LLL8
    AJMP GAOTONGEND
LLL8:
    INC 40H
    LJMP LLL5
GAOTONGEND:
    RET
JINZHENGGT:
   JNB 14H,ZZL0
   AJMP ZZL1
ZZL0:
   LJMP JINZHENGGTEND
ZZL1:;0,125K
   MOV A,32H
   CJNE A,#1,ZZL2
   CLR P2.5
   CLR P2.4
   CLR P2.3
   LJMP JINZHENGGTEND
ZZL2:
   CJNE A,#2,ZZL3
   CLR P2.5
   CLR P2.4
   CLR P2.3
   LJMP JINZHENGGTEND
ZZL3:
   CJNE A,#3,ZZL4
   CLR P2.5
   CLR P2.4
   CLR P2.3
   LJMP JINZHENGGTEND
ZZL4:;1,250K
   CJNE A,#4,ZZL5;
   CLR P2.5
   CLR P2.4
   SETB P2.3
   LJMP JINZHENGGTEND
ZZL5:
   CJNE A,#5,ZZL6
   CLR P2.5
   CLR P2.4
   SETB P2.3
   LJMP JINZHENGGTEND
ZZL6:
   CJNE A,#6,ZZL7
   CLR P2.5
   CLR P2.4
   SETB P2.3
   LJMP JINZHENGGTEND
ZZL7:;2,500K
   CJNE A,#7,ZZL8
   CLR P2.5
   SETB P2.4
   CLR P2.3
   LJMP JINZHENGGTEND
ZZL8:
   CJNE A,#8,ZZL9
   CLR P2.5
   SETB P2.4
   CLR P2.3
   LJMP JINZHENGGTEND
ZZL9:
   CJNE A,#9,ZZL10
   CLR P2.5
   SETB P2.4
   CLR P2.3
   LJMP JINZHENGGTEND
ZZL10:
   CJNE A,#10,ZZL11
   CLR P2.5
   SETB P2.4
   CLR P2.3
   LJMP JINZHENGGTEND
ZZL11:
   CJNE A,#11,ZZL12
   CLR P2.5
   SETB P2.4
   CLR P2.3
   LJMP JINZHENGGTEND
ZZL12:
   CJNE A,#12,ZZL13
   CLR P2.5
   SETB P2.4
   SETB P2.3
   LJMP JINZHENGGTEND
ZZL13:
   CJNE A,#13,ZZL14
   CLR P2.5
   SETB P2.4
   CLR P2.3
   LJMP JINZHENGGTEND
ZZL14:;3,1M
   CJNE A,#14,ZZL15
   CLR P2.5
   SETB P2.4
   SETB P2.3
   LJMP JINZHENGGTEND
ZZL15:
   CJNE A,#15,ZZL16
   CLR P2.5
   SETB P2.4
   SETB P2.3
   LJMP JINZHENGGTEND
ZZL16:
   CJNE A,#16,ZZL17
   CLR P2.5
   SETB P2.4
   SETB P2.3
   LJMP JINZHENGGTEND
ZZL17:
   CJNE A,#17,ZZL18
   CLR P2.5
   SETB P2.4
   SETB P2.3
   LJMP JINZHENGGTEND
ZZL18:
   CJNE A,#18,ZZL19
   CLR P2.5
   SETB P2.4
   SETB P2.3
   LJMP JINZHENGGTEND
ZZL19:
   CJNE A,#19,ZZL20
   CLR P2.5
   SETB P2.4
   SETB P2.3
   LJMP JINZHENGGTEND
ZZL20:
   CLR P2.5
   SETB P2.4
   SETB P2.3
JINZHENGGTEND:
   RET
DELAY40MS:;40MS按键延时消抖子程序
        MOV R5,#10
DELAY40MS2:
        MOV R6,#100
DELAY40MS1:
        MOV R7,#100
        DJNZ R7,$
        DJNZ R6,DELAY40MS1
        DJNZ R5,DELAY40MS2
        RET
DELAY250us:;250US延时子程序(实际300US)
        MOV R7,#150
        DJNZ R7, $
        RET
DELAY5MS:;5MS延时子程序
        MOV R6,#50
DELAY5MS1:
        MOV R7,#50
        DJNZ R7,$
        DJNZ R6,DELAY5MS1
        RET
DISTAB0:DB"     WELCOM     "
        DB"                "
DISTAB1:DB"Please press the"
        DB"K1 key choice   "
DISTAB2:DB"Adjustment gain "
        DB"A:  dB   K2+ K3-"
DISTAB3:DB"Low pass filter "
        DB"Fc:  KHz K2+ K3-"
DISTAB4:DB"High pass filter"
        DB"Fc:  KHz K2+ K3-"
;低通表
TABA:DB 25,25,25,8,25,15,8,3,25,20,15,11,8,6,3,1,19,16,14,12,10
;高通表
TABB:DB 62,62,18,3,18,9,3,24,18,13,9,6,3,1,24,21,18,15,13,11,9

        END

⌨️ 快捷键说明

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