亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sensrles_cln.asm

?? BLDC motor control using Pic18
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
	movlw	0xD8
	addwfc	PRODH,F
	movff	PRODH,VELOCITY_READH
	movff	PRODL,VELOCITY_READL
	return
;******************************************************************
FAULTA_PROCESS
	bsf		LED1
	bsf		LED2
	bsf		LED3

	bsf		FLAGS,FLAG_FAULT
	call	STOP_MOTOR
	bcf		FLTCONFIG,FLTAS
	bcf		FLT_FLAGS,OCUR
	bcf		FLAGS1,KEY_PRESSED
	bcf		FLAGS1,KEY_RS
	bcf		FLAGS1,RUN_STOP	
	return	

;******************************************************************
;Peripherals are initialized in this routine
;ADC,PWM, IC, ports and interrupts etc are initialized

INIT_PERPHERALS

;Initialize ADC 

	movlw	b'00010001'
	movwf	ADCON0
	movlw	b'00010000'
	movwf	ADCON1
	movlw	b'00110010'
	movwf	ADCON2
	movlw	b'10000000'
	movwf	ADCON3
	movlw	b'00000000'  
	movwf	ADCHS
	movlw	b'00000011'	
	movwf	ANSEL0
	movlw	b'00000000'
	movwf	ANSEL1

;-----------------------------------------------------------------
;Initialize PWM
	
	movlw	b'00000000'
	movwf	PTCON0
	
	movlw	0x37	; 20KHz = 0xFA		;20KHz of PWM frequency			
	movwf	PTPERL	;16KHz = 0x137
					;12KHz = 0x1A0	
	movlw	0x01
	movwf	PTPERH
	
	movlw	b'01001111'	;PWM0-5 enabled in independent mode
	movwf	PWMCON0
	
	movlw	b'00000001'	;Output overides synched wrt PWM timebase
	movwf	PWMCON1
	
	movlw	b'00000000'	;
	movwf	DTCON
	
	movlw	b'00000000'	;PWM0-5 PWM Duty cycle on overide 
	movwf	OVDCOND
	
	movlw	b'00000000'	; All PWMs = 0 on init
	movwf	OVDCONS
	
	movlw	b'10110011'	;Faults on 
	movlw	b'10000000'	;Faults on 
	movwf	FLTCONFIG
	
	movlw	0x00
	movwf	SEVTCMPL
	movlw	0x00
	movwf	SEVTCMPH

	clrf	PDC0L	
	clrf	PDC1L	
	clrf	PDC2L	
	clrf	PDC3L	
	clrf	PDC0H	
	clrf	PDC1H	
	clrf	PDC2H	
	clrf	PDC3H	

	movlw	b'10000000'		;PWM timer ON
	movwf	PTCON1
;-----------------------------------------------------------------
;init Hall @ IC1/IC2/IC3, Timer5
	bsf		TRISA,2
	bsf		TRISA,3
	bsf		TRISA,4
	movlw	b'00000001'	;1:1
	movwf	T5CON
	movlw	b'00000010'
	movwf	CAP1CON
	movlw	b'00000000'
	movwf	CAP2CON
	movlw	b'00000000'
	movwf	CAP3CON
	movlw	b'00111010'
	movwf	DFLTCON
	movlw	b'00000000'	;Disable QEI
	movwf	QEICON

;-----------------------------------------------------------------
;init PORTC
	movlw	b'10110010'
	movwf	TRISC

;-----------------------------------------------------------------
;init Timer1
	movlw	b'10000001'
	movwf	T1CON
	movlw	0xC3		;0xC350 = 10mSec@20MHz
	movwf	TMR1H
	movlw	0xFF
	movwf	TMR1L
;-----------------------------------------------------------------
LOAD_SEQUENCE_TABLE
 
;Forward sequence
	movlw	POSITION01
	movwf	POSITION_TABLE_FWD
	movlw	POSITION61
	movwf	POSITION_TABLE_FWD+1
	movlw	POSITION51
	movwf	POSITION_TABLE_FWD+2
	movlw	POSITION41
	movwf	POSITION_TABLE_FWD+3
	movlw	POSITION31
	movwf	POSITION_TABLE_FWD+4
	movlw	POSITION21
	movwf	POSITION_TABLE_FWD+5
	movlw	POSITION11
	movwf	POSITION_TABLE_FWD+6
	movlw	POSITION71
	movwf	POSITION_TABLE_FWD+7
;Reverse sequence
	movlw	POSITION71
	movwf	POSITION_TABLE_REV
	movlw	POSITION21
	movwf	POSITION_TABLE_REV+1
	movlw	POSITION41
	movwf	POSITION_TABLE_REV+2
	movlw	POSITION61
	movwf	POSITION_TABLE_REV+3
	movlw	POSITION11
	movwf	POSITION_TABLE_REV+4
	movlw	POSITION31
	movwf	POSITION_TABLE_REV+5
	movlw	POSITION51
	movwf	POSITION_TABLE_REV+6
	movlw	POSITION01
	movwf	POSITION_TABLE_REV+7
;-----------------------------------------------------------------
	clrf	SPEED_REFH
	clrf	CURRENT_UH	
	clrf	CURRENT_UL	
	clrf	FLAGS_SRLS
;-----------------------------------------------------------------
INITIALIZE_SERIAL_PORT

	movlw	0x81		;Baudrate = 9600
	movwf	SPBRG
	
	movlw	0x24		;8-bit transmission;Enable Transmission;	
	movwf	TXSTA		;Asynchronous mode with High speed transmission
	
	movlw	0x90		;Enable the serial port
	movwf	RCSTA		;with 8-bit continuous reception

	bcf	TRISC,6
	bsf	TRISC,7

;------------------------------------------------------------------------

;init interrupts
	bsf	PIE1,ADIE	;AD Converter over Interrupt enable
	bsf	PIE3,PTIE		;PWM interrupt
	bsf	PIE1,TMR1IE

	movlw	0x093		;Power ON reset status bit/Brownout reset status bit
	movwf	RCON		;and Instruction flag bits are set
				;Priority level on Interrupots enabled

	RETURN
	

;*******************************************************************************
;This routine checks for the keys status. 2 keys are checked, Run/Stop and 
;Forward(FWD)/Reverse(REV)  
;*******************************************************************************
KEY_CHECK
	btfsc	KEY_PORT,RUN_STOP_KEY			;Is key pressed "RUN/STOP"?
	goto	CHECK_FWD_REV_KEY
	btfsc	FLAGS1,DEBOUNCE
	return
	call	KEY_DEBOUNCE
	btfss	FLAGS1,DEBOUNCE
	return
	bsf		FLAGS1,KEY_RS
	return
	
CHECK_FWD_REV_KEY
	btfsc	KEY_PORT,FWD_REV_KEY			;Is key pressed "RUN/STOP"?
	goto	SET_KEYS
	btfsc	FLAGS1,DEBOUNCE
	return
	call	KEY_DEBOUNCE
	btfss	FLAGS1,DEBOUNCE
	return
	bsf		FLAGS1,KEY_FR
	return

SET_KEYS
	btfss	FLAGS1,DEBOUNCE
	return
	bcf		FLAGS1,DEBOUNCE
	bsf		FLAGS1,KEY_PRESSED	
	btfss	FLAGS1,KEY_RS
	bra		ITS_FWD_REV	
	btg		FLAGS1,RUN_STOP
	return
ITS_FWD_REV	
	btg		FLAGS1,FWD_REV
	return


;*******************************************************************************
KEY_DEBOUNCE
	decfsz	DEBOUNCE_COUNTER,F
	return
	bsf		FLAGS1,DEBOUNCE
	movlw	DEBOUNCE_COUNT
	movwf	DEBOUNCE_COUNTER
	return
;*******************************************************************************
PROCESS_KEY_PRESSED
	btfss	FLAGS1,KEY_PRESSED
	return
	btfss	FLAGS1,KEY_RS
	goto	CHECK_FWD_REV
	btfss	FLAGS1,RUN_STOP	
	goto	STOP_MOTOR_NOW
	call	RUN_MOTOR_AGAIN
	bcf		FLAGS1,KEY_PRESSED
	bcf		FLAGS1,KEY_RS

	bsf		LED_PORT,RUN_STOP_LED	
	return

STOP_MOTOR_NOW
	call	STOP_MOTOR		;STOP motor
	bcf		FLAGS1,KEY_PRESSED
	bcf		FLAGS1,KEY_RS
	bcf		LED_PORT,RUN_STOP_LED	
	return

CHECK_FWD_REV
	btfss	FLAGS1,KEY_FR
	return

	btg		LED_PORT,FWD_REV_LED	

	bcf		LED_PORT,RUN_STOP_LED	
	call	STOP_MOTOR

	call	DELAY

	call	RUN_MOTOR_AGAIN
	bcf		FLAGS1,KEY_PRESSED
	bcf		FLAGS1,KEY_FR
	bsf		LED_PORT,RUN_STOP_LED	
	return

;*******************************************************************************
;This routine stops the motor by driving the PWMs to 0% duty cycle.
;*******************************************************************************
STOP_MOTOR
	bcf		PIE1,ADIE
	bcf		PIE3,IC1IE		;Velocity capture
	bcf		PIE3,IC3DRIE	;Diection change
	bcf		PIE3,IC2QEIE	;QEI interrupt
	bcf		PIE3,PTIE		;PWM interrupt
	bcf		PIE1,TMR1IE

	clrf	OVDCOND		;STOP motor
	clrf	PDC0H
	clrf	PDC1H
	clrf	PDC2H	
	clrf	PDC3H	
	clrf	PDC0L	
	clrf	PDC1L
	clrf	PDC2L
	clrf	PDC3L
	bcf		FLAGS,CALC_PWM
	clrf	SPEED_REFH
	return
;*******************************************************************************
;This routine starts motor from previous stop with motor parameters initialized
;*******************************************************************************
RUN_MOTOR_AGAIN
	bsf		FLAGS1,RUN_STOP	
;	bcf		FLAGS,FLAG_FAULT
;-----------------------------------------------------------------
	clrf	SPEED_REFH
	clrf	CURRENT_UH	
	clrf	CURRENT_UL	

;-----------------------------------------------------------------
	bsf		PIE1,ADIE
	bsf		PIE3,IC1IE		;Velocity capture
	bsf		PIE1,TMR1IE		;enable T1 interrupt
	bsf		PIE3,PTIE		;PWM interrupt

	clrf	FLAGS

	movlw	b'10000000'	;Faults on 
	movwf	FLTCONFIG
	bcf		FLT_FLAGS,OCUR
	bcf		FLT_FLAGS,OVOLT
	bcf		FLT_FLAGS,OTEMP

	clrf	FLAGS_SRLS
	clrf	OVDCOND_TEMP

	movlw	0xF0
	movwf	COUNT_OPEN_LOOPH
	movwf	COUNT_OPEN_LOOPL
	return


;---------------------------------
TOGGLE_LEDS

	incfsz	COUNTER_SP,F
	return
	incfsz	COUNTER_SP1,F
	return
	btg		LED1
	btg		LED2
	btg		LED3

	return
;------------------------------------------
FIRST_ADC_INIT
	movlw	b'00100111'
	movwf	ADCON0
	movlw	b'00000000'
	movwf	ADCON1
	movlw	b'00110010'
	movwf	ADCON2
	movlw	b'00000000'
	movwf	ADCON3
	movlw	b'00000000' 
	movwf	ADCHS
	movlw	b'00000010'	
	movwf	ANSEL0
	movlw	b'00000000'
	movwf	ANSEL1

	bcf		TRISC,0
	bcf		TRISC,2
	bcf		TRISC,3
	return
	
LED_BLINK
	bcf		LED1
	bcf		LED2
	bcf		LED3

	movlw	0X40
	cpfsgt	ADRESH	
	return
	bsf		LED1
	movlw	0x80
	cpfsgt	ADRESH
	return
	bsf		LED2
	movlw	0XD0
	cpfsgt	ADRESH	
	return
	bsf		LED3
	return

;*******************************************************************************
SET_SEQUENCE_COUNT
	call	OPEN_LOOP_PWM

	btfss	FLAGS1,FWD_REV
	bra		RUN_REVERSE

	movlw	0x5					;Check for the last value on the table
	cpfslt	TABLE_OFFSET
	bra		CLEAR_OFFSET
	incf	TABLE_OFFSET,F		;Increment offset1
	bra		LOAD_SEQUENCE_COUNT
CLEAR_OFFSET
	clrf	TABLE_OFFSET
	bra		LOAD_SEQUENCE_COUNT
RUN_REVERSE
	decf	TABLE_OFFSET,F		;Increment offset1
	btfsc	STATUS,C
	bra		LOAD_SEQUENCE_COUNT
LOAD_OFFSET
	movlw	0x5	
	movwf	TABLE_OFFSET

LOAD_SEQUENCE_COUNT
	movf	TABLE_OFFSET,W
	btfss	STATUS,Z
	bra		NEXT_TEST1
	movlw	POSITION1
	movwf	OVDCOND
	movwf	OVDCOND_TEMP
	btg		LED1
	return
NEXT_TEST1
	movf	TABLE_OFFSET,W
	sublw	0x1
	btfss	STATUS,Z
	bra		NEXT_TEST2
	movlw	POSITION3
	movwf	OVDCOND
	movwf	OVDCOND_TEMP
	btg		LED1
	return
NEXT_TEST2
	movf	TABLE_OFFSET,W
	sublw	0x2
	btfss	STATUS,Z
	bra		NEXT_TEST3
	movlw	POSITION2
	movwf	OVDCOND
	movwf	OVDCOND_TEMP
	btg		LED1
	return
NEXT_TEST3
	movf	TABLE_OFFSET,W
	sublw	0x3
	btfss	STATUS,Z
	bra		NEXT_TEST4
	movlw	POSITION6
	movwf	OVDCOND
	movwf	OVDCOND_TEMP
	btg		LED1
	return
NEXT_TEST4
	movf	TABLE_OFFSET,W
	sublw	0x4
	btfss	STATUS,Z
	bra		NEXT_TEST5
	movlw	POSITION4
	movwf	OVDCOND
	movwf	OVDCOND_TEMP
	btg		LED1
	return
NEXT_TEST5
	movf	TABLE_OFFSET,W
	sublw	0x5
	btfss	STATUS,Z
	return
	movlw	POSITION5
	movwf	OVDCOND
	movwf	OVDCOND_TEMP
	btg		LED1
	return

;*******************************************************************************
;This routine sets PWM duty cycles for open loop while starting the motor from stand still
OPEN_LOOP_PWM

	movlw	0x64
	cpfslt	SPEED_REFH	
	bra		AAAAA
	clrf	PDC_TEMPL	
	clrf	PDC_TEMPH
	bra		BBBBB	
AAAAA
	movlw	0xA5	
	movwf	PDC_TEMPL
	movlw	0x03	
	movwf	PDC_TEMPH
BBBBB
	bsf		PWMCON1,UDIS	;Disable the PWM buffer update

	movf	PDC_TEMPH,W
	movwf	PDC0H
	movwf	PDC1H
	movwf	PDC2H	
	movwf	PDC3H	

	movf	PDC_TEMPL,W
	movwf	PDC0L	
	movwf	PDC1L
	movwf	PDC2L
	movwf	PDC3L

	bcf		PWMCON1,UDIS	;Disable the PWM buffer update

	RETURN






;*******************************************************************************
;This routine sends data to PC. Displayed on Hyper terminal

SEND_DATA_TO_PC


	bcf		FLAGS_SRLS,PC_COM
	movlw	0xA	;new line
	call	SEND_BYTE_FROM_WREG
	movlw	0xD	;carriage return
	call	SEND_BYTE_FROM_WREG

	movf	OVDCOND_TEMP,W	
	addlw	0x41
	call	SEND_BYTE_FROM_WREG
	movf	BEMF_ZC,W	
	addlw	0x41
	call	SEND_BYTE_FROM_WREG

	return

