clk.lst

来自「這是一個非常好的key scan and display控制電路和程式」· LST 代码 · 共 1,145 行 · 第 1/5 页

LST
1,145
字号
021A 0FC7           00592         XORLW   D'199'          ;= 199 THEN SKIP
021B 0743           00593         BTFSS   STATUS,Z        ;       /
021C 0800           00594         RETLW   0
                    00595 ;INC SECONDS COUNT
021D 0068           00596         CLRF    MSTMR           ;CLEAR MS_TMR
021E 0216           00597         MOVF    MIN_SEC,W       ;GET MIN_SEC TIMER
021F 0E0F           00598         ANDLW   B'00001111'     ;MASK MINUTES
0220 0743           00599         BTFSS   STATUS,Z        ;ZERO THEN SKIP
0221 00F6           00600         DECF    MIN_SEC, F      ;REDUCE SECONDS
0222 0C09           00601         MOVLW   STMR            ;LOAD FSR WITH S_TMR
0223 0024           00602         MOVWF   FSR             ;       /
0224 0955           00603         CALL    INC_60          ;INC SECONDS
0225 0D00           00604         IORLW   0               ;DO AN OPERATION
0226 0743           00605         BTFSS   STATUS,Z        ;IF RETURN = 0 SKIP
0227 0A38           00606         GOTO    CHK_AL_TIM      ;CHK ALRM 
                    00607 ;INC MINUTES COUNT
0228 03B6           00608         SWAPF   MIN_SEC, F      ;SWAP MIN SEC
0229 0216           00609         MOVF    MIN_SEC,W       ;GET MIN_SEC IN W
022A 0E0F           00610         ANDLW   B'00001111'     ;MASK SECONDS
022B 0743           00611         BTFSS   STATUS,Z        ;SKIP IF NOT SET
MPASM 01.40 Released              CLK.ASM   1-16-1997  13:07:37         PAGE 17
Alarm Clock

LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

022C 00F6           00612         DECF    MIN_SEC, F      ;ELSE DEC
022D 03B6           00613         SWAPF   MIN_SEC, F      ;SWAP BACK
022E 0966           00614         CALL    CHK_SILNC_TIM   ;SILNCE ON?
022F 0C0A           00615         MOVLW   MTMR            ;INC MINUTES
0230 0024           00616         MOVWF   FSR             ;       /
0231 0955           00617         CALL    INC_60          ;       /
0232 0D00           00618         IORLW   0               ;DO AN OPERATION
0233 0743           00619         BTFSS   STATUS,Z        ;IF 0 THEN SKIP
0234 0A38           00620         GOTO    CHK_AL_TIM      ;CHECK ALRAM TIME
                    00621 ;INC HOUR COUNT
0235 0C0B           00622         MOVLW   HTMR            ;GET HTMR IN FSR
0236 0024           00623         MOVWF   FSR
0237 0989           00624         CALL    INC_HR          ;INC HOURS
                    00625 ;
0238                00626 CHK_AL_TIM
0238 0718           00627         BTFSS   ALFLAG,ALONOF   ;IF OFF QUIT
0239 0800           00628         RETLW   0               ;       /
023A 0658           00629         BTFSC   ALFLAG,SILNC    ;RET IF IN SILENCE
023B 0800           00630         RETLW   0
023C 0638           00631         BTFSC   ALFLAG,INAL     ;ALREADY DONE
023D 0A4D           00632         GOTO    CHK_1_MIN       ;SEE IF 1 MIN UP
                    00633 ;        RETLW   0               ;YES THEN QUIT
023E 020D           00634         MOVF    HALARM,W        ;CHK HRS
023F 018B           00635         XORWF   HTMR,W          ;EQUAL?
0240 0743           00636         BTFSS   STATUS,Z        ;YES THEN SKIP
0241 0800           00637         RETLW   0               ;ELSE RET
0242 020C           00638         MOVF    MALARM,W        ;CHK MIN
0243 018A           00639         XORWF   MTMR,W          ;EQUAL?
0244 0743           00640         BTFSS   STATUS,Z        ;YES THEN SKIP
0245 0800           00641         RETLW   0               ;ELSE RET
0246 0209           00642         MOVF    STMR,W          ;SEE IF SEC=0
0247 0743           00643         BTFSS   STATUS,Z        ;YES THEN SKIP
0248 0800           00644         RETLW   0               ;NO THEN RET
0249 0538           00645         BSF     ALFLAG,INAL     ;SET IN ALARM FLAG
024A 0C10           00646         MOVLW   10              ;SET 1 MIN TIMER
024B 0036           00647         MOVWF   MIN_SEC         ;       /
024C 0800           00648         RETLW   0
                    00649 ;
024D                00650 CHK_1_MIN
024D 0396           00651         SWAPF   MIN_SEC,W       ;SWAP IN W
024E 0E0F           00652         ANDLW   B'00001111'     ;CHK MINUTES
024F 0743           00653         BTFSS   STATUS,Z        ;0 THEN SKIP
0250 0800           00654         RETLW   0               ;ELSE RET
0251 0438           00655         BCF     ALFLAG,INAL     ;CLR IN ALARM
0252 0478           00656         BCF     ALFLAG,INAA     ;CLR IN AA
0253 0505           00657         BSF     PORT_A,BEP      ;STOP BEEPER
0254 0800           00658         RETLW   0
                    00659 ;
0255                00660 INC_60
0255 02A0           00661         INCF    F0, F           ;INC AND GET IN W
0256 0200           00662         MOVF    F0,0            ;       /
0257 0E0F           00663         ANDLW   B'00001111'     ;MASK HI BITS
0258 0F0A           00664         XORLW   B'00001010'     ;= 10 THEN MAKE IT 0
MPASM 01.40 Released              CLK.ASM   1-16-1997  13:07:37         PAGE 18
Alarm Clock

LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0259 0743           00665         BTFSS   STATUS,Z        ;       /
025A 0801           00666         RETLW   1               ;ELSE RETURN NON ZERO
025B 0CF0           00667         MOVLW   B'11110000'     ;ZERO LSB
025C 0160           00668         ANDWF   F0, F           ;  /
025D 03A0           00669         SWAPF   F0, F           ;SWAP INDIRECT
025E 02A0           00670         INCF    F0, F           ;INC
025F 0200           00671         MOVF    F0,0            ;GET IN W
0260 03A0           00672         SWAPF   F0, F           ;SWAP F0 BACK
0261 0F06           00673         XORLW   D'6'            ;=6 THEN SKIP
0262 0743           00674         BTFSS   STATUS,Z        ;       /
0263 0801           00675         RETLW   1               ;ELSE RETURN NZ
0264 0060           00676         CLRF    F0              ;       /
0265 0800           00677         RETLW   0               ;RET 0
                    00678 ;
MPASM 01.40 Released              CLK.ASM   1-16-1997  13:07:37         PAGE 19
Alarm Clock

LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                    00679     PAGE
                    00680 ;
0266                00681 CHK_SILNC_TIM
0266 0758           00682         BTFSS   ALFLAG,SILNC    ;CHK IF IN SILENCE
0267 0800           00683         RETLW   0               ;NO THEN SKIP
0268 0396           00684         SWAPF   MIN_SEC,W       ;GET MIN IN W
0269 0E0F           00685         ANDLW   B'00001111'     ;MASK SECS
026A 0743           00686         BTFSS   STATUS,Z        ;ZERO?
026B 0800           00687         RETLW   0               ;NO THEN RET
026C 0458           00688         BCF     ALFLAG,SILNC    ;RESET SILENCE
026D 0C10           00689         MOVLW   10              ;SET I MIN TIMER
026E 0036           00690         MOVWF   MIN_SEC         ;       /
026F 0800           00691         RETLW   0
                    00692 ;
                    00693 ;
0270                00694 CHK_DE_BOUNCE
0270 06B7           00695         BTFSC   ENTFLG,INKEYBEP ;IN KEY BEEP?
0271 0A76           00696         GOTO    CHK_DEB_1       ;YES THEN DEC TIMER
0272 07B0           00697         BTFSS   FLAG,KEY_BEEP   ;KEY BEEP SET?
0273 0A7F           00698         GOTO    CHK_SERV        ;NO, SEE IF SERVICED
0274 0678           00699         BTFSC   ALFLAG,INAA     ;IN AA?
0275 0A86           00700         GOTO    CHK_BEP_ON      ;YES THEN SEE IF ON
0276                00701 CHK_DEB_1
0276 05B7           00702         BSF     ENTFLG,INKEYBEP ;SET FLAG
0277 0215           00703         MOVF    DEBOUNCE,W      ;GET IN W
0278 0643           00704         BTFSC   STATUS,Z        ;NZ THEN SKIP
0279 0C14           00705         MOVLW   D'20'           ;ELSE DB 100 mSEC
027A 0035           00706         MOVWF   DEBOUNCE        ;       /
027B 0405           00707         BCF     PORT_A,BEP      ;TURN ON BEEPER
027C 02F5           00708         DECFSZ  DEBOUNCE, F     ;DEC AND CHK
027D 0A08           00709         GOTO    UP_TMR_1        ;GO BACK
027E 0505           00710         BSF     PORT_A,BEP      ;TURN OFF BEEPER
027F                00711 CHK_SERV
                    00712 ;        CLRF    DEBOUNCE
                    00713 ;        BSF     PORT_A,BEP
027F 07F0           00714         BTFSS   FLAG,SERVICED   ;SERVICED THEN SKIP
0280 0A08           00715         GOTO    UP_TMR_1        ;GO BACK
0281 04F0           00716         BCF     FLAG,SERVICED   ;ELSE CLEAR FLAGS
0282 04D0           00717         BCF     FLAG,KEY_HIT    ;       /
0283 04B0           00718         BCF     FLAG,KEY_BEEP   ;RESET FLAG
0284 04B7           00719         BCF     ENTFLG,INKEYBEP ;    /
0285 0A08           00720         GOTO    UP_TMR_1        ;GO BACK
                    00721 ;
0286                00722 CHK_BEP_ON
0286 0705           00723         BTFSS   PORT_A,BEP      ;IF OFF THEN SKIP
0287 0A08           00724         GOTO    UP_TMR_1        ;ELSE WAIT 
0288 0A76           00725         GOTO    CHK_DEB_1       ;RETURN
                    00726 ;
                    00727 ;
0289                00728 INC_HR
0289 02A0           00729         INCF    F0, F           ;INC HOUR TIMER
028A 0200           00730         MOVF    F0,W            ;GET HR TMR IN W
028B 0031           00731         MOVWF   TEMP            ;SAVE IN TEMP
MPASM 01.40 Released              CLK.ASM   1-16-1997  13:07:37         PAGE 20
Alarm Clock

LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

028C 0E0F           00732         ANDLW   B'00001111'     ;CHK LO BYTE = 10
028D 0F0A           00733         XORLW   D'10'           ;       /
028E 0743           00734         BTFSS   STATUS,Z        ;YES THEN SKIP
028F 0A93           00735         GOTO    INC_AM_PM       ;ELSE CHK 12
0290 0C10           00736         MOVLW   B'00010000'     ;LOAD 1 IN MSB
0291 0020           00737         MOVWF   F0
0292 0AA3           00738         GOTO    RESTORE_AM_PM   ;RESTORE AM/PM
0293                00739 INC_AM_PM
0293 04E0           00740         BCF     F0,AM_PM        ;CLEAR AM/PM
0294 0200           00741         MOVF    F0,W            ;GET IN W
0295 0F12           00742         XORLW   12H             ;SEE IF 12 HEX
0296 0743           00743         BTFSS   STATUS,Z        ;YES THEN SKIP
0297 0A9D           00744         GOTO    CHK_13          ;ELSE CHK 13
0298 07F1           00745         BTFSS   TEMP,AM_PM      ;IF SET, SKIP
0299 0A9C           00746         GOTO    SET_AM_PM       ;ELSE SET
029A 04E0           00747         BCF     F0,AM_PM        ;CLEAR FLAG
029B 0800           00748         RETLW   0               ;RETURN
029C                00749 SET_AM_PM
029C 05E0           00750         BSF     F0,AM_PM        ;SET FLAG
029D                00751 CHK_13
029D 0200           00752         MOVF    F0,W            ;GET IN W
029E 0F13           00753         XORLW   13H             ;SEE IF 13
029F 0743           00754         BTFSS   STATUS,Z        ;YES THEN SKIP
02A0 0AA3           00755         GOTO    RESTORE_AM_PM
02A1                00756 SET_1_HR     
02A1 0C01           00757         MOVLW   B'00000001'     ;SET TO 1
02A2 0020           00758         MOVWF   F0
02A3                00759 RESTORE_AM_PM
02A3 06F1           00760         BTFSC   TEMP,AM_PM      ;SKIP IF AM
02A4 05E0           00761         BSF     F0,AM_PM        ;ELSE SET TO PM
02A5 0800           00762         RETLW   0
                    00763 ;
                    00764 ;
                    00765 ;
MPASM 01.40 Released              CLK.ASM   1-16-1997  13:07:37         PAGE 21
Alarm Clock

LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                    00766     PAGE
0400                00767         ORG     400
                    00768 ;
                    00769 ;KEY DEFINITIONS
  0000000A          00770 ALARM_KEY       EQU     0A 
  0000000B          00771 CE_KEY          EQU     0B
  0000000C          00772 SNOOZE_KEY      EQU     0C
  0000000D          00773 AM_PM_KEY       EQU     0D
  0000000E          00774 CLR_ALARM_KEY   EQU     0E
  0000000F          00775 SET_KEY         EQU     0F
                    00776 ;
0400                00777 SERVICE_KEYS
0400 07D0           00778         BTFSS   FLAG,KEY_HIT    ;NO KEY HIT THEN ...
0401 0800           00779         RETLW   0               ;RETURN
0402 06F0           00780         BTFSC   FLAG,SERVICED   ;IF NOT SERVICED SKIP
0403 0800           00781         RETLW   0               ;ELSE RETURN
0404 05F0           00782         BSF     FLAG,SERVICED   ;SET SERVICED FLAG
0405 0210           00783         MOVF    FLAG,W          ;GET MODE OF OPERATION
0406 0E03           00784         ANDLW   B'00000011'     ;       /
0407 0643           00785         BTFSC   STATUS,Z        ;00 THEN RTM
0408 0A10           00786         GOTO    RTMKS           ;RTM KEY SERVICE
0409 0031           00787         MOVWF   TEMP            ;SAVE IN TEMP
040A 02F1           00788         DECFSZ  TEMP, F         ;REDUCE TEMP
040B 0A0D           00789         GOTO    SK1             ;SKIP
040C 0A1D           00790         GOTO    ATMKS           ;01, DO ALARM MODE

⌨️ 快捷键说明

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