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

📄 robot_v01bak.asm

📁 一种多自由度智能机器人的设计全部资料上传!
💻 ASM
📖 第 1 页 / 共 2 页
字号:

;SLEEP 150UA
;REC 20MA
;LIGHT 60MA
;LIGHT+TRANSMIT 90MA 
;TEST BY LZY 2007NOV14

;--------------------------------------------------------------------------
;                     TEST 18F65J10 PROGRAM
;
; MPU:          PIC18F65J11
; CHECK SUM :
; MAIN CRYSTAL OSCILLATOR :     8MHZ (PULL TO 32MHZ
; REAL TIMER CRYSTAL OSCILLATOR :     32768
;                    2006SEP12
;-----------------------------------------------------------------------
                       LIST P=18F65J11,R=DEC
;----------------------------------------
   INCLUDE "P18F65J11.INC"
  

 CBLOCK 0X0100      ; NAME_1 WILL BE ASSIGNED 20
FLAG0,FLAG1,FLAG2,FLAG3,FLAG4,NOTICEFLAG
CNT 

ROBOT_STATUSH,ROBOT_STATUSL
WORK_CNT
WORK_STEP
WORK_DIRECT

REC_CNT,REC_CNTL
REC_BIT_CNT



VOIC_CNT

PIC_ADDRH,PIC_ADDRM,PIC_ADDRL


IR_HCNT,IR_LCNT
IR_DATAH,IR_DATAL

SERVO_CNT1,SERVO_CNT2
DEGREE1,DEGREE2,DEGREE3,DEGREE4,DEGREE5,DEGREE6,DEGREE7,DEGREE8,DEGREE9,DEGREE10
DEGREE11,DEGREE12,DEGREE13,DEGREE14,DEGREE15,DEGREE16,DEGREE17,DEGREE18,DEGREE19,DEGREE20
DEGREE21,DEGREE22,DEGREE23,DEGREE24,DEGREE25,DEGREE26,DEGREE27,DEGREE28


 ENDC
;------------------------------
;------------------------------
;------------------------------
;------------------------------
#DEFINE	FLAG_20MS	FLAG0,0 
#DEFINE	REC_IR_OK	FLAG0,0 


;------------------------------
;------------------------------
;------------------------------
#DEFINE	PIN_SER1	LATD,7 
#DEFINE	PIN_SER2	LATD,6 
#DEFINE	PIN_SER3	LATD,5 
#DEFINE	PIN_SER4	LATD,4 
#DEFINE	PIN_SER5	LATD,3 
#DEFINE	PIN_SER6	LATD,2 
#DEFINE	PIN_SER7	LATD,1 
#DEFINE	PIN_SER8	LATD,0 

#DEFINE	SOUND	LATE,7 
#DEFINE	PIN_SER10	LATE,6 
#DEFINE	PIN_SER11	LATE,5 
#DEFINE	PIN_SER12	LATE,4 
#DEFINE	PIN_SER13	LATE,3 
#DEFINE	PIN_SER14	LATE,2 
#DEFINE	PIN_SER15	LATE,1 
#DEFINE	PIN_SER16	LATE,0 

#DEFINE	PIN_SER17	LATG,0 
#DEFINE	PIN_SER18	LATG,1 
#DEFINE	PIN_SER19	LATG,5 
#DEFINE	PIN_SER20	LATG,3 
#DEFINE	PIN_SER21	LATG,4

 
#DEFINE	PIN_SER22	LATF,7 
#DEFINE	PIN_SER23	LATF,6 
#DEFINE	PIN_SER24	LATF,5 
#DEFINE	PIN_SER25	LATF,4 
#DEFINE	PIN_SER26	LATF,3 
#DEFINE	PIN_SER27	LATF,2 
#DEFINE	PIN_SER28	LATF,1 
;-------------------------------
#DEFINE	PIN_IR	PORTA,3

;----------------
#DEFINE	TP		LATC,6 
;-------------------------
#DEFINE	F_CE		LATC,2

;**********************************
;**********************************

;**********************************

;****************
	ORG 000H
	BRA	POWER_ON	
		
	ORG 008H
	
	ORG 018H	
;******************************	
POWER_ON:
	CLRWDT
	CLRF	TOSU
	CLRF	TOSH
	CLRF	TOSL
	MOVLB	1

	CLRF	CCPR2L

	
MCU_INIT:			
	CALL	IO_INIT


	
        CALL	CPU_CLOCK_32M  
        
        
        BSF	F_CE
        MOVLW	0
        MOVWF	CCPR2L                         
	MOVWF	CCPR1L 
	
	
	CLRF	WORK_CNT
;***************			
MCU_INIT2:

MCU_INIT4:			
;**************	
	MOVLW	0			
	MOVWF	VOIC_CNT
	CALL	SPEECH_V2	
TEST_ME:

	

	CLRWDT
	;BRA	TEST_ME	
;*****************************
;*****************************
;*****************************
;*****************************
;*****************************

MAIN:
				MOVLW	90
				MOVWF	DEGREE28

	CLRF	TMR1L
	CLRF	TMR1H
			
	CALL	SERVO_MG995	
						
	BCF	FLAG_20MS
MAIN2:
	CALL	REC_IR_18MS
	
	BTFSS	REC_IR_OK
	BRA	MAIN_IR_END

	MOVLW	50
	MOVWF	WORK_CNT

	MOVF	IR_DATAH
	CPFSEQ	ROBOT_STATUSH
	BRA	MAIN_IR_NEW	
	MOVF	IR_DATAL
	CPFSEQ	ROBOT_STATUSL
	BRA	MAIN_IR_NEW	
	BRA	MAIN_IR_END
MAIN_IR_NEW:
	MOVF	IR_DATAH
	MOVWF	ROBOT_STATUSH
	MOVF	IR_DATAL
	MOVWF	ROBOT_STATUSL
;--------------	
;--------------
	CLRF	WORK_STEP	
MAIN_IR_END:	
	CALL	ROBOT_WORK
;--------------------------
MAIN_END
	CALL	WORK_1	
	BTFSS	FLAG_20MS
	BRA	MAIN_END
	
	MOVF	WORK_CNT
	BZ	MAIN
	DECF	WORK_CNT
	BRA	MAIN
;******************************
;******************************
;******************************		
;******************************
;******************************
;******************************	
REC_IR_18MS

	MOVLW	140		;
	CPFSLT	TMR1H
	BRA	REC_IR_18MS_ERROR
	
MIN_8P	EQU 18	
MAX_8P	EQU 24	


MIN_24P	EQU 54	
MAX_24P	EQU 72	

	
MAX_16P	EQU  48
MIN_48P EQU 180	
	
REC_IR_18MS_HEAD:
	BTFSS	PIN_IR		;SINGAL=HIGH
	BRA	REC_IR_18MS	
	
	CALL	GET_IR_HIGH
	BZ	REC_IR_18MS
	
	MOVLW	MIN_48P
	CPFSGT	REC_CNT
	BRA	REC_IR_18MS

	
	CALL	GET_IR_LOW
	BZ	REC_IR_18MS

	MOVLW	MIN_8P
	CPFSGT	REC_CNT
	BRA	REC_IR_18MS		
	MOVLW	MAX_8P
	CPFSLT	REC_CNT
	BRA	REC_IR_18MS	


	MOVLW	10
	MOVWF	REC_BIT_CNT
	CLRF	IR_DATAH
	CLRF	IR_DATAL
REC_IR_18MS_DATA:
	CALL	GET_IR_HIGH
	BZ	REC_IR_18MS
	
	MOVLW	MIN_8P
	CPFSGT	REC_CNT
	BRA	REC_IR_18MS		
	MOVLW	MAX_16P
	CPFSLT	REC_CNT
	BRA	REC_IR_18MS		

	MOVF	REC_CNT,W
	MOVWF	IR_HCNT
	
	
	CALL	GET_IR_LOW
	BZ	REC_IR_18MS
	
	MOVLW	MIN_8P
	CPFSGT	REC_CNT
	BRA	REC_IR_18MS		
	MOVLW	MAX_16P
	CPFSLT	REC_CNT
	BRA	REC_IR_18MS		

	MOVF	REC_CNT,W
	MOVWF	IR_LCNT
	
	
	ADDWF	IR_HCNT,W
	MOVWF	REC_CNT


	MOVLW	MIN_24P
	CPFSGT	REC_CNT
	BRA	REC_IR_18MS		
	MOVLW	MAX_24P
	CPFSLT	REC_CNT
	BRA	REC_IR_18MS	

	
	RRCF	IR_DATAH
	RRCF	IR_DATAL

	MOVF	IR_LCNT,W
	BSF	IR_DATAH,1
	CPFSGT  IR_HCNT
	BCF	IR_DATAH,1
	
	DECFSZ	REC_BIT_CNT
	BRA	REC_IR_18MS_DATA


	MOVLW	B'00000011'
	ANDWF	IR_DATAH
	BSF	REC_IR_OK
	RETURN		
REC_IR_18MS_ERROR:
	BCF	REC_IR_OK
	RETURN
;******************************
;******************************
GET_IR_LOW:
	CLRF	REC_CNT
GET_IR_LOW2:
	BTFSC	PIN_IR
	RETURN
	BTFSC	PIN_IR
	RETURN		
	BTFSC	PIN_IR
	RETURN
	BTFSC	PIN_IR
	RETURN		
	
	
	BTFSC	PIN_IR
	RETURN
	BTFSC	PIN_IR
	RETURN		
	BTFSC	PIN_IR
	RETURN
	BTFSC	PIN_IR
	RETURN			
	

	BTFSC	PIN_IR
	RETURN
	BTFSC	PIN_IR
	RETURN		
	BTFSC	PIN_IR
	RETURN
	BTFSC	PIN_IR
	RETURN		
	
	
	BTFSC	PIN_IR
	RETURN
	BTFSC	PIN_IR
	RETURN		
	BTFSC	PIN_IR
	RETURN
	BTFSC	PIN_IR
	RETURN			
	

	BTFSC	PIN_IR
	RETURN
	BTFSC	PIN_IR
	RETURN		
	BTFSC	PIN_IR
	RETURN
	BTFSC	PIN_IR
	RETURN			
	
	
	BTFSC	PIN_IR
	RETURN
	BTFSC	PIN_IR
	RETURN		
	
	CLRWDT
	INCFSZ	REC_CNTL
	BRA	GET_IR_LOW2	
	RETURN			
;******************************		
;******************************
;******************************
GET_IR_HIGH:
	CLRF	REC_CNT
GET_IR_HIGH2:
	BTFSS	PIN_IR
	RETURN
	BTFSS	PIN_IR
	RETURN		
	BTFSS	PIN_IR
	RETURN
	BTFSS	PIN_IR
	RETURN		
	
	
	BTFSS	PIN_IR
	RETURN
	BTFSS	PIN_IR
	RETURN		
	BTFSS	PIN_IR
	RETURN
	BTFSS	PIN_IR
	RETURN			
	

	BTFSS	PIN_IR
	RETURN
	BTFSS	PIN_IR
	RETURN		
	BTFSS	PIN_IR
	RETURN
	BTFSS	PIN_IR
	RETURN		
	
	BTFSS	PIN_IR
	RETURN
	BTFSS	PIN_IR
	RETURN		
	BTFSS	PIN_IR
	RETURN
	BTFSS	PIN_IR
	RETURN			
	

	BTFSS	PIN_IR
	RETURN
	BTFSS	PIN_IR
	RETURN		
	BTFSS	PIN_IR
	RETURN
	BTFSS	PIN_IR
	RETURN			
	
	BTFSS	PIN_IR
	RETURN
	BTFSS	PIN_IR
	RETURN		
	
	CLRWDT
	INCFSZ	REC_CNTL
	BRA	GET_IR_HIGH2	
	RETURN	
		
;******************************	
WORK_1:	
	
	MOVLW	156	
	CPFSGT	TMR1H
	RETURN
	BSF	FLAG_20MS
	RETURN
	
;******************************




;******************************	
SERVO_MG995:


	CLRF	LATE
	CLRF	LATG
	CLRF	LATF
	
	MOVLW	80
	MOVWF	SERVO_CNT1
	MOVLW	11
	MOVWF	SERVO_CNT2	
	
SERVO_MG995_DELAY500US:	
	DECFSZ	SERVO_CNT1
	BRA	SERVO_MG995_DELAY500US
	DECFSZ	SERVO_CNT2
	BRA	SERVO_MG995_DELAY500US	
				
	CLRF	SERVO_CNT1
SERVO_MG995_OUT:	
	MOVF	SERVO_CNT1,W
	
	CPFSGT	DEGREE10
	BSF	   PIN_SER10
	CPFSGT	DEGREE11
	BSF	   PIN_SER11
	CPFSGT	DEGREE12
	BSF	   PIN_SER12
	CPFSGT	DEGREE13
	BSF	   PIN_SER13
	CPFSGT	DEGREE14
	BSF	   PIN_SER14
	CPFSGT	DEGREE15
	BSF	   PIN_SER15
	CPFSGT	DEGREE16
	BSF	   PIN_SER16
	CPFSGT	DEGREE17
	BSF	   PIN_SER17
	CPFSGT	DEGREE18
	BSF	   PIN_SER18
	CPFSGT	DEGREE19
	BSF	   PIN_SER19	
	CPFSGT	DEGREE20
	BSF	   PIN_SER20
	CPFSGT	DEGREE21
	BSF	   PIN_SER21
	CPFSGT	DEGREE22
	BSF	   PIN_SER22
	CPFSGT	DEGREE23
	BSF	   PIN_SER23
	CPFSGT	DEGREE24
	BSF	   PIN_SER24
	CPFSGT	DEGREE25
	BSF	   PIN_SER25
	CPFSGT	DEGREE26
	BSF	   PIN_SER26
	CPFSGT	DEGREE27
	BSF	   PIN_SER27
	CPFSGT	DEGREE28
	BSF	   PIN_SER28
	
	
	INCFSZ	SERVO_CNT1	
	BRA	SERVO_MG995_OUT				
	SETF	LATE
	SETF	LATG
	SETF	LATF					
	RETURN
;******************
;******************
;******************
;******************
;******************
;******************
;******************

CPU_CLOCK_8M:
	BCF	OSCTUNE,PLLEN 
CPU_CLOCK_32M_B:
	MOVLW	0000010B
	MOVWF	OSCCON		
CPU_CLOCK_32M_WAIT:
	CLRWDT
	BTFSS	OSCCON,OSTS 
	BRA	CPU_CLOCK_32M_WAIT				
	RETURN	

CPU_CLOCK_32M:
	

	BSF	OSCTUNE,PLLEN 
	BRA	CPU_CLOCK_32M_B
	
	
CPU_CLOCK_32K:
	BCF	OSCTUNE,PLLEN 
	MOVLW	0000011B
	MOVWF	OSCCON	
	RETURN

;******************		
IO_INIT:
		
	MOVLW	UPPER IO_TABLE; LOAD TBLPTR WITH THE BASE
	MOVWF	TBLPTRU ; PIC_ADDRESS OF THE WORD
	MOVLW	HIGH IO_TABLE
	MOVWF	TBLPTRH 
	MOVLW	LOW IO_TABLE
	MOVWF	TBLPTRL  

	MOVLW	0X0F
	MOVWF	FSR0H 
	MOVLW	0XD5
	MOVWF	FSR0L 

	MOVLW	0X76
	MOVWF	CNT 

IO_INT2:
	TBLRD*+; READ INTO TABLAT AND INCREMENT
	MOVF	TABLAT,W  ; GET DATA
	MOVWF	POSTDEC0 
	CLRWDT		
	DECFSZ	CNT 
	BRA	IO_INT2
	
	CLRF	INTCON
	
	MOVLW	11000000B
	MOVWF	INTCON2
	

⌨️ 快捷键说明

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