;---------------------------------------------------------
DISPLAY_DIGITS
	movf	DISPLAY_TEMP1,W
	andlw	0xF0
	swapf	WREG,W
	addlw	0x30	
	call	CHECK_39
	call	SEND_BYTE_FROM_WREG
	movf	DISPLAY_TEMP1,W
	andlw	0x0F
	addlw	0x30	
	call	CHECK_39
	call	SEND_BYTE_FROM_WREG
	RETURN
;------------------------------
CHECK_39
	movwf	DISPLAY_TEMP2
	movlw	0x39
	cpfsgt	DISPLAY_TEMP2
	bra		LESS_39
	movf	DISPLAY_TEMP2,W
	addlw	0x7
	return
LESS_39
	movf	DISPLAY_TEMP2,W
	return
;------------------------------
SEND_BYTE_FROM_WREG
	btfss	PIR1,TXIF
	goto	SEND_BYTE_FROM_WREG
	movwf	TXREG
	return

;*******************************************************************************
;Delay routine.
;*******************************************************************************
DELAY
	movlw	DELAY_COUNT1
	movwf	COUNTER
dec_count	
	movlw	DELAY_COUNT2
	movwf	COUNTER1
dec_count1
	decfsz	COUNTER1,F
	goto	dec_count1
	decfsz	COUNTER,F
	goto	dec_count
	clrf	COUNTER
	clrf	COUNTER1
	return		




	END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
制服丝袜亚洲网站| 国产精品三级av| 久久久久久9999| 一区二区高清在线| 国产成人精品免费在线| 欧美视频中文一区二区三区在线观看| 日韩视频免费观看高清完整版| 国产精品系列在线| 日本午夜精品视频在线观看| 成人av电影免费在线播放| 日韩午夜激情免费电影| 一区二区三区欧美在线观看| 成人午夜激情视频| 日韩精品影音先锋| 亚洲小说春色综合另类电影| www..com久久爱| 精品国产乱子伦一区| 亚洲高清视频在线| 日本韩国欧美一区二区三区| 中文字幕av在线一区二区三区| 奇米色777欧美一区二区| 在线观看欧美黄色| 亚洲欧美一区二区不卡| 粉嫩av一区二区三区| 精品久久久久久久久久久久久久久| 亚洲一区二区三区免费视频| 色综合色狠狠综合色| 欧美韩国日本一区| 国产一区二区三区免费观看 | 一个色综合av| 91美女精品福利| 国产精品久久夜| 国产suv精品一区二区三区| 久久婷婷综合激情| 国产一区二区毛片| 国产色婷婷亚洲99精品小说| 国产精品996| 国产亚洲精品中文字幕| 高清不卡在线观看| 国产精品网曝门| 99久久国产综合色|国产精品| 欧美国产成人精品| a级精品国产片在线观看| 亚洲欧洲精品一区二区三区| 99久久婷婷国产综合精品 | 亚洲精品国产a久久久久久| 波多野结衣中文字幕一区 | 午夜精品久久一牛影视| 欧美猛男超大videosgay| 日本中文字幕一区二区视频| 日韩欧美国产综合| 精品一区二区在线免费观看| 欧美激情一区二区三区在线| 97se亚洲国产综合自在线不卡| 亚洲精品成人精品456| 欧美日韩中字一区| 裸体健美xxxx欧美裸体表演| 国产婷婷精品av在线| 色婷婷综合久久久中文字幕| 婷婷中文字幕综合| 久久综合成人精品亚洲另类欧美| jlzzjlzz亚洲女人18| 一区二区三区中文免费| 久久精品视频在线看| 91毛片在线观看| 秋霞国产午夜精品免费视频| 国产调教视频一区| 欧美日韩精品一区二区三区 | 精品日韩成人av| 国产成人av网站| 一区二区三区蜜桃| wwwwxxxxx欧美| 91成人国产精品| 卡一卡二国产精品 | 日韩精品亚洲一区二区三区免费| 精品国产三级电影在线观看| 99精品视频在线观看| 日本不卡免费在线视频| 国产精品嫩草影院com| 日韩亚洲国产中文字幕欧美| 91首页免费视频| 国产制服丝袜一区| 亚洲图片欧美色图| 中文字幕不卡在线播放| 欧美一级精品在线| 欧美亚洲动漫另类| 成人毛片视频在线观看| 青青青爽久久午夜综合久久午夜| 国产精品不卡在线| 精品三级av在线| 欧美精品视频www在线观看| 波多野结衣在线aⅴ中文字幕不卡| 免费看欧美女人艹b| 亚洲国产精品久久人人爱蜜臀| 国产午夜精品一区二区三区四区| 日韩一级片在线观看| 欧洲日韩一区二区三区| www.色综合.com| 国产不卡视频在线观看| 麻豆国产91在线播放| 午夜精品久久久久久| 一区二区视频免费在线观看| 亚洲国产高清在线| 久久综合狠狠综合久久综合88| 日韩一区二区电影网| 欧美日韩一区 二区 三区 久久精品| eeuss鲁片一区二区三区在线看| 国产自产高清不卡| 九色综合狠狠综合久久| 蜜臀av性久久久久蜜臀av麻豆| 日日摸夜夜添夜夜添国产精品| 一区二区三区在线免费观看| 亚洲色图欧洲色图婷婷| 国产精品久久久久久久岛一牛影视| 国产亚洲精品免费| 久久久国产精品午夜一区ai换脸| 日韩一区二区电影网| 在线电影院国产精品| 欧美高清www午色夜在线视频| 欧美高清一级片在线| 在线播放/欧美激情| 日韩视频一区二区三区| 欧美xxxx老人做受| 久久精品夜色噜噜亚洲a∨| 精品国产一区二区精华| 国产亚洲欧美中文| 中文成人av在线| 亚洲日本中文字幕区| 亚洲图片有声小说| 美女性感视频久久| 国产电影精品久久禁18| 福利一区二区在线观看| av不卡在线播放| 色综合色狠狠综合色| 欧美影院精品一区| 91精品国产乱| 国产视频一区二区在线观看| 1024成人网色www| 亚洲精品福利视频网站| 日本中文字幕一区二区视频 | 亚洲精品免费在线观看| 亚洲bt欧美bt精品| 精品制服美女久久| 成人开心网精品视频| 欧美亚洲综合久久| 精品国产制服丝袜高跟| 成人欧美一区二区三区小说| 亚洲成人7777| 国产一区二区在线影院| 一本久道中文字幕精品亚洲嫩| 欧美日韩精品免费观看视频| 日韩欧美国产一区在线观看| 国产精品剧情在线亚洲| 午夜精品视频在线观看| 国产白丝精品91爽爽久久| 欧美在线不卡视频| 久久影院午夜论| 欧美日韩国产综合一区二区三区| 欧美刺激脚交jootjob| 国产精品视频一二三区| 亚洲二区在线视频| 国产乱人伦偷精品视频免下载| 天天免费综合色| 国产一区视频在线看| 欧美亚洲自拍偷拍| 国产亚洲欧美激情| 免费成人在线视频观看| 色综合久久天天| 久久久久久久久97黄色工厂| 亚洲成av人片在线观看无码| 丁香桃色午夜亚洲一区二区三区| 欧美男生操女生| 亚洲色图在线播放| 国产精品亚洲а∨天堂免在线| 在线91免费看| 亚洲欧美一区二区三区国产精品 | 91超碰这里只有精品国产| 国产精品久久久久久亚洲毛片 | 亚洲电影中文字幕在线观看| 国产成a人亚洲| 精品少妇一区二区三区视频免付费| 一区二区三区高清在线| 福利一区二区在线| 337p粉嫩大胆色噜噜噜噜亚洲| 天堂资源在线中文精品| 色综合天天视频在线观看| 国产夜色精品一区二区av| 久久不见久久见免费视频1| 在线成人高清不卡| 亚洲国产精品人人做人人爽| 91麻豆国产精品久久| 国产精品电影院| 成人av免费在线| 国产精品美女视频| 成人毛片视频在线观看| 国产精品美女久久久久久| 国产精品亚洲一区二区三区在线 | 亚洲欧洲成人精品av97| 成人性生交大片免费看视频在线| 久久综合色一综合色88|