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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? hall3drv1.asm

?? 這個(gè)是直流無刷電機(jī)的基于DSP2407的速度控制源代碼
?? ASM
字號(hào):
;============================================================================
; 文件名:	Hall3drv.asm
;
; 模塊名: 	HALL3_DRV				      
;
; 初始化程序名: HALL3_DRV_INIT
;
; 公司:	達(dá)盛科技
;
; 功能描述:	控制逆變器的開關(guān)狀態(tài),驅(qū)動(dòng)直流無刷電動(dòng)機(jī)。 	
;
;						|~~~~~~~~~~~~~~~|
;   					|				| 
;	hall_map_ptro------>|  HALL3_DRV	|----->o  cmtn_trig_hall
;						|				|
;						|_______________|
;
;=====================================================================================
; 修改記錄:
;-------------------------------------------------------------------------------------
; 2005.08.20	版本:Ver 1.0
;===========================================================================
;(要調(diào)用模塊,就將下面聲明語句復(fù)制到主程序代碼中相應(yīng)位置)
;		.ref	HALL3_DRV, HALL3_DRV_INIT			;子程序調(diào)用
;		.ref	cmtn_trig_hall, hall_map_ptr		;輸入輸出
;===========================================================================
;外部變量聲明.
		.def	HALL3_DRV, HALL3_DRV_INIT			;子程序調(diào)用
		.def	cmtn_trig_hall, hall_map_ptr		;輸入輸出
;===========================================================================
		.include	"x24x_app.h" 
		                
hall_vars   		.usect	"HALL_VAR",20,1
cmtn_trig_hall		.set	hall_vars+1   	;輸出信號(hào)作為模6計(jì)數(shù)器的觸發(fā)信號(hào)輸入
cap_cntr			.set	hall_vars+2     ;CAP1,2,3 引腳上檢測(cè)到的跳變                                                
debounce_CNT 		.set	hall_vars+3     ;Counter/debounce delay current value 
debounce_amount 	.set	hall_vars+4     ;Counter delay amount to validate/debounce GPIO readings
hall_GPIO			.set	hall_vars+5     ;Most recent logic level on CAP/GPIO
hall_GPIO_buf 		.set	hall_vars+6     ;Buffer of last logic level on CAP/GPIO while being debounced
hall_GPIO_accepted 	.set	hall_vars+7     ;Debounced logic level on CAP/GPIO
edge_debounced		.set	hall_vars+8     ;Trigger from Debounce function to Hall_Drv, if =1 edge is debounced 
hall_map1			.set	hall_vars+9     ;CAP/GPIO logic levels for hall_map_ptr = 0
hall_map2			.set	hall_vars+10    ;CAP/GPIO logic levels for hall_map_ptr = 1
hall_map3			.set	hall_vars+11    ;CAP/GPIO logic levels for hall_map_ptr = 2 
hall_map4			.set	hall_vars+12    ;CAP/GPIO logic levels for hall_map_ptr = 3
hall_map5			.set	hall_vars+13    ;CAP/GPIO logic levels for hall_map_ptr = 4
hall_map6			.set	hall_vars+14    ;CAP/GPIO logic levels for hall_map_ptr = 5
evifrc			    .set	hall_vars+15    ;CAP 捕獲標(biāo)志, 表明 CAP 引腳上檢測(cè)到跳變
stall_cntr		    .set	hall_vars+16    ;如果電機(jī)停轉(zhuǎn), 該計(jì)數(shù)器溢出,觸發(fā)轉(zhuǎn)換以啟動(dòng)電機(jī),霍爾信號(hào)的跳變表明電機(jī)啟動(dòng) 
hall_GPR0		    .set	hall_vars+17    ;通用寄存器
hall_map_ptr		.set	hall_vars+18    ;During hall map creation, this variable points to the current commutation
											;state.  After map creation, it points to the next commutation state.
revolutions			.set	hall_vars+19    ;運(yùn)行計(jì)數(shù)器, 6個(gè)霍爾狀態(tài)的一個(gè)循環(huán)定義為一轉(zhuǎn)
 
          
		.text
HALL3_DRV_INIT:   	;初始化程序				
	CALL	Determine_State               	;讀取 CAP/GPIO 邏輯電平
	LDP		#hall_vars
	BLDD	#hall_GPIO, hall_GPIO_buf       ;Init with current CAP/GPIO logic levels
	BLDD	#hall_GPIO, hall_GPIO_accepted  ;Init with current CAP/GPIO logic levels
	SPLK	#0, 	cmtn_trig_hall         	;No commutation trigger
	SPLK	#0, 	debounce_CNT            ;Reset CAP/GPIO debounce counter and amount, used on all detected edges
   	SPLK	#10, 	debounce_amount    
   	SPLK	#0, 	edge_debounced          ;Reset debounced edge trigger
	SPLK	#0FFFFh,stall_cntr              ;Set stall counter to starting amount, it will count down by 1 on every system 
	                                        ;ISR that a hall signal has not been detected.
	SPLK	#0, 	cap_cntr                ;Reset running counter that totals edges detected on all 3 CAP inputs
	SPLK	#-10, 	revolutions             ;While <=0 hall map is created.  Once it's >0, the hall map is used to 
											;obtain the correct commutation pointer.
		
   			; 初始化事件管理器       
	;--------------------------

	;設(shè)置 GPT2
		POINT_EV				
	;設(shè)置 CAPCON
		SPLK	#0, CAPCON
		SPLK	#0, CAPCON					;清 CAP 寄存器
		SPLK	#1011000011111100b, CAPCON
				;5432109876543210         
				; 15:	1	- 不清除捕獲寄存器
				; 13:	01	- 使能 Capture 1,2 禁止 QEP
				; 12:	1 	- 使能 Capture 3
				; 11:	0 	- 保留位
				; 10:	0 	- 用通用定時(shí)器 2 作為 CAP3 定時(shí)器
				; 9:	0 	- 用通用定時(shí)器 2 作為 CAP1,2 定時(shí)器
				; 8:	0 	- CAP3 轉(zhuǎn)換不啟動(dòng)ADC
				; 6:	11 	- CAP1, 雙沿檢測(cè)
				; 4:	11 	- CAP2, 雙沿檢測(cè)
				; 2:	11 	- CAP3, 雙沿檢測(cè)
				; 0:	00 	- 保留位 
		SPLK	#1500h, CAPFIFO
 
	.if (x240)	;目標(biāo)板選擇
	;設(shè)置 CAP1-3 為捕獲輸入
		LDP		#OCRB>>7			
		LACC	OCRB
		OR	#0000000001110000b
			;||||!!!!||||!!!!
			;5432109876543210
		SACL	OCRB 				;OCRB.4-6 = CAP1-3
		
	;設(shè)置 CAP1-3 作為 GPIO-輸入 (IOPC4-6)
		LACC	PCDATDIR			
		AND	#1000111111111111b		
			;||||!!!!||||!!!!
			;5432109876543210
		SACL	PCDATDIR			;PCDATDIR.12-14 (IOPC4-6 數(shù)據(jù)方向?yàn)檩斎?
	.endif

	.if (x243|x2407)	;目標(biāo)板選擇

	;設(shè)置 CAP1-3 為捕獲輸入 
		LDP		#OCRA>>7			
		LACC	OCRA
		OR	#0000000000111000b
			;||||!!!!||||!!!!
			;5432109876543210
		SACL	OCRA 				;OCRA.3-5 = CAP1-3
		
	;設(shè)置 CAP1-3 為 GPIO-輸入 (IOPA3-5)
		LACC	PADATDIR			
		AND	#1100011111111111b
			;||||!!!!||||!!!!
			;5432109876543210
		SACL	PADATDIR			;PADATDIR.11-13 (IOPC3-5 Data Direction as input)
	.endif                                                                                                                                    		
				
		RET
 		

;****  HALL3_DRV  ****

HALL3_DRV:	
		LDP		#EVIFRC>>7          
		LACC	EVIFRC
		BCND	EDGE_DETECTED,NEQ	;判斷是否檢測(cè)到霍爾跳變信號(hào)
		
NO_EDGE_DETECTED:
		LDP		#hall_vars         	                         
		SPLK	#0, cmtn_trig_hall	;Reset trigger, it only handshakes with calling program.			                             
		LACC	edge_debounced    	;If motor has not moved then debounce current position. 
		CC		HALL_DEBOUNCE, EQ
		BLDD	#edge_debounced,cmtn_trig_hall	;If current position is debounced, then trigger
		 										;move to next position.
		LACC	edge_debounced
		CC		Next_State_Ptr, NEQ	;If current position is debounced, find match in table 
									;and return pointer to current state.  Ptr to be incremented
									;by MOD6CNT after RET.		 										
		SPLK	#0, edge_debounced	;Reset trigger	 										
		B		HALL_RET

EDGE_DETECTED:
		LDP		#hall_vars         
		SACL	evifrc             	;Save capture flag register, convenient for Watch Window
		SPLK	#0FFFFh, stall_cntr ;On new edge, reset stall counter
		LDP		#EVIFRC>>7
		SPLK	#07h, EVIFRC		;Clear all CAP Int-flags 					
		CALL	Determine_State     ;Since motor has moved, determine state (read hall_GPIO).				
		LDP 	#hall_vars
		LACC	cap_cntr			;Increment running edge detection counter
		ADD		#1          
		SACL	cap_cntr    	

HALL_RET:                 
        RET



;**** HALL_DEBOUNCE  ****       

HALL_DEBOUNCE:
		LDP		#hall_vars                                   
		LACC	hall_GPIO        	;Current GPIO reading == debounced GPIO reading?
		SUB		hall_GPIO_accepted  ;If no, then the motor has moved to a new position.
		BCND	GPIO_CHANGED, NEQ 
		
GPIO_UNCHANGED:		
		LACC	revolutions,16      ;Only create hall map during initial revolutions
		CC		CREATE_MAP, LEQ				
		LACC	stall_cntr          ;Decrement stall counter.
		SUB		#1
		SACL	stall_cntr
		BCND	END, NEQ		
		SPLK	#1, edge_debounced	;If motor has stalled, then user trigger to commutate
		SPLK	#0FFFFh, stall_cntr ;Reset counter to starting value			 		
		B		END
				
GPIO_CHANGED:
		LACC	hall_GPIO     		;Current GPIO reading == previous GPIO reading? 		
		SUB		hall_GPIO_buf
		BCND	NEW_READING, NEQ 		
		LACC	debounce_CNT,16		;If equal, is current GPIO reading debounced?
		SUB		debounce_amount,16
		BCND	DEBOUNCE_MORE, LT   
		BLDD	#hall_GPIO_buf, hall_GPIO_accepted	;Current GPIO reading is now debounced
		SPLK	#1, edge_debounced	;Edge/position debounced, trigger commutation
		SPLK	#0, debounce_CNT    ;Reset debounce counter
		LACC	hall_map_ptr    	
		BCND	END, NEQ		
		LACC	revolutions			;Increment on every rev (hall_map_ptr = 0)
		ADD		#1
		SACL	revolutions 		
		B		END
		 		
DEBOUNCE_MORE:
		LACC	debounce_CNT		;Increment debounce counter
		ADD		#1
		SACL	debounce_CNT
		B		END  
		
NEW_READING:
		BLDD	#hall_GPIO, hall_GPIO_buf 	;Save new reading and reset debounce counter
		SPLK	#0, debounce_CNT
		B		END
		
END:	RET			
       
       
;****  CREATE_MAP  ****
  
CREATE_MAP:
		LDP		#hall_vars
		LACC	hall_map_ptr	
		ADD		#hall_map1      ;Add base address of table to pointer offset.    	
		SACL	hall_GPR0
		LAR		AR2, hall_GPR0
		MAR		*, AR2
		BLDD	#hall_GPIO_accepted, *	;Save debounced GPIO to table.
		
		RET  
       
       
;****  Next_State_Ptr  ****

Next_State_Ptr:      
        LACC	revolutions,16	;Only run function after map has been created.
        RETC	LEQ		
		LAR		AR3, #5   	
		LAR		AR2, #hall_map1
		MAR		*, AR2
Next_State:		             	;Search for a match of current debounced GPIO position
		LACC	*+, AR3         ;and the table entries.
		SUB		hall_GPIO_accepted
		BCND	Match_Found, EQ
		BANZ    Next_State, AR2
		
Match_Found:
		LACC	#5            	;On match, save pointer position.  Pointer will be incremented	
		SAR		AR3, hall_GPR0  ;by 1 since MOD6CNT will receive a positive trigger
		SUB		hall_GPR0       ;and pointer as inputs.
		SACL	hall_map_ptr	
							
		RET



;**** Function:  Determine_State  ****       

Determine_State: 
 
	.if (x240)	;target dependancy

	;Configure CAP1-3 as GPIO-inputs (IOPC4-6)
		LDP		#OCRB>>7			
		LACC	OCRB
		AND		#1111111110001111b 		
				;5432109876543210
		SACL	OCRB					;OCRB.4-6 = IOPC4-6
                                                                                          
	;Read input levels on CAP1-3/IOPC4-6
		LACC	PCDATDIR,11				;ACC.15-17 = PCDATDIR.4-6 (IOPC4-6)
		AND		#0000000000000111b,15 
				;5432109876543210
		LDP		#hall_vars                                   
		SACH	hall_GPIO,1  			;hall_GPIO.0-2 = IOPC4-6  
                                                                                          
	;Configure CAP1-3 as CAPTURE inputs 
		LDP		#OCRB>>7			
		LACC	OCRB
		OR		#0000000001110000b		
				;5432109876543210
		SACL	OCRB
	.endif								;OCRB.4-6 = CAP1-3



	.if (x243|x2407)	;target dependancy


	;Configure CAP1-3 as GPIO-inputs (IOPA3-5)
		LDP		#OCRA>>7			
		LACC	OCRA
		AND		#1111111111000111b		
				;5432109876543210
		SACL	OCRA					;OCRA.3-5 = IOPA3-5
                                                                                          
	;Read input levels on CAP1-3 (IOPA3-5)
		LACC	PADATDIR,12				;ACC.15-17 = PADATDIR.3-5 (IOPA3-5)
		AND		#0000000000000111b,15 
				;5432109876543210
		LDP		#hall_vars                                   
		SACH	hall_GPIO,1  			;hall_GPIO.0-2 = IOPA3-5   
                                                                                          
	;Configure CAP1-3 as CAPTURE inputs 
		LDP		#OCRA>>7			
		LACC	OCRA
		OR		#0000000000111000b		
				;5432109876543210
		SACL	OCRA					;OCRA.3-5 = CAP1-3
	.endif

		RET           

	

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区精品| 国产精品91xxx| 久久久久久久久久久99999| 成人禁用看黄a在线| 久久超碰97人人做人人爱| 亚洲国产精品自拍| 久久综合久久综合久久| 欧美中文字幕一区二区三区| 大陆成人av片| 蜜桃在线一区二区三区| 一区二区激情视频| 欧美激情资源网| 精品久久久久久久人人人人传媒 | 天天色综合天天| 国产精品免费久久久久| 亚洲精品一区二区三区蜜桃下载| 欧美日韩视频专区在线播放| 成人性视频免费网站| 韩国一区二区在线观看| 蜜桃在线一区二区三区| 视频一区视频二区中文字幕| 亚洲欧洲中文日韩久久av乱码| 久久精品男人的天堂| 一本色道亚洲精品aⅴ| 日本怡春院一区二区| 椎名由奈av一区二区三区| 国产欧美精品一区aⅴ影院| 欧美变态tickle挠乳网站| 在线综合视频播放| 欧美剧情片在线观看| 在线观看91视频| 在线看一区二区| 一本到高清视频免费精品| 99精品黄色片免费大全| 成人精品视频一区| 高清成人在线观看| 成人黄色小视频| 成人av在线播放网站| 丁香亚洲综合激情啪啪综合| 国产福利精品一区二区| 国产福利91精品一区| 国产成人免费在线观看不卡| 国产精品影视网| 成人晚上爱看视频| 2014亚洲片线观看视频免费| 午夜精品福利一区二区三区蜜桃| √…a在线天堂一区| 亚洲欧洲精品天堂一级| 亚洲欧美日本韩国| 亚洲一区二区三区四区在线免费观看| 曰韩精品一区二区| 亚洲成人免费视| 日本三级亚洲精品| 九色|91porny| 高清在线不卡av| 91在线高清观看| 欧美日韩亚洲综合一区| 欧美一级欧美一级在线播放| 日韩一区二区三区免费看| 久久综合丝袜日本网| 国产欧美精品一区二区色综合| 日韩激情一二三区| 久久av中文字幕片| 丰满亚洲少妇av| 91国产免费观看| 欧美一级淫片007| 久久久不卡网国产精品二区 | 欧洲亚洲精品在线| 337p亚洲精品色噜噜| 亚洲欧美日韩系列| 一区二区三区国产豹纹内裤在线| 亚洲一区二区av在线| 美日韩一区二区| 国产成都精品91一区二区三| 色综合久久久久久久| 日韩欧美中文字幕一区| 国产亚洲1区2区3区| 亚洲综合丁香婷婷六月香| 日本美女一区二区三区视频| 国产.欧美.日韩| 欧美日韩视频专区在线播放| 久久综合久久鬼色| 欧美日韩在线播放| 欧美丰满美乳xxx高潮www| 日韩一二三区视频| 中文字幕一区二区不卡| 蜜臀av在线播放一区二区三区| 大白屁股一区二区视频| 3d动漫精品啪啪| 一色桃子久久精品亚洲| 久久精工是国产品牌吗| 色丁香久综合在线久综合在线观看| 色综合 综合色| 日韩欧美区一区二| 亚洲国产高清不卡| 首页综合国产亚洲丝袜| 国产超碰在线一区| 3atv一区二区三区| 亚洲人成伊人成综合网小说| 国内精品伊人久久久久av一坑| 色综合欧美在线视频区| 久久久久久久久久久久电影 | 国内精品自线一区二区三区视频| 99久久99久久综合| 精品99一区二区三区| 亚洲一区二区av在线| 99免费精品在线| 久久青草欧美一区二区三区| 日韩电影免费在线看| 在线视频中文字幕一区二区| 国产精品三级视频| 国产一区二区三区不卡在线观看| 欧美精品丝袜中出| 亚洲女人****多毛耸耸8| 粉嫩av一区二区三区在线播放| 精品一区二区免费| 国产精品主播直播| 欧美一级日韩不卡播放免费| 一区二区三区在线视频观看| 成人国产电影网| 久久综合九色综合97婷婷| 蜜臀av在线播放一区二区三区| 在线免费av一区| 亚洲欧美日韩人成在线播放| 成人黄色av电影| 国产日产亚洲精品系列| 国产一区啦啦啦在线观看| 欧美xxxxxxxxx| 国内外成人在线| 2022国产精品视频| 国产精品综合一区二区| 久久婷婷色综合| 国产在线不卡一区| 久久丝袜美腿综合| 国产一区久久久| 国产色91在线| 成人美女视频在线观看| 中文字幕成人在线观看| www.久久精品| 玉米视频成人免费看| 欧美特级限制片免费在线观看| 亚洲一区二区在线免费观看视频| 在线综合亚洲欧美在线视频| 粉嫩一区二区三区在线看| 日韩欧美一二三四区| 美国三级日本三级久久99| 欧美va亚洲va| 国产在线精品国自产拍免费| 国产欧美一区二区精品性| 成人精品高清在线| 国产一区二区在线看| 久久久亚洲综合| av不卡免费在线观看| 亚洲男人的天堂一区二区| 欧美综合一区二区| 日日夜夜免费精品| ww久久中文字幕| 成人激情av网| 亚洲成人激情av| 精品国产亚洲在线| 成人性生交大片免费看中文网站| 亚洲三级电影网站| 91精品国产欧美日韩| 国产在线播精品第三| 中文字幕在线不卡一区| 欧美私模裸体表演在线观看| 蜜臀久久99精品久久久久久9| 久久久久97国产精华液好用吗| 成年人网站91| 日韩二区三区四区| 国产日韩欧美激情| 欧美伊人精品成人久久综合97| 欧美日韩一区二区在线观看| 欧美激情自拍偷拍| 在线免费观看日韩欧美| 蜜臀91精品一区二区三区| 亚洲国产高清aⅴ视频| 色诱亚洲精品久久久久久| 日韩av一区二区在线影视| 国产性做久久久久久| 欧美日韩一区二区三区高清| 激情亚洲综合在线| 一区二区三区四区不卡在线 | 国产精品一二三在| 一区二区三区精品视频在线| 欧美一级一区二区| 色噜噜狠狠成人中文综合| 激情综合网激情| 亚洲国产精品一区二区久久 | eeuss鲁片一区二区三区| 日日欢夜夜爽一区| 国产精品国产精品国产专区不片| 欧美一卡二卡三卡四卡| 99re6这里只有精品视频在线观看| 日韩中文字幕亚洲一区二区va在线 | 成人爱爱电影网址| 综合久久久久综合| 日韩欧美一二三四区| 色噜噜狠狠色综合欧洲selulu| 狠狠色丁香婷婷综合久久片|