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

📄 samplecerebv2.asm

📁 a zipped example of communication between the Cerebellum 16f877 pic board and the CMUcam. There are
💻 ASM
📖 第 1 页 / 共 2 页
字号:
; This file was generated by C2C-plus compiler version 4.1.7e

	include "p16F877.inc"
	;Variables *****************************************
_intr_tmp_0000                  equ 0x70
_code_tmp_0000                  equ 0x71
_code_tmp_0001                  equ 0x72
_code_tmp_0002                  equ 0x73
_code_tmp_0003                  equ 0x74
_code_tmp_0004                  equ 0x75
_code_tmp_0005                  equ 0x76
_code_tmp_0006                  equ 0x77
__int_save_cont_W               equ 0x78
__int_save_cont_STATUS          equ 0x79
__int_save_cont_FSR             equ 0x7a
__int_save_cont_PCLATH          equ 0x7b
__const_ptr__param00            equ 0x7c
_servo_pos                      equ 0x20
param00_ser_putstring           equ 0x7d
param00_delay_ms                equ 0x7e
_save_w                         equ 0x28
_save_status                    equ 0x2a
_postest                        equ 0x2c
param00_delay_us                equ 0x2e
_ser_tmp                        equ 0x2f
_servo_state                    equ 0x30
_servo_curr                     equ 0x31
_servo_mask                     equ 0x32
_servo_switch                   equ 0x33
__servo_free                    equ 0x34
_ccpcon                         equ 0x35
param00_ser_init                equ 0x36
param00_ser_tx                  equ 0x37
_i_ser_putstring                equ 0x38
param00_ser_writechar           equ 0x39
param00_adc_read                equ 0x3a
_inc_button_sample              equ 0x3b
_SSPCON                         equ 0x14
_PIR1                           equ 0x0c
_PIE1                           equ 0x8c
_TRISC                          equ 0x87
_TRISD                          equ 0x88
_TXSTA                          equ 0x98
_RCSTA                          equ 0x18
_SPBRG                          equ 0x99
_RCREG                          equ 0x1a
_TXREG                          equ 0x19
_PORTD                          equ 0x08
_myOption_Reg                   equ 0x81
_ADCON0                         equ 0x1f
_ADRESH                         equ 0x1e
_ADCON1                         equ 0x9f
_CCP1CON                        equ 0x17
_CCP2CON                        equ 0x1d
_TMR2                           equ 0x11
_PR2                            equ 0x92
_CCPR1L                         equ 0x15
_CCPR2L                         equ 0x1b
_T2CON                          equ 0x12
_PORTC                          equ 0x07
	ORG 0
	clrf PCLATH
	goto start__code

	ORG 4
_interrupt
_interrupt__code
	movwf __int_save_cont_W
	swapf __int_save_cont_W, F
	swapf STATUS, W
	movwf __int_save_cont_STATUS
	swapf FSR, W
	movwf __int_save_cont_FSR
	swapf PCLATH, W
	movwf __int_save_cont_PCLATH
	clrf PCLATH
	bcf STATUS, RP0
	bcf STATUS, RP1
	movwf _save_w
	swapf STATUS,W
	bcf   STATUS,5
	bcf   STATUS,6
	movwf _save_status
	movf INTCON, W
	andlw D'36'
	sublw 0
	btfss STATUS, Z
	call _do_servo
	bcf PCLATH, 3
	bcf PCLATH, 4
label_0042
	bcf STATUS, RP0
	bcf STATUS, RP1
	swapf _save_status,W
	movwf STATUS
	swapf _save_w,F
	swapf _save_w,W
	swapf __int_save_cont_PCLATH, W
	movwf PCLATH
	swapf __int_save_cont_FSR, W
	movwf FSR
	swapf __int_save_cont_STATUS, W
	movwf STATUS
	swapf __int_save_cont_W, W
	retfie
_interrupt__end

_ser_init
	goto _ser_init__code
_ser_tx
	goto _ser_tx__code
_ser_putstring
	goto _ser_putstring__code
_ser_writechar
	goto _ser_writechar__code
_ser_rcv_nb
	goto _ser_rcv_nb__code
_servo_init
	goto _servo_init__code
_delay_ms
	goto _delay_ms__code
_do_servo
	goto _do_servo__code
_adc_read
	goto _adc_read__code
_delay_us
	goto _delay_us__code
_pwm_init
	goto _pwm_init__code
_init_cerebellum
	goto _init_cerebellum__code
