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

📄 samplecerebv2.asm

📁 a zipped example of communication between the Cerebellum 16f877 pic board and the CMUcam. There are
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	movlw D'100'
	subwf _code_tmp_0005 , F
	btfsc STATUS, C
	goto label_0007
	addwf _code_tmp_0005 , F
	bcf STATUS, C
label_0007
	rlf _code_tmp_0006 , F
	decfsz _code_tmp_0004 , F
	goto label_0006
	movf _code_tmp_0005 , W
	movwf _code_tmp_0004 
label_0008
	bcf STATUS, C
	btfsc _code_tmp_0004 , 7
	bsf STATUS, C
	rlf _code_tmp_0003 , F
	movlw D'10'
	subwf _code_tmp_0003 , F
	btfsc STATUS, C
	goto label_0009
	addwf _code_tmp_0003 , F
	bcf STATUS, C
label_0009
	rlf _code_tmp_0004 , F
	decfsz _code_tmp_0002 , F
	goto label_0008
	movf _code_tmp_0004 , W
	addwf _code_tmp_0001 , W
	btfsc STATUS, C
	incf _code_tmp_0000 , F
	bcf STATUS, RP0
	bcf STATUS, RP1
	movwf param00_ser_tx
	call _ser_tx
	bcf PCLATH, 3
	bcf PCLATH, 4
	clrf _code_tmp_0000 
	movlw D'48'
	movwf _code_tmp_0001 
	movlw D'8'
	movwf _code_tmp_0002 
	clrf _code_tmp_0003 
	bcf STATUS, RP0
	bcf STATUS, RP1
	movf param00_ser_writechar, W
	movwf _code_tmp_0004 
label_0010
	bcf STATUS, C
	btfsc _code_tmp_0004 , 7
	bsf STATUS, C
	rlf _code_tmp_0003 , F
	movlw D'10'
	subwf _code_tmp_0003 , F
	btfsc STATUS, C
	goto label_0011
	addwf _code_tmp_0003 , F
	bcf STATUS, C
label_0011
	rlf _code_tmp_0004 , F
	decfsz _code_tmp_0002 , F
	goto label_0010
	movf _code_tmp_0003 , W
	addwf _code_tmp_0001 , W
	btfsc STATUS, C
	incf _code_tmp_0000 , F
	bcf STATUS, RP0
	bcf STATUS, RP1
	movwf param00_ser_tx
	call _ser_tx
	bcf PCLATH, 3
	bcf PCLATH, 4
	return
_ser_writechar__end
_ser_rcv_nb__code
	bcf STATUS, RP0
	bcf STATUS, RP1
	btfss _PIR1, 5
	goto label_0019
	movf _RCREG, W
	movwf _ser_tmp
	movf _ser_tmp, W
	return
	goto label_0020
label_0019
	movlw D'0'
	return
label_0020
	return
_ser_rcv_nb__end
_servo_init__code
	movlw D'132'
	bsf STATUS, RP0
	bcf STATUS, RP1
	movwf OPTION_REG
	clrf _TRISD
	bsf INTCON, T0IE
	movlw D'1'
	movwf param00_delay_ms
	call _delay_ms
	bcf PCLATH, 3
	bcf PCLATH, 4
	return
_servo_init__end
_delay_ms__code
label_0021
	movlw D'185'
	movwf param00_delay_ms+1
	nop
label_0022
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	decfsz param00_delay_ms+1, F
	goto label_0022
	nop
	decfsz param00_delay_ms, F
	goto label_0021
	nop
	return
_delay_ms__end
_do_servo__code
	bcf STATUS, RP0
	bcf STATUS, RP1
	bcf __servo_free, D'0'
	movf _servo_state, W
	sublw D'1'
	movlw 1
	btfss STATUS, Z
	clrw
	sublw 0
	btfsc STATUS, Z
	goto label_0023
	movlw D'153'
	movwf TMR0
	movf _servo_curr, W
	addlw _servo_pos
	movwf FSR
	bcf STATUS, IRP
	movf INDF, W
	sublw D'0'
	movlw 1
	btfsc STATUS, Z
	clrw
	andlw 0xFF
	btfsc STATUS, Z
	goto label_0025
	bcf STATUS, RP0
	bcf STATUS, RP1
	movf _servo_mask, W
	andwf _servo_switch, W
	sublw D'0'
	movlw 1
	btfsc STATUS, Z
	clrw
	andlw 0xFF
	btfsc STATUS, Z
	goto label_0025
	movlw 1
label_0025
	sublw 0
	btfsc STATUS, Z
	goto label_0024
	bcf STATUS, RP0
	bcf STATUS, RP1
	movf _servo_switch, W
	iorwf _PORTD, F
label_0024
	movlw D'2'
	bcf STATUS, RP0
	bcf STATUS, RP1
	movwf _servo_state
	bsf __servo_free, D'0'
	goto label_0026
label_0023
	bcf STATUS, RP0
	bcf STATUS, RP1
	movf _servo_state, W
	sublw D'2'
	movlw 1
	btfss STATUS, Z
	clrw
	sublw 0
	btfsc STATUS, Z
	goto label_0027
	movf _servo_curr, W
	addlw _servo_pos
	movwf FSR
	bcf STATUS, IRP
	movf INDF, W
	sublw D'255'
	bcf STATUS, RP0
	bcf STATUS, RP1
	movwf TMR0
	movlw D'3'
	movwf _servo_state
	goto label_0028
label_0027
	bcf STATUS, RP0
	bcf STATUS, RP1
	movf _servo_state, W
	sublw D'3'
	movlw 1
	btfss STATUS, Z
	clrw
	sublw 0
	btfsc STATUS, Z
	goto label_0029
	movf _servo_mask, W
	andwf _servo_switch, W
	sublw D'0'
	movlw 1
	btfsc STATUS, Z
	clrw
	sublw 0
	btfsc STATUS, Z
	goto label_0030
	comf _servo_switch, W
	andwf _PORTD, F
label_0030
	bcf STATUS, RP0
	bcf STATUS, RP1
	movf _servo_curr, W
	addlw _servo_pos
	movwf FSR
	bcf STATUS, IRP
	movf INDF, W
	bcf STATUS, RP0
	bcf STATUS, RP1
	movwf TMR0
	clrf _intr_tmp_0000 
	movf _servo_curr, W
	addlw D'1'
	btfsc STATUS, C
	incf _intr_tmp_0000 , F
	movwf _servo_curr
	movf _servo_curr, W
	andlw D'7'
	movwf _servo_curr
	movf _servo_switch, W
	movwf _intr_tmp_0000 
	rlf _intr_tmp_0000 , W
	andlw D'254'
	movwf _servo_switch
	movf _servo_switch, W
	sublw D'0'
	movlw 1
	btfss STATUS, Z
	clrw
	sublw 0
	btfsc STATUS, Z
	goto label_0031
	movlw D'1'
	movwf _servo_switch
label_0031
	movlw D'1'
	bcf STATUS, RP0
	bcf STATUS, RP1
	movwf _servo_state
label_0029
label_0028
label_0026
	bcf INTCON, D'2'
	return
_do_servo__end
_adc_read__code
	bcf STATUS, RP0
	bcf STATUS, RP1
	movf param00_adc_read, W
	movwf _code_tmp_0000 
	rlf _code_tmp_0000 , F
	rlf _code_tmp_0000 , F
	rlf _code_tmp_0000 , W
	andlw D'248'
	andlw D'56'
	movwf _ADCON0
	movlw D'129'
	iorwf _ADCON0, F
	movlw D'12'
	movwf param00_delay_us
	call _delay_us
	bcf PCLATH, 3
	bcf PCLATH, 4
	movlw D'4'
	bcf STATUS, RP0
	bcf STATUS, RP1
	iorwf _ADCON0, F
label_0033
	bcf STATUS, RP0
	bcf STATUS, RP1
	btfss _ADCON0, 2
	goto label_0034
	goto label_0033
label_0034
	movlw D'4'
	bcf STATUS, RP0
	bcf STATUS, RP1
	movwf param00_delay_us
	call _delay_us
	bcf PCLATH, 3
	bcf PCLATH, 4
	bcf STATUS, RP0
	bcf STATUS, RP1
	movf _ADRESH, W
	return
_adc_read__end
_delay_us__code
	movlw D'2'
	bcf STATUS, RP0
	bcf STATUS, RP1
	subwf param00_delay_us, F
label_0032
	nop
	nop
	decfsz param00_delay_us, F
	goto label_0032
	nop
	return
_delay_us__end
_pwm_init__code
	bcf STATUS, RP0
	bcf STATUS, RP1
	clrf _CCP1CON
	clrf _CCP2CON
	clrf _TMR2
	movlw D'255'
	bsf STATUS, RP0
	movwf _PR2
	bcf STATUS, RP0
	clrf _CCPR1L
	clrf _CCPR2L
	bsf STATUS, RP0
	movf _TRISC, W
	andlw D'216'
	movwf _TRISC
	bcf TRISB, D'1'
	bcf TRISA, D'4'
	movlw D'60'
	bcf STATUS, RP0
	movwf _ccpcon
	movf _ccpcon, W
	movwf _CCP1CON
	movf _ccpcon, W
	movwf _CCP2CON
	bsf _T2CON, D'2'
	return
_pwm_init__end
_init_cerebellum__code
	movlw D'207'
	bsf STATUS, RP0
	bcf STATUS, RP1
	andwf TRISB, F
	movlw D'207'
	bcf STATUS, RP0
	andwf PORTB, F
	bsf STATUS, RP0
	clrf _TRISD
	return
_init_cerebellum__end
_button_sample__code
label_0043
	bcf STATUS, RP0
	bcf STATUS, RP1
	btfss PORTB, 2
	goto label_0045
	bsf PORTB, D'5'
	call _ser_rcv_nb
	bcf PCLATH, 3
	bcf PCLATH, 4
	bcf STATUS, RP0
	bcf STATUS, RP1
	movwf _inc_button_sample
	clrf param00_ser_putstring
	call _ser_putstring
	bcf PCLATH, 3
	bcf PCLATH, 4
	bcf STATUS, RP0
	bcf STATUS, RP1
	movf _inc_button_sample, W
	sublw D'0'
	movlw 1
	btfss STATUS, Z
	clrw
	sublw 0
	btfsc STATUS, Z
	goto label_0046
	movlw D'8'
	movwf param00_ser_putstring
	call _ser_putstring
	bcf PCLATH, 3
	bcf PCLATH, 4
	goto label_0047
label_0046
	bcf STATUS, RP0
	bcf STATUS, RP1
	movf _inc_button_sample, W
	movwf param00_ser_tx
	call _ser_tx
	bcf PCLATH, 3
	bcf PCLATH, 4
label_0047
	movlw D'16'
	movwf param00_ser_putstring
	call _ser_putstring
	bcf PCLATH, 3
	bcf PCLATH, 4
	bcf STATUS, RP0
	bcf STATUS, RP1
	decf _postest, F
	incf _postest, W
	btfsc STATUS, Z
	decf _postest+1, F
	movf _postest+D'1', W
	movwf _code_tmp_0000 
	movf _postest, W
	movwf _servo_pos+D'1'
	movlw D'7'
	movwf param00_adc_read
	call _adc_read
	bcf PCLATH, 3
	bcf PCLATH, 4
	bcf STATUS, RP0
	bcf STATUS, RP1
	movwf _inc_button_sample
	movlw D'24'
	movwf param00_ser_putstring
	call _ser_putstring
	bcf PCLATH, 3
	bcf PCLATH, 4
	bcf STATUS, RP0
	bcf STATUS, RP1
	movf _inc_button_sample, W
	movwf param00_ser_writechar
	call _ser_writechar
	bcf PCLATH, 3
	bcf PCLATH, 4
	movlw D'32'
	movwf param00_ser_putstring
	call _ser_putstring
	bcf PCLATH, 3
	bcf PCLATH, 4
label_0045
	bcf STATUS, RP0
	bcf STATUS, RP1
	bsf PORTB, D'4'
	movlw D'250'
	movwf param00_delay_ms
	call _delay_ms
	bcf PCLATH, 3
	bcf PCLATH, 4
	bcf STATUS, RP0
	bcf STATUS, RP1
	bcf PORTB, D'4'
	bcf PORTB, D'5'
	movlw D'250'
	movwf param00_delay_ms
	call _delay_ms
	bcf PCLATH, 3
	bcf PCLATH, 4
	goto label_0043
label_0044
	return
_button_sample__end
	END

⌨️ 快捷键说明

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