📄 timin.sdi
字号:
00000062,1403,, BSF STATUS,C ; get ready to subtract
00000063,02A1,, SUBWF Lobyte ; sub 10h from low byte
00000064,1803,, BTFSC STATUS,C ; borrow required?
00000065,286E,, GOTO sub27 ; no - sub high byte
,,,
00000066,08A0,, MOVF Hibyte,F ; yes - check high byte
00000067,1D03,, BTFSS STATUS,Z ; zero?
00000068,286D,, GOTO take1 ; no - take borrow
,,,
00000069,3010,, MOVLW 010 ; yes - load low byte to add
0000006A,1003,, BCF STATUS,C ; get ready to add
0000006B,07A1,, ADDWF Lobyte ; restore low byte
0000006C,287C,, GOTO subE8 ; next digit
,,,
0000006D,03A0,take1,take1 DECF Hibyte ; take borrow
,,,
0000006E,3027,sub27,sub27 MOVLW 027 ; get high byte to sub
0000006F,1403,, BSF STATUS,C ; get ready to subtract
00000070,02A0,, SUBWF Hibyte ; sub from high byte
00000071,1C03,, BTFSS STATUS,C ; borrow taken?
00000072,2875,, GOTO done1 ; yes - restore remainder
00000073,0AA2,, INCF Tents ; no - count ten thousand
00000074,2861,, GOTO sub10 ; sub 10000 again
,,,
00000075,3010,done1,done1 MOVLW 010 ; restore..
00000076,1003,, BCF STATUS,C ; get ready to add
00000077,07A1,, ADDWF Lobyte ; restore low byte
00000078,1803,, BTFSC STATUS,C ; Carry into high byte?
00000079,0AA0,, INCF Hibyte ; yes - add carry to high byte
0000007A,3027,, MOVLW 027 ; restore..
0000007B,07A0,, ADDWF Hibyte ; ..high byte
,,,
,,,
,,,; Subtract 1000d (03E8) and count.................................
,,,
0000007C,30E8,subE8,subE8 MOVLW 0E8 ; get low byte to sub
0000007D,1403,, BSF STATUS,C ; get ready to subtract
0000007E,02A1,, SUBWF Lobyte ; sub from low byte
0000007F,1803,, BTFSC STATUS,C ; borrow required?
00000080,2889,, GOTO sub03 ; no - do high byte
,,,
00000081,08A0,, MOVF Hibyte,F ; yes - check high byte
00000082,1D03,, BTFSS STATUS,Z ; zero?
00000083,2888,, GOTO take2 ; no - take borrow
,,,
00000084,30E8,, MOVLW 0E8 ; load low byte to add
00000085,1003,, BCF STATUS,C ; get ready to add
00000086,07A1,, ADDWF Lobyte ; restore low byte
00000087,2897,, GOTO sub64 ; next digit
,,,
00000088,03A0,take2,take2 DECF Hibyte ; take borrow
,,,
00000089,3003,sub03,sub03 MOVLW 03 ; get high byte
0000008A,1403,, BSF STATUS,C ; get ready to subtract
0000008B,02A0,, SUBWF Hibyte ; sub from high byte
0000008C,1C03,, BTFSS STATUS,C ; borrow taken?
0000008D,2890,, GOTO done2 ; yes - restore high byte
0000008E,0AA3,, INCF Thous ; no - count ten thousand
0000008F,287C,, GOTO subE8 ; sub 1000 again
,,,
00000090,30E8,done2,done2 MOVLW 0E8 ; restore..
00000091,1003,, BCF STATUS,C ; get ready to add
00000092,07A1,, ADDWF Lobyte ; restore low byte
00000093,1803,, BTFSC STATUS,C ; Carry into high byte?
00000094,0AA0,, INCF Hibyte ; yes - add carry to high byte
00000095,3003,, MOVLW 03 ; restore..
00000096,07A0,, ADDWF Hibyte ; ..high byte
,,,
,,,
,,,
,,,; Subtract 100d (064h) and count.................................
,,,
00000097,3064,sub64,sub64 MOVLW 064 ; get low byte
00000098,1403,, BSF STATUS,C ; get ready to subtract
00000099,02A1,, SUBWF Lobyte ; sub from low byte
0000009A,1803,, BTFSC STATUS,C ; borrow required?
0000009B,28A4,, GOTO inchun ; no - inc count
,,,
0000009C,08A0,, MOVF Hibyte,F ; yes - check high byte
0000009D,1D03,, BTFSS STATUS,Z ; zero?
0000009E,28A3,, GOTO take3 ; no - take borrow
,,,
0000009F,3064,, MOVLW 064 ; load low byte to add
000000A0,1003,, BCF STATUS,C ; get ready to add
000000A1,07A1,, ADDWF Lobyte ; restore low byte
000000A2,28A6,, GOTO subA ; next digit
,,,
000000A3,03A0,take3,take3 DECF Hibyte ; take borrow
,,,
000000A4,0AA4,inchun,inchun INCF Hunds ; count hundred
000000A5,2897,, GOTO sub64 ; sub 100 again
,,,
,,,
,,,; Subtract 10d (0Ah) and count, leaving remainder.................
,,,
000000A6,300A,subA,subA MOVLW 0A ; get low byte to sub
000000A7,1403,, BSF STATUS,C ; get ready to subtract
000000A8,02A1,, SUBWF Lobyte ; sub from low byte
000000A9,1C03,, BTFSS STATUS,C ; borrow required?
000000AA,28AD,, GOTO rest4 ; yes - restore byte
000000AB,0AA5,, INCF Tens ; no - count one hundred
000000AC,28A6,, GOTO subA ; and repeat
,,,
000000AD,07A1,rest4,rest4 ADDWF Lobyte ; restore low byte
000000AE,0821,, MOVF Lobyte,W ; copy remainder..
000000AF,00A6,, MOVWF Ones ; to ones register
,,,
000000B0,0008,, RETURN ; done
,,,
,,,;---------------------------------------------------------------
,,,; Display period in microseconds
,,,;---------------------------------------------------------------
,,,
000000B1,14F4,disp,disp BSF Select,RS ; Set display data mode
,,,
000000B2,3054,, MOVLW 'T' ; Time period
000000B3,2028,, CALL send ; Display it
000000B4,3020,, MOVLW ' ' ; Space
000000B5,2028,, CALL send ; Display it
000000B6,303D,, MOVLW '=' ; Equals
000000B7,2028,, CALL send ; Display it
000000B8,3020,, MOVLW ' ' ; Space
000000B9,2028,, CALL send ; Display it
,,,
,,,; Supress leading zeros.........................................
,,,
000000BA,08A2,, MOVF Tents,F ; Check digit
000000BB,1D03,, BTFSS STATUS,Z ; zero?
000000BC,28C9,, GOTO show1 ; no - show it
,,,
000000BD,08A3,, MOVF Thous,F ; Check digit
000000BE,1D03,, BTFSS STATUS,Z ; zero?
000000BF,28CC,, GOTO show2 ; no - show it
,,,
000000C0,08A4,, MOVF Hunds,F ; Check digit
000000C1,1D03,, BTFSS STATUS,Z ; zero?
000000C2,28CF,, GOTO show3 ; no - show it
,,,
000000C3,08A5,, MOVF Tens,F ; Check digit
000000C4,1D03,, BTFSS STATUS,Z ; zero?
000000C5,28D2,, GOTO show4 ; no - show it
,,,
000000C6,08A6,, MOVF Ones,F ; Check digit
000000C7,1D03,, BTFSS STATUS,Z ; zero?
000000C8,28D5,, GOTO show5 ; no - show it
,,,
,,,; Display digits of period.....................................
,,,
000000C9,3030,show1,show1 MOVLW 030 ; Load ASCII offset
000000CA,0722,, ADDWF Tents,W ; Add digit value
000000CB,2028,, CALL send ; Display it
,,,
000000CC,3030,show2,show2 MOVLW 030 ; Load ASCII offset
000000CD,0723,, ADDWF Thous,W ; Add digit value
000000CE,2028,, CALL send ; Display it
,,,
000000CF,3030,show3,show3 MOVLW 030 ; Load ASCII offset
000000D0,0724,, ADDWF Hunds,W ; Add digit value
000000D1,2028,, CALL send ; Display it
,,,
000000D2,3030,show4,show4 MOVLW 030 ; Load ASCII offset
000000D3,0725,, ADDWF Tens,W ; Add digit value
000000D4,2028,, CALL send ; Display it
,,,
000000D5,3030,show5,show5 MOVLW 030 ; Load ASCII offset
000000D6,0726,, ADDWF Ones,W ; Add digit value
000000D7,2028,, CALL send ; Display it
,,,
,,,; Show fixed characters.........................................
,,,
000000D8,3020,, MOVLW ' ' ; Space
000000D9,2028,, CALL send ; Display it
000000DA,3075,, MOVLW 'u' ; micro
000000DB,2028,, CALL send ; Display it
000000DC,3073,, MOVLW 's' ; secs
000000DD,2028,, CALL send ; Display it
000000DE,3020,, MOVLW ' ' ; Space
000000DF,2028,, CALL send ; Display it
000000E0,3020,, MOVLW ' ' ; Space
000000E1,2028,, CALL send ; Display it
,,,
,,,; Home cursor .................................................
,,,
000000E2,10F4,, BCF Select,RS ; Set display command mode
000000E3,3080,, MOVLW 0x80 ; Code to home cursor
000000E4,2028,, CALL send ; Do it
000000E5,0008,, RETURN ; done
,,,
,,,;---------------------------------------------------------------
,,,; MAIN LOOP
,,,;---------------------------------------------------------------
000000E6,2038,start,start CALL inid ; Initialise display
000000E7,1683 1303,, BANKSEL PIE1 ; Select Bank 1
000000E9,150C,, BSF PIE1,CCP1IE ; Enable capture interrupt
000000EA,1283 1303,, BANKSEL PORTD ; Select Bank 0
000000EC,110C,, BCF PIR1,CCP1IF ; Clear CCP1 interrupt flag
,,,
000000ED,2053,loop,loop CALL conv ; Convert 16 bits to 5 digits
000000EE,20B1,, CALL disp ; Display period in microsecs
000000EF,28ED,, GOTO loop
,,,
,,, END ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -