📄 user.lst
字号:
0000004C 00076 W_MIN_T EQU 4CH ;分十位
0000004D 00077 W_MIN_S EQU 4DH ;分各位
Warning[205]: Found directive in column 1. (ENDIF)
00078 ENDIF
00079
00080
00081 ;**************************************************************************
00082
00083 ;************************************************************************
00084 ;通用标志定义
00000030 00085 SYS_REG EQU 30H ;系统标志
00086 #DEFINE SYS_ON 0H ;启动输出标志
00087 #DEFINE NEW_DAT 1H ;新数据标志
00088 #DEFINE SYS_TYP 2H ;档位标志
00089 #DEFINE DS_SS_SY 3H ;显示闪烁标志
00013
0000 00014 ORG 00H ; Retset Vector
0000 281E 00015 GOTO MAIN
00016
0004 00017 ORG 04H ; Skip over interrupt vecter
0004 292B 00018 GOTO INTZ
00019 ;**********************************************************************************
00020 ;显示编码表
0005 018A 00021 DS_BM CLRF PCLATH
0006 0782 00022 ADDWF PCL,1
0007 343F 00023 RETLW B'00111111' ;0
0008 3406 00024 RETLW B'00000110' ;1
0009 345B 00025 RETLW B'01011011' ;2
000A 344F 00026 RETLW B'01001111' ;3
000B 3466 00027 RETLW B'01100110' ;4
000C 346D 00028 RETLW B'01101101' ;5
000D 347D 00029 RETLW B'01111101' ;6
000E 3407 00030 RETLW B'00000111' ;7
000F 347F 00031 RETLW B'01111111' ;8
0010 346F 00032 RETLW B'01101111' ;9
0011 3477 00033 RETLW B'01110111' ;A
0012 34D6 00034 RETLW B'11010110' ;B
MPASM 03.20.02 Released USER.ASM 1-26-2007 13:22:51 PAGE 10
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0013 34F0 00035 RETLW B'11110000' ;C
0014 34C7 00036 RETLW B'11000111' ;D
0015 34F2 00037 RETLW B'11110010' ;E
0016 3472 00038 RETLW B'01110010' ;F
0017 3400 00039 RETLW B'00000000' ;熄灭码
0018 3473 00040 RETLW B'01110011' ;P
0019 3442 00041 RETLW B'01000010' ;R
001A 3497 00042 RETLW B'10010111' ;Y
001B 3446 00043 RETLW B'01000110' ;N
001C 34C6 00044 RETLW B'11000110' ;O
001D 3457 00045 RETLW B'01010111' ;H
00046 ;***********************************************************************
00047
00048 ;******************************************************************
00049 ; 控制程序
00050 ;******************************************************************
00051
00052 ;主循环
001E 21E5 00053 MAIN CALL INIT ;初始化系统
001F 2218 00054 CALL INT_TASK ;初始化任务
0020 1030 00055 BCF SYS_REG,SYS_ON ;开始默认输出无效
0021 2230 00056 CALL INIT_CS ;初始化参数
0022 29C6 00057 GOTO OS_START ;系统启动
0023 2823 00058 GOTO $
00059 ;*******************************************************************
00060 ;任务0处理,显示处理,及扫键
0024 1029 00061 TASK0 BCF TIM_OV,TASKID0
0025 018A 00062 CLRF PCLATH
0026 0838 00063 MOVF DS_COM,W
0027 3903 00064 ANDLW B'00000011'
0028 0782 00065 ADDWF PCL,1
0029 282C 00066 GOTO DS_RUN ;0:正常显示参数
002A 2841 00067 GOTO DS_FS1 ;1:闪烁显示
002B 286A 00068 GOTO CLS
00069
00070 ;***************************************************************
002C 1CB0 00071 DS_RUN BTFSS SYS_REG,NEW_DAT ;如果数据已经转换,则不再转换;
002D 284C 00072 GOTO DS_OUT
002E 10B0 00073 DS_CH BCF SYS_REG,NEW_DAT
00074
002F 303C 00075 MOVLW DS_RAM
0030 0084 00076 MOVWF FSR
00077
0031 0848 00078 MOVF WORK_MIN,W
0032 21DC 00079 CALL HEXTOBCD ;分,进制转换
00080
0033 0862 00081 MOVF DS_S2,W
0034 0080 00082 MOVWF INDF ;LED1
00083
0035 0A84 00084 INCF FSR,1
0036 0861 00085 MOVF DS_S1,W
0037 0080 00086 MOVWF INDF
00087
MPASM 03.20.02 Released USER.ASM 1-26-2007 13:22:51 PAGE 11
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0038 0849 00088 MOVF WORK_SEC,W ;秒,进制转换
0039 21DC 00089 CALL HEXTOBCD
003A 0A84 00090 INCF FSR,1
003B 0862 00091 MOVF DS_S2,W
003C 0080 00092 MOVWF INDF ;LED3
00093
003D 0A84 00094 INCF FSR,1
003E 0861 00095 MOVF DS_S1,W
003F 0080 00096 MOVWF INDF
0040 284C 00097 GOTO DS_OUT
00098 ;**************************************************************
00099 ;闪烁控制
0041 18B0 00100 DS_FS1 BTFSC SYS_REG,NEW_DAT
0042 282E 00101 GOTO DS_CH
00102
0043 0ABA 00103 INCF DS_FP,1
0044 1FBA 00104 BTFSS DS_FP,7
0045 284C 00105 GOTO DS_OUT ;0.5S闪烁1次
0046 083B 00106 MOVF DS_SS,W
0047 0239 00107 SUBWF DS_PC,W
0048 1803 00108 BTFSC STATUS,C ;如果当前位需要闪烁,则替换成熄灭码
0049 284C 00109 GOTO DS_OUT
004A 01E1 00110 CLRF DS_S1
004B 285B 00111 GOTO SET_PC
00112
00113 ;*****************************************************************
00114
00115 ;****************************************************************************
004C 303C 00116 DS_OUT MOVLW DS_RAM
004D 0739 00117 ADDWF DS_PC,W ;指向指针所指向的单元
004E 0084 00118 MOVWF FSR
004F 0800 00119 MOVF INDF,W ;取数据
0050 391F 00120 ANDLW B'00011111'
0051 2005 00121 CALL DS_BM ;查显示编码
0052 00E1 00122 MOVWF DS_S1 ;设置显示数据
0053 0839 00123 MOVF DS_PC,W
0054 3C01 00124 SUBLW D'1'
0055 1C03 00125 BTFSS STATUS,C
0056 285B 00126 GOTO SET_PC
00127
0057 1DB0 00128 BTFSS SYS_REG,DS_SS_SY
0058 13E1 00129 BCF DS_S1,7
0059 19B0 00130 BTFSC SYS_REG,DS_SS_SY
005A 17E1 00131 BSF DS_S1,7
00132
005B 307F 00133 SET_PC MOVLW 7FH
005C 00E2 00134 MOVWF DS_S2
005D 0839 00135 MOVF DS_PC,W
005E 00E0 00136 MOVWF DS_CNT ;取显示指针
005F 00137 PC_RATE
005F 0860 00138 MOVF DS_CNT,W
0060 1903 00139 BTFSC STATUS,Z
0061 2866 00140 GOTO INC_PC ;设置显示指针
MPASM 03.20.02 Released USER.ASM 1-26-2007 13:22:51 PAGE 12
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0062 1403 00141 BSF STATUS,C
0063 0CE2 00142 RRF DS_S2,1
0064 03E0 00143 DECF DS_CNT,1
0065 285F 00144 GOTO PC_RATE
0066 0AB9 00145 INC_PC INCF DS_PC,1 ;指向下一个显示单元
0067 1939 00146 BTFSC DS_PC,2
0068 01B9 00147 CLRF DS_PC ;如果超位,则归零
0069 286D 00148 GOTO DS_END
00149 ;*************************************************************************
006A 01E1 00150 CLS CLRF DS_S1 ;清屏
006B 01E2 00151 CLRF DS_S2
006C 01B9 00152 CLRF DS_PC ;显示指针归零
006D 21D6 00153 DS_END CALL XS_DRV_SC ;驱动显示
00154 ;**************************************************************************
00155 ;开始扫键处理
006E 00156 K_BEG
006E 0AC3 00157 INCF K_LB,1 ;滤波器递增
006F 0806 00158 MOVF KSTA,W
0070 390F 00159 ANDLW B'00001111' ;取有效的按键信息
0071 00C1 00160 MOVWF K_NEW
0072 3A0F 00161 XORLW B'00001111'
0073 1903 00162 BTFSC STATUS,Z
0074 288D 00163 GOTO NO_KEY ;无键,则转
00164
0075 01CE 00165 CLRF K_N_LB
0076 0841 00166 MOVF K_NEW,W
0077 0642 00167 XORWF K_VAL,W
0078 1903 00168 BTFSC STATUS,Z ;判别是否和上次按键一样
0079 287D 00169 GOTO K_LB_S ;一样,则滤波开始
007A 01C3 00170 CLRF K_LB
007B 0841 00171 MOVF K_NEW,W ;否则替换按键信息
007C 00C2 00172 MOVWF K_VAL
00173
007D 1EC3 00174 K_LB_S BTFSS K_LB,5 ;滤波等待
007E 2893 00175 GOTO K_END
00176
007F 0842 00177 MOVF K_VAL,W
0080 064B 00178 XORWF K_OLD,W
0081 1D03 00179 BTFSS STATUS,Z
0082 2889 00180 GOTO KEY_YX ;如果不是重复键,则直接有效
00181
00182
0083 0842 00183 MOVF K_VAL,W
0084 3A07 00184 XORLW K_ON
0085 1903 00185 BTFSC STATUS,Z
0086 2893 00186 GOTO K_END
00187
Warning[205]: Found directive in column 1. (IF)
00188 IF DW_SYB
00189 MOVF K_VAL,W
00190 XORLW K_TYP
00191 BTFSC STATUS,Z
00192 GOTO K_END ;在单档时,档位按键做秒键使用,也连续有效
MPASM 03.20.02 Released USER.ASM 1-26-2007 13:22:51 PAGE 13
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00193 ENDIF
00194
0087 1F43 00195 BTFSS K_LB,6 ;滤波等待(时间设置滤波时间长)
0088 2893 00196 GOTO K_END
00197
0089 0842 00198 KEY_YX MOVF K_VAL,W
008A 00CB 00199 MOVWF K_OLD ;替换上次按键信息
008B 3001 00200 MOVLW TASKID1 ;击活按键处理
008C 21B6 00201 CALL EN_TASK
008D 0ACE 00202 NO_KEY INCF K_N_LB,1
008E 1DCE 00203 BTFSS K_N_LB,3
008F 2893 00204 GOTO K_END
0090 01CE 00205 CLRF K_N_LB
0091 01CB 00206 CLRF K_OLD
0092 01C3 00207 CLRF K_LB
0093 0008 00208 K_END RETURN
00209 ;**********************************************************************
00210
00211 ;****************************************************************************
00212 ;任务1处理,按键处理
0094 10A9 00213 TASK1 BCF TIM_OV,TASKID1
0095 0842 00214 MOVF K_VAL,W
0096 3A0E 00215 XORLW K_MIN
0097 1903 00216 BTFSC STATUS,Z ;分键值判别
0098 28A6 00217 GOTO MIN_CL
00218
0099 0842 00219 MOVF K_VAL,W ;秒键值判别
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -