📄 程控滤波器.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 + -