_button_sample
	goto _button_sample__code
const_param__code
	clrf PCLATH
	addwf PCL, F
	movf __const_ptr__param00, W
	addlw LOW(arr000+1)
	movlw HIGH(arr000+1)
	btfsc STATUS, C
	addlw 1
	movwf PCLATH
	movf __const_ptr__param00, W
	goto arr000
	movf __const_ptr__param00, W
	addlw LOW(arr001+1)
	movlw HIGH(arr001+1)
	btfsc STATUS, C
	addlw 1
	movwf PCLATH
	movf __const_ptr__param00, W
	goto arr001
	movf __const_ptr__param00, W
	addlw LOW(arr002+1)
	movlw HIGH(arr002+1)
	btfsc STATUS, C
	addlw 1
	movwf PCLATH
	movf __const_ptr__param00, W
	goto arr002
	movf __const_ptr__param00, W
	addlw LOW(arr003+1)
	movlw HIGH(arr003+1)
	btfsc STATUS, C
	addlw 1
	movwf PCLATH
	movf __const_ptr__param00, W
	goto arr003
	movf __const_ptr__param00, W
	addlw LOW(arr004+1)
	movlw HIGH(arr004+1)
	btfsc STATUS, C
	addlw 1
	movwf PCLATH
	movf __const_ptr__param00, W
	goto arr004
	movf __const_ptr__param00, W
	addlw LOW(arr005+1)
	movlw HIGH(arr005+1)
	btfsc STATUS, C
	addlw 1
	movwf PCLATH
	movf __const_ptr__param00, W
	goto arr005

arr000
	addwf PCL, F
	retlw D'10'
	retlw D'13'
	retlw D'82'
	retlw D'101'
	retlw D'99'
	retlw D'101'
	retlw D'105'
	retlw D'118'
	retlw D'101'
	retlw D'100'
	retlw D'58'
	retlw D'32'
	retlw D'0'
arr001
	addwf PCL, F
	retlw D'110'
	retlw D'111'
	retlw D'116'
	retlw D'104'
	retlw D'105'
	retlw D'110'
	retlw D'103'
	retlw D'32'
	retlw D'116'
	retlw D'111'
	retlw D'32'
	retlw D'114'
	retlw D'101'
	retlw D'97'
	retlw D'100'
	retlw D'46'
	retlw D'46'
	retlw D'46'
	retlw D'0'
arr002
	addwf PCL, F
	retlw D'10'
	retlw D'13'
	retlw D'69'
	retlw D'110'
	retlw D'100'
	retlw D'49'
	retlw D'0'
arr003
	addwf PCL, F
	retlw D'65'
	retlw D'68'
	retlw D'67'
	retlw D'55'
	retlw D'32'
	retlw D'114'
	retlw D'101'
	retlw D'97'
	retlw D'100'
	retlw D'58'
	retlw D'32'
	retlw D'0'
arr004
	addwf PCL, F
	retlw D'10'
	retlw D'13'
	retlw D'69'
	retlw D'110'
	retlw D'100'
	retlw D'50'
	retlw D'10'
	retlw D'13'
	retlw D'0'
arr005
	addwf PCL, F
	retlw D'10'
	retlw D'13'
	retlw D'87'
	retlw D'101'
	retlw D'108'
	retlw D'99'
	retlw D'111'
	retlw D'109'
	retlw D'101'
	retlw D'32'
	retlw D'116'
	retlw D'111'
	retlw D'32'
	retlw D'67'
	retlw D'101'
	retlw D'114'
	retlw D'101'
	retlw D'98'
	retlw D'101'
	retlw D'108'
	retlw D'108'
	retlw D'117'
	retlw D'109'
	retlw D'33'
	retlw D'10'
	retlw D'13'
	retlw D'0'
start__code
	bcf STATUS, RP0
	bcf STATUS, RP1
	clrf _servo_state
	clrf _servo_curr
	movlw D'255'
	movwf _servo_mask
	movlw D'1'
	movwf _servo_switch
	clrf _servo_pos
	clrf _servo_pos+D'1'
	clrf _servo_pos+D'2'
	clrf _servo_pos+D'3'
	clrf _servo_pos+D'4'
	clrf _servo_pos+D'5'
	clrf _servo_pos+D'6'
	clrf _servo_pos+D'7'
	clrf __servo_free
	movlw D'100'
	movwf _postest
	clrf _postest+D'1'
_main__code
	call _init_cerebellum
	bcf PCLATH, 3
	bcf PCLATH, 4
	movlw D'10'
	bcf STATUS, RP0
	bcf STATUS, RP1
	movwf param00_ser_init
	call _ser_init
	bcf PCLATH, 3
	bcf PCLATH, 4
	movlw D'40'
	movwf param00_ser_putstring
	call _ser_putstring
	bcf PCLATH, 3
	bcf PCLATH, 4
	call _servo_init
	bcf PCLATH, 3
	bcf PCLATH, 4
	movlw D'1'
	bcf STATUS, RP0
	bcf STATUS, RP1
	movwf _servo_state
	bsf INTCON, D'7'
	movlw D'255'
	movwf _servo_mask
	movf _postest+D'1', W
	movwf _code_tmp_0000 
	movf _postest, W
	movwf _servo_pos+D'1'
	bsf STATUS, RP0
	clrf _ADCON1
	call _pwm_init
	bcf PCLATH, 3
	bcf PCLATH, 4
	call _button_sample
	bcf PCLATH, 3
	bcf PCLATH, 4
_main__end
_ser_init__code
	bcf STATUS, RP0
	bcf STATUS, RP1
	clrf _SSPCON
	clrf _PIR1
	bsf STATUS, RP0
	bcf _PIE1, D'5'
	bcf _PIE1, D'4'
	movf _TRISC, W
	iorlw D'192'
	movwf _TRISC
	bcf STATUS, RP0
	movf param00_ser_init, W
	bsf STATUS, RP0
	movwf _SPBRG
	movlw D'36'
	movwf _TXSTA
	movlw D'144'
	bcf STATUS, RP0
	movwf _RCSTA
	movf _RCREG, W
	movwf _ser_tmp
	movf _RCREG, W
	movwf _ser_tmp
	movf _RCREG, W
	movwf _ser_tmp
	return
_ser_init__end
_ser_tx__code
label_0000
	bcf STATUS, RP0
	bcf STATUS, RP1
	movf _PIR1, W
	andlw D'16'
	andlw 0xFF
	movlw 1
	btfss STATUS, Z
	movlw 0
	sublw 0
	btfsc STATUS, Z
	goto label_0001
	goto label_0000
label_0001
	bcf STATUS, RP0
	bcf STATUS, RP1
	movf param00_ser_tx, W
	movwf _TXREG
	return
_ser_tx__end
_ser_putstring__code
	bcf STATUS, RP0
	bcf STATUS, RP1
	clrf _i_ser_putstring
label_0002
	bcf STATUS, RP0
	bcf STATUS, RP1
	movf _i_ser_putstring, W
	movwf __const_ptr__param00
	movf param00_ser_putstring, W
	call const_param__code
	bcf PCLATH, 3
	bcf PCLATH, 4
	sublw D'0'
	movlw 1
	btfsc STATUS, Z
	clrw
	sublw 0
	btfsc STATUS, Z
	goto label_0003
	bcf STATUS, RP0
	bcf STATUS, RP1
	movf _i_ser_putstring, W
	incf _i_ser_putstring, F
	movwf __const_ptr__param00
	movf param00_ser_putstring, W
	call const_param__code
	bcf PCLATH, 3
	bcf PCLATH, 4
	bcf STATUS, RP0
	bcf STATUS, RP1
	movwf param00_ser_tx
	call _ser_tx
	bcf PCLATH, 3
	bcf PCLATH, 4
	goto label_0002
label_0003
	return
_ser_putstring__end
_ser_writechar__code
	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_0004
	bcf STATUS, C
	btfsc _code_tmp_0004 , 7
	bsf STATUS, C
	rlf _code_tmp_0003 , F
	movlw D'100'
	subwf _code_tmp_0003 , F
	btfsc STATUS, C
	goto label_0005
	addwf _code_tmp_0003 , F
	bcf STATUS, C
label_0005
	rlf _code_tmp_0004 , F
	decfsz _code_tmp_0002 , F
	goto label_0004
	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 
	movlw D'8'
	movwf _code_tmp_0004 
	clrf _code_tmp_0005 
	bcf STATUS, RP0
	bcf STATUS, RP1
	movf param00_ser_writechar, W
	movwf _code_tmp_0006 
label_0006
	bcf STATUS, C
	btfsc _code_tmp_0006 , 7
	bsf STATUS, C
	rlf _code_tmp_0005 , F

⌨️ 快捷键说明

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