📄 robot_v01.asm
字号:
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 0X74
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
CLRF INTCON3
CLRF FSR2H
CLRF FSR2L
;--------------------------
IO_INIT4:
CLRF POSTINC2
BTFSS FSR2H,1
BRA IO_INIT4
RETURN
IO_TABLE:
;**************table for pic87f65j10
; FD5H T0CON , FD4H -----
DB 00000000B , 00000000B
; FD3H OSCCON , FD2H -----
DB 00000010B , 00000000B
; FD1H WDTCON , FD0H RCON
DB 00000001B , 01111111B
; FCFH TMR1H , FCEH TMR1L
DB 00000000B , 00000000B
; FCDH T1CON , FCCH TMR2
DB 00100101B , 00000000B
; FCBH PR2 , FCAH T2CON
DB 10000000B , 00000100B
; FC9H SSP1BUF , FC8H SSP1ADD
DB 00000000B , 00000000B
; FC7H SSP1STAT , FC6H SSP1CON1
DB 01000000B , 00100000B
; FC5H SSP1CON2 , FC4H ADRESH
DB 00000000B , 00000000B
; FC3H ADRESL , FC2H ADCON0
DB 00000000B , 00000000B
; FC1H ADCON1 , FC0H ADCON2
DB 00001100B , 00001111B
; FBFH CCPR1H , FBEH CCPR1L
DB 00111111B , 00000000B
; FBDH CCP1CON , FBCH CCPR2H
DB 00000000B , 00111111B
; FBBH CCPR2L , FBAH CCP2CON
DB 00000000B , 00001100B
; FB9H CCPR3H , FB8H CCPR3L
DB 00000000B , 00000000B
; FB7H CCP3CON , FB6H ECCP1AS
DB 00000000B , 00000000B
; FB5H CVRCON , FB4H CMCON
DB 00000000B , 11111111B
; FB3H TMR3H , FB2H TMR3L
DB 00000000B , 00000000B
; FB1H T3CON , FB0H PSPCON
DB 01000111B , 00000000B
; FAFH SPBRG1 , FAEH RCREG1
DB 00000000B , 00000000B
; FADH TXREG1 , FACH TXSTA1
DB 00000000B , 00000000B
; FABH RCSTA1 , FAAH -----
DB 00000000B , 00000000B
; FA9H ----- , FA8H -----
DB 00000000B , 00000000B
; FA7H EECON2 , FA6H EECON1
DB 00000000B , 00000000B
; FA5H IPR3 , FA4H PIR3
DB 00000000B , 00000000B
; FA3H PIE3 , FA2H IPR2
DB 00000000B , 00000000B
; FA1H PIR2 , FA0H PIE2
DB 00000000B , 00000000B
; F9FH IPR1 , F9EH PIR1 ,
DB 00000000B , 00000000B
; F9DH PIE1 , F9CH MEMCON
DB 00000000B , 11111111B
; F9BH OSCTUNE , F9AH TRISJ
DB 10111111B , 11111111B
; F99H TRISH , F98H TRISG
DB 11111111B , 00000000B
; F97H TRISF , F96H TRISE
DB 00000000B , 00000000B
; F95H TRISD , F94H TRISC
DB 00000000B , 10010001B
; F93H TRISB , F92H TRISA
DB 11111111B , 00000000B
; F91H LATJ , F90H LATH
DB 00000000B , 00000000B
; F8FH LATG , F8EH LATF
DB 11111111B , 11111111B
; F8DH LATE , F8CH LATD
DB 11111111B , 00000000B
; F8BH LATC , F8AH LATB
DB 11000000B , 00000000B
; F89H LATA , F88H PORTJ
DB 00100000B , 00000000B
; F87H PORTH , F86H PORTG
DB 00000000B , 11111111B
; F85H PORTF , F84H PORTE
DB 11111111B , 11111111B
; F83H PORTD , F82H PORTC
DB 00000000B , 11000000B
; F81H PORTB , F80H PORTA
DB 00000000B , 00100000B
; F7FH SPBRGH1 , F7EH BAUDCON1
DB 00000000B , 00001000B
; F7DH SPBRGH2 , F7CH BAUDCON2
DB 00000000B , 00001000B
; F7BH ------- , F7AH ------
DB 00000000B , 00000000B
; F79H ECCP1DEL , F78H TMR4
DB 10000001B , 00000000B
; F77H PR4 , F76H T4CON
DB 00000000B , 00000000B
; F75H CCPR4H , F74H CCPR4L
DB 00000000B , 00000000B
; F73H CCP4CON , F72H CCPR5H
DB 00000000B , 00000000B
; F71H CCPR5L , F70H CCP5CON
DB 00000000B , 00000000B
; F6FH SPBRG2 , F6EH RCREG2
DB 00000111B , 00000000B
; F6DH TXREG2 , F6CH TXSTA2
DB 00000000B , 00101110B
; F6BH RCSTA2 , F6AH ECCP3AS
DB 00000000B , 00000000B
; F69H ECCP3DEL , F68H ECCP2AS
DB 11111111B , 00000000B
; F67H ECCP2DEL , F66H SSP2BUF
DB 11111111B , 00000000B
; F65H SSP2ADD , F64H SSP2STAT
DB 00000000B , 00000000B
; F63H SSP2CON1 , F62H SSP2CON2
DB 00000000B , 00000000B
;******************************
;******************************
;******************************
;--------------------------
WRITE_SPI_03H_CS
MOVLW 03
BRA WRITE_SPI
WRITE_SPI_00:
MOVLW 0
WRITE_SPI:
BCF F_CE
MOVWF SSP1BUF
DELAY8NOP:
CLRWDT
NOP
NOP
NOP
NOP
CLRWDT
NOP
NOP
NOP
NOP
MOVF SSP1BUF,W
RETURN
;**********************************
;**********************************
;******************************
SPEECH_V1:
MOVLW 0
SPEECH_V1_2:
MOVWF VOIC_CNT
SPEECH_V2:
MOVF VOIC_CNT,W
MULLW 0X40
MOVF PRODL,W
MOVWF PIC_ADDRM
MOVF PRODH,W
MOVWF PIC_ADDRH
MOVLW 0X60
MOVWF PIC_ADDRL
SPEECH_ONE:
RCALL WRITE_SPI_03H_CS
MOVF PIC_ADDRH,W
RCALL WRITE_SPI
MOVF PIC_ADDRM,W
RCALL WRITE_SPI
MOVF PIC_ADDRL,W
RCALL WRITE_SPI
RCALL WRITE_SPI
RCALL SOUND_SOFT_ON
MOVLW 0X00
MOVWF PIC_ADDRH
MOVLW 0X3F
MOVWF PIC_ADDRM
MOVLW 0X90
MOVWF PIC_ADDRL
MOVLW 24
CPFSEQ VOIC_CNT
BRA SPEECH_ONE2
MOVLW 0X01
MOVWF PIC_ADDRH
MOVLW 0XFF
MOVWF PIC_ADDRM
MOVLW 0X90
MOVWF PIC_ADDRL
SPEECH_ONE2:
SETF LATE
SETF LATF
SETF LATG
MOVF SSP1BUF,W
MOVWF SSP1BUF
MOVWF PRODL
MOVWF PRODH
; MOVWF LAT
RRCF PRODL
RRCF PRODL,W
ANDLW 00111111B
MOVWF PRODL ;CCPR1L
SWAPF PRODH
ANDLW 00110000B
IORLW 00001100B
MOVWF CCP2CON
MOVF PRODL,W
MOVWF CCPR2L
CLRWDT
SPEECH_ONE4:
BTFSS TMR1L,6
BRA SPEECH_ONE4 ;BTG LATE,0
SPEECH_ONE5:
BTFSC TMR1L,6
BRA SPEECH_ONE5
MOVLW 0XFF
ADDWF PIC_ADDRL
ADDWFC PIC_ADDRM
ADDWFC PIC_ADDRH
BC SPEECH_ONE2
SOUND_SOFT_OFF:
BSF F_CE
MOVLW 00001100B
MOVWF CCP2CON
MOVF CCPR2L,W
bz SOUND_SOFT_OFF_end
SOUND_SOFT_OFF2:
BTFSS TMR1L,6
BRA SOUND_SOFT_OFF2
SOUND_SOFT_OFF4:
BTFSC TMR1L,6
BRA SOUND_SOFT_OFF4
CALL WORK_1
DECFSZ CCPR2L
BRA SOUND_SOFT_OFF2
SOUND_SOFT_OFF_end:
RETURN
;-----------------------------------
SOUND_SOFT_ON:
MOVLW 00001100B
MOVWF CCP2CON
SOUND_SOFT_ON2:
BTFSS TMR1L,6
BRA SOUND_SOFT_ON2
SOUND_SOFT_ON4:
BTFSC TMR1L,6
BRA SOUND_SOFT_ON4
CALL WORK_1
INCF CCPR2L
BTFSS CCPR2L,5
BRA SOUND_SOFT_ON2
RETURN
;********************
;*************************
STAND_UP:
RCALL ROBOT_WALK_STOP
CLRF SERVO_M1
MOVLW 1
MOVWF SERVO_M2
SETF SERVO_M3
SETF SERVO_M4
CLRF CNT0
STAND_UP2:
CLRF TMR1L
CLRF TMR1H
INCF CNT0
BTFSS CNT0,4
BRA STAND_UP4
MOVLW 2
ADDWF SERVO_M1
;INCF SERVO_M2
ADDWF SERVO_M2
BCF CNT0,4
STAND_UP4
RCALL SERVO_MG995
BCF FLAG_20MS
STAND_UP6:
CALL WORK_1
BTFSS FLAG_20MS
BRA STAND_UP6
MOVLW 11
CPFSGT SERVO_M1
BRA STAND_UP2
RETURN
;******************************
;******************************
;******************************
;******************************
MAX_WALK_STEP EQU 32
;******************************
;*****************
ROBOT_WALK_STOP:
MOVLW L_M
MOVWF DEGREE12
MOVWF DEGREE14
MOVWF DEGREE16
MOVWF DEGREE18
MOVWF DEGREE20
MOVWF DEGREE10
MOVWF DEGREE11
MOVWF DEGREE13
MOVWF DEGREE15
MOVWF DEGREE17
MOVWF DEGREE19
MOVWF DEGREE21
RETURN
;--------------------------
ROBOT_WALK_NO:
RETURN
ROBOT_WALK:
SETF LATE
SETF LATF
SETF LATG
MOVF WALK_CNT,W
BTFSC STATUS,Z
RETURN
ANDLW 0X0f
BTFSS STATUS,Z
RETURN
ROBOT_WALK2:
MOVLW 01111111B
ANDWF ROBOT_STATUSL,W
BZ ROBOT_WALK_NO
MOVLW UPPER ROBOT_STEP_TABLE; LOAD TBLPTR WITH THE BASE
MOVWF TBLPTRU ; PIC_ADDRESS OF THE WORD
MOVLW HIGH ROBOT_STEP_TABLE
MOVWF TBLPTRH
MOVLW LOW ROBOT_STEP_TABLE
MOVWF TBLPTRL
MOVLW 0
BTFSC ROBOT_STATUSL,6
MOVLW 2 ;DOWN
BTFSC ROBOT_STATUSL,5
MOVLW 4 ;LEFT
BTFSC ROBOT_STATUSL,4
MOVLW 6 ;RIGHT
BTFSC ROBOT_STATUSL,3
MOVLW 8 ;UP
ANDLW 0XFF
BNZ ROBOT_WALK4
RLCF ROBOT_STATUSL,W
ANDLW 00001110B
ADDLW 8
ROBOT_WALK4:
ADDWF TBLPTRL
MOVLW 0
ADDWFC TBLPTRH
CLRF TBLPTRU
TBLRD*+; READ INTO TABLAT AND INCREMENT
MOVF TABLAT,W ; GET DATA
MOVWF PRODL
TBLRD*+; READ INTO TABLAT AND INCREMENT
MOVF TABLAT,W ; GET DATA
MOVWF TBLPTRH
MOVF PRODL,W
MOVWF TBLPTRL
MOVF WALK_STEP,W
MULLW 8
MOVF PRODL,W
ADDWF TBLPTRL
MOVF PRODH,W
ADDWFC TBLPTRH
CLRF PRODL
MOVLW HIGH SERVO_M1
MOVWF FSR1H
MOVLW LOW SERVO_M1
MOVWF FSR1L
ROBOT_WALK6:
MOVLW HIGH DEGREE10
MOVWF FSR0H
MOVLW LOW DEGREE10
MOVWF FSR0L
TBLRD*+; READ INTO TABLAT AND INCREMENT
MOVF TABLAT,W ; GET DATA
MOVWF POSTINC1
ADDWF FSR0L
TBLRD*+; READ INTO TABLAT AND INCREMENT
MOVF TABLAT,W ; GET DATA
MOVWF POSTINC0
INCF PRODL
MOVLW 3
CPFSGT PRODL
BRA ROBOT_WALK6
INCF WALK_STEP
INCFSZ SERVO_M1,W
RETURN
CLRF WALK_STEP
BRA ROBOT_WALK2
;******************************
;******************************
;******************************
;******************************
ROBOT_STEP_TABLE
DW WROK_DOWN_TABLE
DW WROK_DOWN_TABLE
DW WROK_LEFT_TABLE
DW WROK_RIGHT_TABLE
DW WROK_UP_TABLE
DW WROK1_STEP_TABLE
DW WROK2_STEP_TABLE
DW WROK3_STEP_TABLE
DW WROK4_STEP_TABLE
DW WROK5_STEP_TABLE
DW WROK6_STEP_TABLE
DW WROK5_STEP_TABLE
;******************************
WROK2_STEP_TABLE
WROK3_STEP_TABLE
WROK4_STEP_TABLE
WROK5_STEP_TABLE
WROK6_STEP_TABLE
DB FING_NO,F_M,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB FING_NO,F_M,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB FING_NO,F_M,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB 0XFF,0XFF
DB 0XFF,0XFF
DB 0XFF,0XFF
DB 0XFF,0XFF
DB 0XFF,0XFF
DB 0XFF,0XFF
WROK1_STEP_TABLE:
DB HEAD,F_O,SNAP,L_M,FINGERL,F_M,FING_NO,F_M
DB FINGERR,F_O,HANDR,L_M,HEAD,F_M,FING_NO,F_M
DB FOOTR,F_O,LEGR,L_M,FINGERR,F_M,FING_NO,F_M
DB TAIL,F_O,BACK,L_M,FOOTR,F_M,FING_NO,F_M
DB FOOTL,F_O,LEGL,L_M,TAIL,F_M,FING_NO,F_M
DB FINGERL,F_O,HANDL,L_M,FOOTL,F_M,FING_NO,F_M
DB 0XFF,0XFF
WROK_UP_TABLE
DB TAIL,F_I,BACK,F_M,FING_NO,F_M,FING_NO,F_M
DB HEAD,F_O,SNAP,F_M,FING_NO,F_M,FING_NO,F_M
DB HANDR,L_L
DB LEGR,L_L
DB HANDL,L_R
DB LEGL,L_R
DB HEAD,F_M,TAIL,F_M,FING_NO,F_M,FING_NO,F_M
DB FINGERR,F_O,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB HANDR,L_R,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB FINGERR,F_M,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB FINGERL,F_O,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB HANDL,L_L,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB FINGERL,F_M,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB FOOTL,F_O,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB LEGL,L_L,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB FOOTL,F_M,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB FOOTR,F_O,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB LEGR,L_R,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB FOOTR,F_M,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB 0XFF,0XFF
WROK_DOWN_TABLE
DB HEAD,F_I,SNAP,F_M,FING_NO,F_M,FING_NO,F_M
DB TAIL,F_O,BACK,F_M,FING_NO,F_M,FING_NO,F_M
DB HANDR,L_R
DB LEGR,L_R
DB HANDL,L_L
DB LEGL,L_L
DB HEAD,F_M,TAIL,F_M,FING_NO,F_M,FING_NO,F_M
DB FINGERR,F_O,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB HANDR,L_L,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB FINGERR,F_M,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB FINGERL,F_O,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB HANDL,L_R,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB FINGERL,F_M,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB FOOTL,F_O,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB LEGL,L_R,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB FOOTL,F_M,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB FOOTR,F_O,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB LEGR,L_L,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB FOOTR,F_M,FING_NO,F_M,FING_NO,F_M,FING_NO,F_M
DB 0XFF,0XFF
DB 0XFF,0XFF
WROK_LEFT_TABLE:
;SERVO_CNT VALUE
DB FINGERR,F_I,HANDL,F_M,FING_NO,F_M,FING_NO,F_M
DB FOOTR,F_I,LEGL,F_M,FING_NO,F_M,FING_NO,F_M
DB FINGERL,F_O,HANDR,F_M,FING_NO,F_M,FING_NO,F_M
DB FOOTL,F_O,LEGR,F_M,FING_NO,F_M,FING_NO,F_M
DB SNAP,L_L,BACK,L_R,FING_NO,F_M,FING_NO,F_M
DB FINGERR,F_M
DB FOOTR,F_M
DB FINGERL,F_M
DB FOOTL,F_M
DB HEAD,F_O,TAIL,F_O,FING_NO,F_M,FING_NO,F_M
DB SNAP,L_R,BACK,L_L,FING_NO,F_M,FING_NO,F_M
DB HEAD,F_M,TAIL,F_M,FING_NO,F_M,FING_NO,F_M
DB 0XFF,0XFF
DB 0XFF,0XFF
WROK_RIGHT_TABLE:
;SERVO_CNT VALUE
DB FINGERL,F_I,HANDL,F_M,FING_NO,F_M,FING_NO,F_M
DB FOOTL,F_I,LEGL,F_M,FING_NO,F_M,FING_NO,F_M
DB FINGERR,F_O,HANDR,F_M,FING_NO,F_M,FING_NO,F_M
DB FOOTR,F_O,LEGR,F_M,FING_NO,F_M,FING_NO,F_M
DB SNAP,L_R,BACK,L_L,FING_NO,F_M,FING_NO,F_M
DB FINGERR,F_M
DB FOOTR,F_M
DB FINGERL,F_M
DB FOOTL,F_M
DB HEAD,F_O,TAIL,F_O,FING_NO,F_M,FING_NO,F_M
DB SNAP,L_L,BACK,L_R,FING_NO,F_M,FING_NO,F_M
DB HEAD,F_M,TAIL,F_M,FING_NO,F_M,FING_NO,F_M
DB 0XFF,0XFF
DB 0XFF,0XFF
;**********************************
;**********************************
;**********************************
;**********************************
;**********************************
;**********************************
;**********************************
;**********************************
;**********************************
;**********************************
;**********************************
;**********************************
;**********************************
;**********************************
;**********************************
;**********************************
;**********************************
;**********************************
;**********************************
;**********************************
;**********************************
;**********************************
;**********************************
ORG 7FF8H
DW 0XFF3F ;CONFIG 1
DW 0XFF7D ;CONFIG 2
DW 0XFeFF ;CONFIG 3
DW 0XFFFF
; DW 0XFBBF ;CONFIG 1
; DW 0XFFFD ;CONFIG 2
; DW 0XFFFF ;CONFIG 3
; DW 0XFFFF
;*******************
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -