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

📄 progcontrol.asm

📁 程控滤波器
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;*********************************************************************************
;*                                                                               *
;*                          程控滤波器                                           *
;*                                                                               *
;*********************************************************************************
;引脚

         P00      BIT     P1.0
         P01      BIT     P1.1
         P02      BIT     P1.2
         P03      BIT     P1.3
         P04      BIT     P1.4
         P05      BIT     P1.5
         P06      BIT     P1.6
         BUSY     BIT     P2.5       ;忙信号线       (读取液晶)
         REQ      BIT     P2.6       ;请求信号线     (发向液晶)
         RES      BIT     P2.7       ;复位线         (液晶复位)
         SIGNAL   BIT     P2.1         ;信号输出
         KCLK     BIT     P2.4         ;0832控制定义
         KDI      BIT     P3.6
         KCS      BIT     P2.0
         KD0      BIT     P3.7
         ;CLK2     BIT     P2.6
         CLK2     BIT      P1.7
         ;DAT      BIT     P2.3
         DAT      BIT     P2.2
         KEY      BIT     P2.3
         ;KEY      BIT     P2.2
         ;F0       BIT     P3.4
         M        BIT     P3.5        ;低/高通滤波器选择
         FO       BIT     P3.4
         FI       BIT     P3.3
         F2       BIT     P3.2
         F3       BIT     P3.1
         F4       BIT     P3.0
         CUNSHU   DATA    21H          ;存数据单元
         MIAO     DATA    29H          ;秒值
         BIT_COUNT     DATA    25H
         DATA_IN       DATA    26H
         DATA_OUT      DATA    27H
         TIMER         DATA    28H
         BZ0           BIT     20H.0       ;FDYM
         BZ1           BIT     20H.1
         BZ2           BIT     20H.2
;以下定义为从22H至61H的RAM空间
        TIMER1         EQU     22H        ;时延变量1
        TIMER2         EQU     23H        ;时延变量2
        TIMER3         EQU     24H        ;时延变量3
        COUNT	       EQU     38H
        LCD_X1	       EQU     39H
        LCD_Y1	       EQU     3AH
        TIME           EQU     3BH
        X              EQU     3CH
        XX             EQU     3DH
        X111           EQU     3EH
        Y              EQU     3FH
        YY             EQU     40H
;******************程序开始********************************************************************
               ORG    0000H
               AJMP   MAIN
               ORG       000BH
               LJMP      INTTIME0

MAIN:
               MOV      SP,#70H
               SETB     P00     ;增益初值30dB
               SETB     P01
               CLR      P02
               CLR      P03
               MOV      P3,#0FFH
               CLR      M
               SETB     P04     ;10KHz低通
               CLR      P05
               CLR      P06
               ANL      P3,#0E0H
               ORL      P3,#02H
               LCALL    D100MS
               CLR      DAT
               SETB     KEY
               CLR      CLK2
               MOV      DATA_OUT,#10100100B               ;发复位指令
               LCALL    SEND
               CLR      BZ0
               MOV      P0,#0FFH
               MOV      30H,#31H
               MOV      31H,#30H
               MOV      32H,#30H
               MOV      33H,#30H
               MOV      34H,#30H
               MOV      35H,#30H
               MOV      36H,#30H
               MOV      37H,#30H
               MOV     TMOD,#12H
               MOV     CUNSHU,#00H
               MOV     TH0,#2FH
               MOV     TL0,#2FH
               MOV     MIAO,#00H
               MOV     60H,#00H              ;Y=00H
               MOV     5DH,#04H              ;X=04H
               MOV     R1,#7
               ;MOV     R2,#5
               SETB    KD0
               SETB    SIGNAL
               SETB     RES
               CLR      REQ             ;REQ=0
               SETB     BUSY            ;BUSY=1
               LCALL    RESLCD          ;清屏
               LCALL    MENU_INIT       ;显示设备名称
               
               LCALL    D1S             ;时延1S
               LCALL    SYSTEMCHECK     ;系统自检
               LCALL    SETUPMENU_0
               MOV      30H,#33H
READKEY:       JNB      KEY,$
               JB       KEY,$          ;检测是否有键按
               MOV      DATA_OUT,#00010101B               ;有键按下,发送读键盘指令
               LCALL    SEND
               LCALL    RECEIVE
               MOV      A,DATA_IN
TO_MENU_2:     CJNE     A,#10,TO_MENU_1
               LCALL    SETUPMENU_2
               JNB      KEY,$
               LCALL    TO_MU_2
               LCALL    SETUPMENU_0
               AJMP     READKEY
TO_MENU_1:     CJNE     A,#11,TO_AXIS
               LCALL    SETUPMENU_1
               SETB     BZ0
               AJMP     READKEY
TO_AXIS:       CJNE     A,#12,B1
               LCALL    AXISDISP
               JNB      KEY,$
               LCALL    TO_MU_6
               LCALL    SETUPMENU_0
               AJMP     READKEY
B1:            JNB      BZ0,READKEY
               CLR      BZ0
               CJNE     A,#1,TO_MENU_4
               CLR      M
               LCALL    SETUPMENU_3
               LCALL    TO_MU_3
               LCALL    SETUPMENU_0
               AJMP     READKEY
TO_MENU_4:     CJNE     A,#2,TO_MENU_5
               SETB     M
               LCALL    SETUPMENU_4
               LCALL    TO_MU_4
               LCALL    SETUPMENU_0
               SETB     M
               AJMP     READKEY
TO_MENU_5:     CJNE     A,#3,B2
               SETB      M
               LCALL    SETUPMENU_5
               LCALL    TO_MU_5
               LCALL    SETUPMENU_0
               MOV      P3,#00H
               SETB      M
               AJMP     READKEY
B2:            SETB     BZ0
               AJMP     READKEY
               SJMP     $


;***********************************************************
;              液晶显示器清屏程序
;***********************************************************
RESLCD:
               MOV      A,#0F4H         ;选清屏指令命令字
               LCALL    SUB1            ;调用
               RET
;***********************************************************
;              液晶显示器写模块子程序
;***********************************************************
SUB1:          JB       BUSY,SUB1       ;确信模块空闲(BUSY=0)双线应答方式
               MOV      P0,A            ;向总线送数
	       NOP		     ;等待数据总线稳定
	       SETB     REQ             ;置模块REQ端为高电平(REQ=1),向模块发请求命令
HE3:	       JNB      BUSY,HE3 	     ;等待模块响应(BUSY =1)
 	       CLR      REQ             ;撤消REQ请求信号,数据输入结束
               MOV      P0,#0FFH
               RET
;***********************************************************
;***********************************************************
;             汉字和ASCII码显示子程序
;***********************************************************
;汉字显示
HANZI:         MOV      A,#0F0H        ;选显示汉字命令字
	       LCALL    SUB1           ;调用写子程序
	       MOV      A,5DH          ;6DH,XX,16*16点阵为单位的屏幕坐标
	       LCALL    SUB1           ;调用写子程序
	       MOV      A,60H          ;67H,YY,16*16点阵为单位的屏幕坐标
	       LCALL    SUB1	     ;调用写子程序
	       MOV      A,5EH          ;6EH,QQ,GB2312汉字区位码高位
	       LCALL    SUB1	     ;调用写子程序
	       MOV      A,5FH          ;6FH,WW,GB2312汉字区位码低位
	       LCALL    SUB1	     ;调用写子程序
               RET
;ASCII码8*16显示
ASCIICODE:     MOV      A,#0F9H        ;选显示8*16 ASCII字符命令字
	       LCALL    SUB1           ;调用写子程序
	       MOV      A,5DH          ;6DH,XX,8*8点阵为单位的屏幕坐标值X
	       LCALL    SUB1
	       MOV      A,60H          ;67H,YY,1*1点阵为单位的屏幕坐标值Y
	       LCALL    SUB1
	       MOV      A,5EH          ;6EH,ASCII字符代码
	       LCALL    SUB1
               RET
;***********************************************************
;             显示"."子程序
;***********************************************************
ASCIIPOINT:
              MOV    A,#0F2H         ;显示"."
              LCALL  SUB1           ;调用写子程序
              MOV    A,64H          ;64H,XX,8*8点阵为单位的屏幕坐标值X
              LCALL  SUB1
              MOV    A,65H          ;65H,YY,1*1点阵为单位的屏幕坐标值Y
              LCALL  SUB1
              RET
;***********************************************************
ASCIICODE8:   MOV    A,#0F1H        ;选显示8*8 ASCII字符命令字
	      LCALL  SUB1           ;调用写子程序
	      MOV    A,5DH          ;5DH,XX,8*8点阵为单位的屏幕坐标值X
	      LCALL  SUB1
	      MOV    A,60H          ;60H,YY,1*1点阵为单位的屏幕坐标值Y
	      LCALL  SUB1
              MOV    A,5EH          ;5EH,ASCII字符代码
	      LCALL  SUB1
              RET
;***********************************************************
;             显示部分程序
;***********************************************************
MENU_INIT:                            ;显示"程控滤波器"
               LCALL  RESLCD         ;清屏
;第四行显示:
               MOV    60H,#00H       ;Y=01H
               MOV    5DH,#04H
               MOV    5EH,#32H       ;ASCII"2"
               LCALL ASCIICODE
               INC    5DH            ;"0"
               MOV    5EH,#30H
               LCALL ASCIICODE
               INC    5DH            ;"0"
               MOV    5EH,#30H
               LCALL ASCIICODE
               INC    5DH           ;"7"
               MOV    5EH,#37H
               LCALL ASCIICODE
               MOV    5DH,#04H      ;汉字"年"
               MOV    5EH,#24H
               MOV    5FH,#4AH
               LCALL  HANZI
               INC    5DH          ;汉字"电"
               MOV    5EH,#15H
               MOV    5FH,#47H
               LCALL  HANZI
               INC    5DH            ;汉字"子"
               MOV    5EH,#37H
               MOV    5FH,#33H
               LCALL  HANZI
               INC    5DH            ;汉字"设"
               MOV    5EH,#29H
               MOV    5FH,#48H
               LCALL  HANZI
               INC    5DH            ;汉字"计"
               MOV    5EH,#1CH
               MOV    5FH,#26H
               LCALL  HANZI
               MOV    60H,#02H       ;Y=01H
               MOV    5DH,#03H       ;汉字"程"
               MOV    5EH,#13H
               MOV    5FH,#2CH
               LCALL  HANZI
               INC    5DH            ;汉字"控"
               MOV    5EH,#1FH
               MOV    5FH,#38H
               LCALL  HANZI
               INC    5DH            ;汉字"滤"
               MOV    5EH,#22H
               MOV    5FH,#2BH
               LCALL  HANZI
               INC    5DH            ;汉字"波"
               MOV    5EH,#12H
               MOV    5FH,#08H
               LCALL  HANZI
               INC    5DH            ;汉字"器"
               MOV    5EH,#26H
               MOV    5FH,#57H
               LCALL  HANZI
               MOV    68H,#8
RIGHTMOV:      MOV    A,#0F8H        ;由移8个点阵列
               LCALL  SUB1
               DJNZ   68H,RIGHTMOV
               LCALL    D1S             ;时延1S
               RET
;*****************************************************
;               系统自检界面
;*****************************************************
SYSTEMCHECK:   LCALL  RESLCD         ;清屏
               MOV    60H,#01H       ;Y=01H
               MOV    5DH,#03H       ;X=03H, 显示"系"
               MOV    5EH,#2FH
               MOV    5FH,#15H
               LCALL  HANZI
               MOV    5DH,#04H       ;X=04H,显示"统"
               MOV    5EH,#2DH
               MOV    5FH,#13H
               LCALL  HANZI
               MOV    5DH,#05H       ;X=05H,显示"自"
               MOV    5EH,#37H
               MOV    5FH,#34H
               LCALL  HANZI
               MOV    5DH,#06H       ;X=06H,显示"检"
               MOV    5EH,#1CH
               MOV    5FH,#4CH
               LCALL  HANZI
               MOV    5DH,#07H       ;X=07H,显示"中"
               MOV    5EH,#36H
               MOV    5FH,#30H
               LCALL  HANZI
               MOV    60H,#10H
               MOV    5DH,#10H
               MOV    5EH,#86H
               LCALL  ASCIICODE
               MOV    5DH,#11H
               MOV    5EH,#86H
               LCALL  ASCIICODE
               MOV    5DH,#12H
               MOV    5EH,#86H
               LCALL  ASCIICODE
               MOV    R7,#8
SYSTEMWAIT:    MOV    5DH,#10H
               MOV    5EH,#20H      ;" "ASCII码
               LCALL  ASCIICODE
               LCALL  D100MS
               MOV    5EH,#86H
               LCALL  ASCIICODE
               LCALL  D100MS
               MOV    5DH,#11H
               MOV    5EH,#20H      ;" "ASCII码
               LCALL  ASCIICODE
               LCALL  D100MS
               MOV    5EH,#86H
               LCALL  ASCIICODE
               MOV    5DH,#12H
               MOV    5EH,#20H
               LCALL  ASCIICODE
               LCALL  D100MS
               MOV    5EH,#86H
               LCALL  ASCIICODE
               DJNZ   R7,SYSTEMWAIT
               RET
;***********************************************************
;             设置界面显示程序
;***********************************************************
SETUPMENU_0:   LCALL  RESLCD         ;清屏
               MOV    60H,#00H       ;"功"
               MOV    5DH,#02H
               MOV    5EH,#19H
               MOV    5FH,#06H
               LCALL  HANZI
               INC    5DH            ;"能"
               MOV    5EH,#24H
               MOV    5FH,#3CH
               LCALL  HANZI
               INC    5DH            ;"设"
               MOV    5EH,#29H
               MOV    5FH,#48H
               LCALL  HANZI
               INC    5DH            ;"置"
               MOV    5EH,#36H
               MOV    5FH,#23H
               LCALL  HANZI
               MOV    5DH,#0CH       ;":"
               MOV    5EH,#3AH
               LCALL  ASCIICODE
               MOV    60H,#10H       ;Y=00H
               MOV    5DH,#05H       ;"A"
               MOV    5EH,#41H
               LCALL  ASCIICODE
               mov    60H,#01H
               MOV    5DH,#03H       ;"放"
               MOV    5EH,#17H
               MOV    5FH,#25H
               LCALL  HANZI
               INC    5DH            ;"大"
               MOV    5EH,#14H
               MOV    5FH,#53H
               LCALL  HANZI
               INC    5DH            ;"器"
               MOV    5EH,#26H
               MOV    5FH,#57H
               LCALL  HANZI
               INC    5DH            ;"设"
               MOV    5EH,#29H
               MOV    5FH,#48H
               LCALL  HANZI
               INC    5DH            ;"置"
               MOV    5EH,#36H
               MOV    5FH,#23H
               LCALL  HANZI
               MOV    60H,#20H       ;Y=10H
               MOV    5DH,#05H       ;"B"
               MOV    5EH,#42H
               LCALL  ASCIICODE
               MOV    60H,#02H       ;Y=01H
               MOV    5DH,#03H       ;"幅"
               MOV    5EH,#22H
               MOV    5FH,#2BH
               LCALL  HANZI
               INC    5DH            ;"频"
               MOV    5EH,#12H
               MOV    5FH,#08H
               
               LCALL  HANZI
               INC    5DH            ;"特"
               MOV    5EH,#26H
               MOV    5FH,#57H
               LCALL  HANZI
               INC    5DH            ;"性"
               MOV    5EH,#29H
               MOV    5FH,#48H
               LCALL  HANZI

⌨️ 快捷键说明

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