📄 control.lst
字号:
0064 3000 00190 MOVLW 0H ;1号输出通道输出1号输入信号
0065 00B9 00191 MOVWF out_numble ;
0066 200C 00192 CALL SEL_INX_OUTY ;
00193
0067 3000 00194 MOVLW 0H
0068 00B8 00195 MOVWF in_numble ;
0069 3001 00196 MOVLW 1H ;2号输出通道输出1号输入信号
006A 00B9 00197 MOVWF out_numble ;
006B 200C 00198 CALL SEL_INX_OUTY ;
00199
006C 3000 00200 MOVLW 0H
006D 00B8 00201 MOVWF in_numble ;
006E 3002 00202 MOVLW 2H ;3号输出通道输出1号输入信号
006F 00B9 00203 MOVWF out_numble ;
0070 200C 00204 CALL SEL_INX_OUTY ;
00205
MPASM 4.02 Released CONTROL.ASM 5-11-2006 20:48:14 PAGE 5
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0071 3000 00206 MOVLW 0H
0072 00B8 00207 MOVWF in_numble ;
0073 3003 00208 MOVLW 3H ;4号输出通道输出1号输入信号
0074 00B9 00209 MOVWF out_numble ;
0075 200C 00210 CALL SEL_INX_OUTY ;
0076 0008 00211 RETURN
00212 ;******************************************************************************
00213 ;主程序
00214 ;功能:完成4个按键的状态查询,并根据按键的状态进行切换选择输入信号
00215 ;******************************************************************************
0077 00216 MAIN:
0077 2058 00217 CALL INIT_PORT ;初始化IO
0078 168B 00218 BSF INTCON,T0IE ;允许定时器0中断
0079 178B 00219 BSF INTCON,GIE ;打开全局中断
007A 00220 LOOP:
007A 0064 00221 CLRWDT ;
007B 00222 CHECK_KEY0: ;检测按键1
007B 1B86 00223 BTFSC IN_OUT_PORT,KEY0
007C 288E 00224 GOTO CLR_TIME0 ;
007D 3003 00225 MOVLW 3H ;去抖动
007E 0230 00226 SUBWF TIMER15S1,W ;
007F 1C03 00227 BTFSS STATUS,C ;
0080 2890 00228 GOTO CHECK_KEY1 ;
00229
0081 3004 00230 MOVLW 4H ;检测按键是否循环了4次
0082 0234 00231 SUBWF out_reg0,W ;
0083 1803 00232 BTFSC STATUS,C ;
0084 01B4 00233 CLRF out_reg0 ;
00234
0085 0834 00235 MOVF out_reg0,W ;选择相应的输入信号给1号输出通道
0086 00B8 00236 MOVWF in_numble ;
0087 3000 00237 MOVLW 0H
0088 00B9 00238 MOVWF out_numble ;
0089 200C 00239 CALL SEL_INX_OUTY ;
008A 0AB4 00240 INCF out_reg0,F ;
008B 00241 WAIT0:
008B 0064 00242 CLRWDT ;
008C 1F86 00243 BTFSS IN_OUT_PORT,KEY0
008D 288B 00244 GOTO WAIT0 ;检测按键有无松开
00245
008E 00246 CLR_TIME0:
008E 01B0 00247 CLRF TIMER15S1 ;
008F 2890 00248 GOTO CHECK_KEY1
00249
00250 ;******************************************************************************
0090 00251 CHECK_KEY1: ;检测按键2
0090 1B06 00252 BTFSC IN_OUT_PORT,KEY1
0091 28A3 00253 GOTO CLR_TIME1 ;
0092 3003 00254 MOVLW 3H ;去抖动
0093 0231 00255 SUBWF TIMER15S2,W ;
0094 1C03 00256 BTFSS STATUS,C ;
0095 28A5 00257 GOTO CHECK_KEY2 ;
00258
MPASM 4.02 Released CONTROL.ASM 5-11-2006 20:48:14 PAGE 6
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0096 3004 00259 MOVLW 4H ;检测按键是否循环了4次
0097 0235 00260 SUBWF out_reg1,W ;
0098 1803 00261 BTFSC STATUS,C ;
0099 01B5 00262 CLRF out_reg1 ;
00263
009A 0835 00264 MOVF out_reg1,W ;选择相应的输入信号给2号输出通道
009B 00B8 00265 MOVWF in_numble ;
009C 3001 00266 MOVLW 1H
009D 00B9 00267 MOVWF out_numble ;
009E 200C 00268 CALL SEL_INX_OUTY ;
009F 0AB5 00269 INCF out_reg1,F ;
00A0 00270 WAIT1:
00A0 0064 00271 CLRWDT ;
00A1 1F06 00272 BTFSS IN_OUT_PORT,KEY1
00A2 28A0 00273 GOTO WAIT1 ;检测按键有无松开
00274
00A3 00275 CLR_TIME1:
00A3 01B1 00276 CLRF TIMER15S2 ;
00A4 28A5 00277 GOTO CHECK_KEY2
00278
00279 ;******************************************************************************
00A5 00280 CHECK_KEY2: ;检测按键3
00A5 1A86 00281 BTFSC IN_OUT_PORT,KEY2
00A6 28B8 00282 GOTO CLR_TIME2 ;
00A7 3003 00283 MOVLW 3H ;去抖动
00A8 0232 00284 SUBWF TIMER15S3,W ;
00A9 1C03 00285 BTFSS STATUS,C ;
00AA 28BA 00286 GOTO CHECK_KEY3 ;
00287
00AB 3004 00288 MOVLW 4H ;检测按键是否循环了4次
00AC 0236 00289 SUBWF out_reg2,W ;
00AD 1803 00290 BTFSC STATUS,C ;
00AE 01B6 00291 CLRF out_reg2 ;
00292
00AF 0836 00293 MOVF out_reg2,W ;选择相应的输入信号给3号输出通道
00B0 00B8 00294 MOVWF in_numble ;
00B1 3002 00295 MOVLW 2H
00B2 00B9 00296 MOVWF out_numble ;
00B3 200C 00297 CALL SEL_INX_OUTY ;
00B4 0AB6 00298 INCF out_reg2,F ;
00B5 00299 WAIT2:
00B5 0064 00300 CLRWDT ;
00B6 1E86 00301 BTFSS IN_OUT_PORT,KEY2
00B7 28B5 00302 GOTO WAIT2 ;检测按键有无松开
00303
00B8 00304 CLR_TIME2:
00B8 01B2 00305 CLRF TIMER15S3 ;
00B9 28BA 00306 GOTO CHECK_KEY3
00307
00308 ;******************************************************************************
00BA 00309 CHECK_KEY3: ;检测按键4
00BA 1A06 00310 BTFSC IN_OUT_PORT,KEY3
00BB 28CD 00311 GOTO CLR_TIME3 ;
MPASM 4.02 Released CONTROL.ASM 5-11-2006 20:48:14 PAGE 7
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00BC 3003 00312 MOVLW 3H ;去抖动
00BD 0233 00313 SUBWF TIMER15S4,W ;
00BE 1C03 00314 BTFSS STATUS,C ;
00BF 287A 00315 GOTO LOOP ;
00316
00C0 3004 00317 MOVLW 4H ;检测按键是否循环了4次
00C1 0237 00318 SUBWF out_reg3,W ;
00C2 1803 00319 BTFSC STATUS,C ;
00C3 01B7 00320 CLRF out_reg3 ;
00321
00C4 0837 00322 MOVF out_reg3,W ;选择相应的输入信号给4号输出通道
00C5 00B8 00323 MOVWF in_numble ;
00C6 3003 00324 MOVLW 3H
00C7 00B9 00325 MOVWF out_numble ;
00C8 200C 00326 CALL SEL_INX_OUTY ;
00C9 0AB7 00327 INCF out_reg3,F ;
00CA 00328 WAIT3:
00CA 0064 00329 CLRWDT ;
00CB 1E06 00330 BTFSS IN_OUT_PORT,KEY3
00CC 28CA 00331 GOTO WAIT3 ;检测按键有无松开
00332
00CD 00333 CLR_TIME3:
00CD 01B3 00334 CLRF TIMER15S4 ;
00CE 287A 00335 GOTO LOOP ;循环
00336 ;******************************************************************************
00337 END
MPASM 4.02 Released CONTROL.ASM 5-11-2006 20:48:14 PAGE 8
SYMBOL TABLE
LABEL VALUE
ADEN 00000003
BRGH 00000002
C 00000000
C1INV 00000004
C1OUT 00000006
C2INV 00000005
C2OUT 00000007
CCP1CON 00000017
CCP1IE 00000002
CCP1IF 00000002
CCP1M0 00000000
CCP1M1 00000001
CCP1M2 00000002
CCP1M3 00000003
CCP1X 00000005
CCP1Y 00000004
CCPR1H 00000016
CCPR1L 00000015
CHECK_IN0 0000000D
CHECK_IN1 00000014
CHECK_IN2 0000001B
CHECK_IN3 00000022
CHECK_KEY0 0000007B
CHECK_KEY1 00000090
CHECK_KEY2 000000A5
CHECK_KEY3 000000BA
CHECK_OUT0 00000029
CHECK_OUT1 00000030
CHECK_OUT2 00000037
CHECK_OUT3 0000003E
CIS 00000003
CLR_TIME0 0000008E
CLR_TIME1 000000A3
CLR_TIME2 000000B8
CLR_TIME3 000000CD
CM0 00000000
CM1 00000001
CM2 00000002
CMCON 0000001F
CMIE 00000006
CMIF 00000006
CONTROL_DDR 00000085
CONTROL_PORT 00000005
CREN 00000004
CSRC 00000007
DC 00000001
EEADR 0000009B
EECON1 0000009C
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -