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

📄 main.asm

📁 Simple Timer/Counter application for cock fighting
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;  ASM code generated by mikroVirtualMachine for PIC - V. 8.0.0.0
;  Date/Time: 9/11/2008 11:15:25 AM
;  Info: http://www.mikroe.com


; ADDRESS	OPCODE	ASM
; ----------------------------------------------
$0000	$2AC3			GOTO	_main
$0033	$	_increment_up_time:
;main.c,25 :: 		void increment_up_time()
;main.c,27 :: 		up_time[5]++;
$0033	$1303			BCF	STATUS, RP1
$0034	$1283			BCF	STATUS, RP0
$0035	$0AA5			INCF	_up_time+5, 1
;main.c,28 :: 		if (up_time[5] == 10)
$0036	$0825			MOVF	_up_time+5, 0
$0037	$3A0A			XORLW	10
$0038	$1D03			BTFSS	STATUS, Z
$0039	$2854			GOTO	L_increment_up_time_0
;main.c,30 :: 		up_time[5] = 0;
$003A	$01A5			CLRF	_up_time+5, 1
;main.c,31 :: 		up_time[4]++;
$003B	$0AA4			INCF	_up_time+4, 1
;main.c,32 :: 		if (up_time[4] == 10)
$003C	$0824			MOVF	_up_time+4, 0
$003D	$3A0A			XORLW	10
$003E	$1D03			BTFSS	STATUS, Z
$003F	$2854			GOTO	L_increment_up_time_1
;main.c,34 :: 		up_time[4] = 0;
$0040	$01A4			CLRF	_up_time+4, 1
;main.c,35 :: 		up_time[3]++;
$0041	$0AA3			INCF	_up_time+3, 1
;main.c,36 :: 		if (up_time[3] == 10)
$0042	$0823			MOVF	_up_time+3, 0
$0043	$3A0A			XORLW	10
$0044	$1D03			BTFSS	STATUS, Z
$0045	$2854			GOTO	L_increment_up_time_2
;main.c,38 :: 		up_time[3] = 0;
$0046	$01A3			CLRF	_up_time+3, 1
;main.c,39 :: 		up_time[2]++;
$0047	$0AA2			INCF	_up_time+2, 1
;main.c,40 :: 		if (up_time[2] == 6)
$0048	$0822			MOVF	_up_time+2, 0
$0049	$3A06			XORLW	6
$004A	$1D03			BTFSS	STATUS, Z
$004B	$2854			GOTO	L_increment_up_time_3
;main.c,42 :: 		up_time[2] = 0;
$004C	$01A2			CLRF	_up_time+2, 1
;main.c,43 :: 		up_time[1]++;
$004D	$0AA1			INCF	_up_time+1, 1
;main.c,44 :: 		if (up_time[1] == 10)
$004E	$0821			MOVF	_up_time+1, 0
$004F	$3A0A			XORLW	10
$0050	$1D03			BTFSS	STATUS, Z
$0051	$2854			GOTO	L_increment_up_time_4
;main.c,46 :: 		up_time[1] = 0;
$0052	$01A1			CLRF	_up_time+1, 1
;main.c,47 :: 		up_time[0]++;
$0053	$0AA0			INCF	_up_time, 1
;main.c,48 :: 		}
$0054	$	L_increment_up_time_4:
;main.c,49 :: 		}
$0054	$	L_increment_up_time_3:
;main.c,50 :: 		}
$0054	$	L_increment_up_time_2:
;main.c,51 :: 		}
$0054	$	L_increment_up_time_1:
;main.c,52 :: 		}
$0054	$	L_increment_up_time_0:
;main.c,53 :: 		}
$0054	$0008			RETURN
$0055	$	_decrement_down_time:
;main.c,55 :: 		void decrement_down_time()
;main.c,57 :: 		down_time[5]--;
$0055	$1303			BCF	STATUS, RP1
$0056	$1283			BCF	STATUS, RP0
$0057	$03AB			DECF	_down_time+5, 1
;main.c,58 :: 		if (down_time[5] == 255)
$0058	$082B			MOVF	_down_time+5, 0
$0059	$3AFF			XORLW	255
$005A	$1D03			BTFSS	STATUS, Z
$005B	$287B			GOTO	L_decrement_down_time_5
;main.c,60 :: 		down_time[5] = 9;
$005C	$3009			MOVLW	9
$005D	$00AB			MOVWF	_down_time+5
;main.c,61 :: 		down_time[4]--;
$005E	$03AA			DECF	_down_time+4, 1
;main.c,62 :: 		if (down_time[4] == 255)
$005F	$082A			MOVF	_down_time+4, 0
$0060	$3AFF			XORLW	255
$0061	$1D03			BTFSS	STATUS, Z
$0062	$287B			GOTO	L_decrement_down_time_6
;main.c,64 :: 		down_time[4] = 9;
$0063	$3009			MOVLW	9
$0064	$00AA			MOVWF	_down_time+4
;main.c,65 :: 		down_time[3]--;
$0065	$03A9			DECF	_down_time+3, 1
;main.c,66 :: 		if (down_time[3] == 255)
$0066	$0829			MOVF	_down_time+3, 0
$0067	$3AFF			XORLW	255
$0068	$1D03			BTFSS	STATUS, Z
$0069	$287B			GOTO	L_decrement_down_time_7
;main.c,68 :: 		down_time[3] = 9;
$006A	$3009			MOVLW	9
$006B	$00A9			MOVWF	_down_time+3
;main.c,69 :: 		down_time[2]--;
$006C	$03A8			DECF	_down_time+2, 1
;main.c,70 :: 		if (down_time[2] == 255)
$006D	$0828			MOVF	_down_time+2, 0
$006E	$3AFF			XORLW	255
$006F	$1D03			BTFSS	STATUS, Z
$0070	$287B			GOTO	L_decrement_down_time_8
;main.c,72 :: 		down_time[2] = 5;
$0071	$3005			MOVLW	5
$0072	$00A8			MOVWF	_down_time+2
;main.c,73 :: 		down_time[1]--;
$0073	$03A7			DECF	_down_time+1, 1
;main.c,74 :: 		if (down_time[1] == 255)
$0074	$0827			MOVF	_down_time+1, 0
$0075	$3AFF			XORLW	255
$0076	$1D03			BTFSS	STATUS, Z
$0077	$287B			GOTO	L_decrement_down_time_9
;main.c,76 :: 		down_time[1] = 9;
$0078	$3009			MOVLW	9
$0079	$00A7			MOVWF	_down_time+1
;main.c,77 :: 		down_time[0]--;
$007A	$03A6			DECF	_down_time, 1
;main.c,78 :: 		}
$007B	$	L_decrement_down_time_9:
;main.c,79 :: 		}
$007B	$	L_decrement_down_time_8:
;main.c,80 :: 		}
$007B	$	L_decrement_down_time_7:
;main.c,81 :: 		}
$007B	$	L_decrement_down_time_6:
;main.c,82 :: 		}
$007B	$	L_decrement_down_time_5:
;main.c,83 :: 		}
$007B	$0008			RETURN
$0004	$	_interrupt:
$0004	$00FF			MOVWF	STACK_15
$0005	$0E03			SWAPF	STATUS, 0
$0006	$0183			CLRF	STATUS
$0007	$00B6			MOVWF	?saveSTATUS
$0008	$0804			MOVF	FSR, 0
$0009	$00B5			MOVWF	?saveFSR
$000A	$080A			MOVF	PCLATH, 0
$000B	$00B7			MOVWF	?savePCLATH
$000C	$018A			CLRF	PCLATH
$000D	$0870			MOVF	STACK_0, 0
$000E	$00BB			MOVWF	STSAVED_0
;main.c,86 :: 		void interrupt()
;main.c,88 :: 		TMR0 = 0;
$000F	$0181			CLRF	TMR0, 1
;main.c,89 :: 		if (INTCON.T0IF)
$0010	$1D0B			BTFSS	INTCON, 2
$0011	$2827			GOTO	L_interrupt_10
;main.c,91 :: 		time_count++;
$0012	$0AAC			INCF	_time_count, 1
;main.c,92 :: 		if (time_count == 38)
$0013	$082C			MOVF	_time_count, 0
$0014	$3A26			XORLW	38
$0015	$1D03			BTFSS	STATUS, Z
$0016	$2827			GOTO	L_interrupt_11
;main.c,94 :: 		time_count = 0;
$0017	$01AC			CLRF	_time_count, 1
;main.c,95 :: 		lapsed_count++;
$0018	$0AAD			INCF	_lapsed_count, 1
$0019	$1903			BTFSC	STATUS, Z
$001A	$0AAE			INCF	_lapsed_count+1, 1
;main.c,96 :: 		increment_up_time();
$001B	$2033			CALL	_increment_up_time
;main.c,97 :: 		decrement_down_time();
$001C	$2055			CALL	_decrement_down_time
;main.c,98 :: 		if (lapsed_count >= 60000)
$001D	$30EA			MOVLW	234
$001E	$022E			SUBWF	_lapsed_count+1, 0
$001F	$1D03			BTFSS	STATUS, Z
$0020	$2823			GOTO	L_interrupt_79
$0021	$3060			MOVLW	96
$0022	$022D			SUBWF	_lapsed_count, 0
$0023	$	L_interrupt_79:
$0023	$1C03			BTFSS	STATUS, C
$0024	$2827			GOTO	L_interrupt_12
;main.c,100 :: 		INTCON.T0IE = 0;
$0025	$128B			BCF	INTCON, 5
;main.c,101 :: 		flag.f1 = 1; // enable lapsed flag
$0026	$14AF			BSF	_flag, 1
;main.c,102 :: 		}
$0027	$	L_interrupt_12:
;main.c,103 :: 		}
$0027	$	L_interrupt_11:
;main.c,104 :: 		}
$0027	$	L_interrupt_10:
;main.c,105 :: 		INTCON.T0IF = 0;
$0027	$110B			BCF	INTCON, 2
;main.c,106 :: 		}
$0028	$	L_Interrupt_end:
$0028	$083B			MOVF	STSAVED_0, 0
$0029	$00F0			MOVWF	STACK_0
$002A	$0837			MOVF	?savePCLATH, 0
$002B	$008A			MOVWF	PCLATH
$002C	$0835			MOVF	?saveFSR, 0
$002D	$0084			MOVWF	FSR
$002E	$0E36			SWAPF	?saveSTATUS, 0
$002F	$0083			MOVWF	STATUS
$0030	$0EFF			SWAPF	STACK_15, 1
$0031	$0E7F			SWAPF	STACK_15, 0
$0032	$0009			RETFIE
$007C	$	_mask:
;main.c,109 :: 		unsigned short mask(unsigned short num)
;main.c,111 :: 		switch (num)
$007C	$28A0			GOTO	L_mask_13
;main.c,113 :: 		case 0 : return 0xf6;
$007D	$	L_mask_15:
$007D	$30F6			MOVLW	246
$007E	$1303			BCF	STATUS, RP1
$007F	$1283			BCF	STATUS, RP0
$0080	$00F0			MOVWF	STACK_0
$0081	$0008			RETURN
;main.c,114 :: 		case 1 : return 0x60;
$0082	$	L_mask_16:
$0082	$3060			MOVLW	96
$0083	$00F0			MOVWF	STACK_0
$0084	$0008			RETURN
;main.c,115 :: 		case 2 : return 0xba;
$0085	$	L_mask_17:
$0085	$30BA			MOVLW	186
$0086	$00F0			MOVWF	STACK_0
$0087	$0008			RETURN
;main.c,116 :: 		case 3 : return 0xf8;
$0088	$	L_mask_18:
$0088	$30F8			MOVLW	248
$0089	$00F0			MOVWF	STACK_0
$008A	$0008			RETURN
;main.c,117 :: 		case 4 : return 0x6c;
$008B	$	L_mask_19:
$008B	$306C			MOVLW	108
$008C	$00F0			MOVWF	STACK_0
$008D	$0008			RETURN
;main.c,118 :: 		case 5 : return 0xdc;
$008E	$	L_mask_20:
$008E	$30DC			MOVLW	220
$008F	$00F0			MOVWF	STACK_0
$0090	$0008			RETURN
;main.c,119 :: 		case 6 : return 0xde;
$0091	$	L_mask_21:
$0091	$30DE			MOVLW	222
$0092	$00F0			MOVWF	STACK_0
$0093	$0008			RETURN
;main.c,120 :: 		case 7 : return 0x70;
$0094	$	L_mask_22:
$0094	$3070			MOVLW	112
$0095	$00F0			MOVWF	STACK_0
$0096	$0008			RETURN
;main.c,121 :: 		case 8 : return 0xfe;
$0097	$	L_mask_23:
$0097	$30FE			MOVLW	254
$0098	$00F0			MOVWF	STACK_0
$0099	$0008			RETURN
;main.c,122 :: 		case 9 : return 0xfc;
$009A	$	L_mask_24:
$009A	$30FC			MOVLW	252
$009B	$00F0			MOVWF	STACK_0
$009C	$0008			RETURN
;main.c,123 :: 		case 11 : return 0x1e;
$009D	$	L_mask_25:
$009D	$301E			MOVLW	30
$009E	$00F0			MOVWF	STACK_0
$009F	$0008			RETURN
;main.c,124 :: 		}
$00A0	$	L_mask_13:
$00A0	$1303			BCF	STATUS, RP1
$00A1	$1283			BCF	STATUS, RP0
$00A2	$083A			MOVF	FARG_mask+0, 0
$00A3	$3A00			XORLW	0
$00A4	$1903			BTFSC	STATUS, Z
$00A5	$287D			GOTO	L_mask_15
$00A6	$083A			MOVF	FARG_mask+0, 0
$00A7	$3A01			XORLW	1
$00A8	$1903			BTFSC	STATUS, Z
$00A9	$2882			GOTO	L_mask_16
$00AA	$083A			MOVF	FARG_mask+0, 0
$00AB	$3A02			XORLW	2
$00AC	$1903			BTFSC	STATUS, Z
$00AD	$2885			GOTO	L_mask_17
$00AE	$083A			MOVF	FARG_mask+0, 0
$00AF	$3A03			XORLW	3
$00B0	$1903			BTFSC	STATUS, Z
$00B1	$2888			GOTO	L_mask_18
$00B2	$083A			MOVF	FARG_mask+0, 0
$00B3	$3A04			XORLW	4
$00B4	$1903			BTFSC	STATUS, Z
$00B5	$288B			GOTO	L_mask_19
$00B6	$083A			MOVF	FARG_mask+0, 0
$00B7	$3A05			XORLW	5
$00B8	$1903			BTFSC	STATUS, Z
$00B9	$288E			GOTO	L_mask_20
$00BA	$083A			MOVF	FARG_mask+0, 0
$00BB	$3A06			XORLW	6
$00BC	$1903			BTFSC	STATUS, Z
$00BD	$2891			GOTO	L_mask_21
$00BE	$083A			MOVF	FARG_mask+0, 0
$00BF	$3A07			XORLW	7
$00C0	$1903			BTFSC	STATUS, Z
$00C1	$2894			GOTO	L_mask_22
$00C2	$083A			MOVF	FARG_mask+0, 0
$00C3	$3A08			XORLW	8
$00C4	$1903			BTFSC	STATUS, Z
$00C5	$2897			GOTO	L_mask_23
$00C6	$083A			MOVF	FARG_mask+0, 0
$00C7	$3A09			XORLW	9
$00C8	$1903			BTFSC	STATUS, Z
$00C9	$289A			GOTO	L_mask_24
$00CA	$083A			MOVF	FARG_mask+0, 0
$00CB	$3A0B			XORLW	11
$00CC	$1903			BTFSC	STATUS, Z
$00CD	$289D			GOTO	L_mask_25
$00CE	$	L_mask_14:
;main.c,125 :: 		}
$00CE	$0008			RETURN
$00CF	$	_Short_delay:
;main.c,127 :: 		void Short_delay()
;main.c,129 :: 		Delay_us(500);
$00CF	$30A6			MOVLW	166
$00D0	$1303			BCF	STATUS, RP1
$00D1	$1283			BCF	STATUS, RP0
$00D2	$00FA			MOVWF	STACK_10
$00D3	$0BFA			DECFSZ	STACK_10, F
$00D4	$28D3			GOTO	$-1
$00D5	$0000			NOP
;main.c,130 :: 		}
$00D6	$0008			RETURN
$00D7	$	_EEprom_read:
$00D7	$1303			BCF	STATUS, RP1
$00D8	$1283			BCF	STATUS, RP0
$00D9	$0838			MOVF	FARG_EEprom_read+0, 0
$00DA	$1683			BSF	STATUS, RP0
$00DB	$009B			MOVWF	EEADR
$00DC	$139C			BCF	EECON1, 7
$00DD	$141C			BSF	EECON1, 0
$00DE	$081A			MOVF	EEDATA, 0
$00DF	$00F0			MOVWF	STACK_0
$00E0	$0008			RETURN
$00E1	$	_EEprom_write:
$00E1	$0000			NOP
$00E2	$	L_EEprom_write_0:
$00E2	$1303			BCF	STATUS, RP1
$00E3	$1683			BSF	STATUS, RP0
$00E4	$1C9C			BTFSS	EECON1, 1
$00E5	$28E8			GOTO	L_EEprom_write_1
$00E6	$0000			NOP
$00E7	$28E2			GOTO	L_EEprom_write_0
$00E8	$	L_EEprom_write_1:
$00E8	$1283			BCF	STATUS, RP0
$00E9	$0838			MOVF	FARG_EEprom_write+0, 0
$00EA	$1683			BSF	STATUS, RP0
$00EB	$009B			MOVWF	EEADR
$00EC	$1283			BCF	STATUS, RP0
$00ED	$0839			MOVF	FARG_EEprom_write+1, 0
$00EE	$1683			BSF	STATUS, RP0
$00EF	$009A			MOVWF	EEDATA
$00F0	$139C			BCF	EECON1, 7
$00F1	$151C			BSF	EECON1, 2
$00F2	$138B			BCF	INTCON, 7
$00F3	$3055			MOVLW	85
$00F4	$009D			MOVWF	EECON2
$00F5	$30AA			MOVLW	170
$00F6	$009D			MOVWF	EECON2
$00F7	$149C			BSF	EECON1, 1
$00F8	$178B			BSF	INTCON, 7
$00F9	$111C			BCF	EECON1, 2
$00FA	$0008			RETURN
$00FB	$	_offset_up_time2:
;main.c,215 :: 		void offset_up_time2() // displays the requested time
;main.c,217 :: 		PORTB = mask (up_time[5]); //load millisecond value to PORTB
$00FB	$1303			BCF	STATUS, RP1
$00FC	$1283			BCF	STATUS, RP0
$00FD	$0825			MOVF	_up_time+5, 0
$00FE	$00BA			MOVWF	FARG_mask+0
$00FF	$207C			CALL	_mask
$0100	$1303			BCF	STATUS, RP1
$0101	$1283			BCF	STATUS, RP0
$0102	$0870			MOVF	STACK_0, 0
$0103	$0086			MOVWF	PORTB
;main.c,218 :: 		PORTA = PORTA | 0x0d; //enable the display of ones millisecond
$0104	$300D			MOVLW	13
$0105	$0485			IORWF	PORTA, 1

⌨️ 快捷键说明

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