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

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

?? hall3drv1.asm

?? 這個是關于實現三相異步電動機的PWM控制源代碼
?? ASM
字號:
;============================================================================
; 文件名:	Hall3drv.asm
;
; 模塊名: 	HALL3_DRV				      
;
; 初始化程序名: HALL3_DRV_INIT
;
; 公司:	達盛科技
;
; 功能描述:	控制逆變器的開關狀態,驅動直流無刷電動機。 	
;
;						|~~~~~~~~~~~~~~~|
;   					|				| 
;	hall_map_ptro------>|  HALL3_DRV	|----->o  cmtn_trig_hall
;						|				|
;						|_______________|
;
;=====================================================================================
; 修改記錄:
;-------------------------------------------------------------------------------------
; 2005.08.20	版本:Ver 1.0
;===========================================================================
;(要調用模塊,就將下面聲明語句復制到主程序代碼中相應位置)
;		.ref	HALL3_DRV, HALL3_DRV_INIT			;子程序調用
;		.ref	cmtn_trig_hall, hall_map_ptr		;輸入輸出
;===========================================================================
;外部變量聲明.
		.def	HALL3_DRV, HALL3_DRV_INIT			;子程序調用
		.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   	;輸出信號作為模6計數器的觸發信號輸入
cap_cntr			.set	hall_vars+2     ;CAP1,2,3 引腳上檢測到的跳變                                                
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 捕獲標志, 表明 CAP 引腳上檢測到跳變
stall_cntr		    .set	hall_vars+16    ;如果電機停轉, 該計數器溢出,觸發轉換以啟動電機,霍爾信號的跳變表明電機啟動 
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    ;運行計數器, 6個霍爾狀態的一個循環定義為一轉
 
          
		.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.
		
   			; 初始化事件管理器       
	;--------------------------

	;設置 GPT2
		POINT_EV				
	;設置 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 	- 用通用定時器 2 作為 CAP3 定時器
				; 9:	0 	- 用通用定時器 2 作為 CAP1,2 定時器
				; 8:	0 	- CAP3 轉換不啟動ADC
				; 6:	11 	- CAP1, 雙沿檢測
				; 4:	11 	- CAP2, 雙沿檢測
				; 2:	11 	- CAP3, 雙沿檢測
				; 0:	00 	- 保留位 
		SPLK	#1500h, CAPFIFO
 
	.if (x240)	;目標板選擇
	;設置 CAP1-3 為捕獲輸入
		LDP		#OCRB>>7			
		LACC	OCRB
		OR	#0000000001110000b
			;||||!!!!||||!!!!
			;5432109876543210
		SACL	OCRB 				;OCRB.4-6 = CAP1-3
		
	;設置 CAP1-3 作為 GPIO-輸入 (IOPC4-6)
		LACC	PCDATDIR			
		AND	#1000111111111111b		
			;||||!!!!||||!!!!
			;5432109876543210
		SACL	PCDATDIR			;PCDATDIR.12-14 (IOPC4-6 數據方向為輸入)
	.endif

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

	;設置 CAP1-3 為捕獲輸入 
		LDP		#OCRA>>7			
		LACC	OCRA
		OR	#0000000000111000b
			;||||!!!!||||!!!!
			;5432109876543210
		SACL	OCRA 				;OCRA.3-5 = CAP1-3
		
	;設置 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	;判斷是否檢測到霍爾跳變信號
		
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           

	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩久久不卡| 久久久久国产精品免费免费搜索| 日韩午夜小视频| 欧美高清在线精品一区| 亚洲高清免费观看| 岛国一区二区三区| 日韩视频一区二区三区| 亚洲综合自拍偷拍| 99视频一区二区| 欧美精品一区二区不卡 | 欧美成人官网二区| 亚洲综合视频在线| 99国产精品久久久久久久久久久| 欧美一区在线视频| 亚洲国产一区二区在线播放| 成人黄色av网站在线| 久久久久久亚洲综合影院红桃 | 久久色.com| 六月婷婷色综合| 日韩一卡二卡三卡四卡| 亚洲国产视频在线| 色噜噜狠狠一区二区三区果冻| 中文字幕av不卡| 国产一区二区视频在线播放| 日韩久久精品一区| 老司机一区二区| 日韩欧美国产成人一区二区| 日本成人中文字幕在线视频 | 日韩欧美色电影| 午夜精品福利一区二区三区av | 国产成人免费视频精品含羞草妖精| 日韩午夜av一区| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美情侣在线播放| 五月婷婷综合在线| 日韩精品一区在线观看| 国产一区中文字幕| 欧美—级在线免费片| 成人a级免费电影| 亚洲欧美另类综合偷拍| 色婷婷综合视频在线观看| 亚洲精品日韩综合观看成人91| 91美女视频网站| 亚洲免费资源在线播放| 欧美在线看片a免费观看| 婷婷国产在线综合| 欧美变态凌虐bdsm| 成人av网站在线| 亚洲精品欧美在线| 欧美一区在线视频| 岛国一区二区在线观看| 一区二区三区在线观看国产| 欧美日韩高清一区二区不卡| 久久99精品久久久久久久久久久久 | 欧美探花视频资源| 五月天久久比比资源色| 精品久久久久久久久久久院品网 | 亚洲国产毛片aaaaa无费看 | 精品国产乱码久久久久久免费 | 91小宝寻花一区二区三区| 亚洲综合色视频| 欧美一二三四区在线| 国产a精品视频| 一级精品视频在线观看宜春院 | 精品视频在线免费| 国内不卡的二区三区中文字幕| 欧美韩日一区二区三区| 欧美性大战久久| 精品一区免费av| 亚洲色图欧洲色图| 日韩欧美国产麻豆| 91社区在线播放| 经典三级在线一区| 一区二区成人在线| 久久精品一区四区| 欧美日韩国产一区二区三区地区| 国产精一区二区三区| 亚洲国产日韩一区二区| 国产亲近乱来精品视频| 欧美一区二区网站| 99国产精品国产精品久久| 极品尤物av久久免费看| 一区二区三区免费网站| 国产欧美视频一区二区三区| 欧美一区二区三区啪啪| 91在线观看高清| 国产一区二区h| 秋霞影院一区二区| 一区二区成人在线| 自拍偷拍国产亚洲| 欧美国产一区在线| 精品国产三级电影在线观看| 欧美日韩国产精品自在自线| 91香蕉视频在线| 成人福利电影精品一区二区在线观看| 日本少妇一区二区| 午夜视频久久久久久| 亚洲欧美视频在线观看| 国产精品久久久久久久久动漫 | 久久精品99国产精品| 亚洲h精品动漫在线观看| 亚洲日本在线视频观看| 国产精品短视频| 日本一二三不卡| 国产视频一区在线播放| 久久一区二区三区国产精品| 日韩色视频在线观看| 日韩一级片网址| 日韩欧美国产综合在线一区二区三区| 欧美日韩精品是欧美日韩精品| 91高清视频免费看| 欧美在线综合视频| 欧美在线免费观看视频| 精品视频在线免费观看| 欧美日韩国产成人在线免费| 在线播放日韩导航| 91精品国产综合久久蜜臀| 欧美精品成人一区二区三区四区| 欧美日韩色一区| 欧美一区日韩一区| 欧美v国产在线一区二区三区| 欧美变态tickling挠脚心| 久久免费视频色| 国产精品青草综合久久久久99| 国产午夜精品理论片a级大结局| 久久精品这里都是精品| 国产精品久久久一本精品| 亚洲欧美在线观看| 亚洲一二三区不卡| 免费看欧美美女黄的网站| 久久电影网电视剧免费观看| 国产一区二区电影| 91亚洲大成网污www| 欧美日韩国产bt| 久久久高清一区二区三区| 国产精品三级视频| 亚洲一区影音先锋| 免费av网站大全久久| 国产精品一区在线观看你懂的| 丁香亚洲综合激情啪啪综合| 色综合久久中文字幕| 欧美精选午夜久久久乱码6080| 精品久久久三级丝袜| 一区免费观看视频| 日韩激情av在线| 国产成人精品亚洲日本在线桃色| 97精品久久久久中文字幕| 69堂亚洲精品首页| 国产情人综合久久777777| 亚洲国产综合在线| 国产九色sp调教91| 欧美日韩aaaaa| 欧美激情在线一区二区三区| 亚洲一区二区欧美激情| 国产麻豆精品theporn| 日本韩国欧美三级| 久久婷婷色综合| 亚洲国产综合在线| 粉嫩13p一区二区三区| 88在线观看91蜜桃国自产| 欧美国产在线观看| 喷水一区二区三区| 色综合久久久久久久久久久| 欧美电视剧免费全集观看 | 国产拍欧美日韩视频二区| 亚洲亚洲精品在线观看| 国产69精品一区二区亚洲孕妇| 欧美老肥妇做.爰bbww| 中文字幕一区在线观看视频| 国产一区二区伦理| 欧美二区三区的天堂| 亚洲视频在线一区二区| 国产精品一二三四区| 91精品国产色综合久久不卡电影 | 日韩欧美一二区| 亚洲午夜三级在线| 99精品国产99久久久久久白柏| 久久综合久久综合久久| 视频在线观看国产精品| 色综合网色综合| 中文字幕一区二区视频| 国产乱子伦一区二区三区国色天香| 欧美日韩一区二区不卡| 一区二区三区四区不卡视频| aaa欧美色吧激情视频| 国产三级久久久| 国产在线精品一区在线观看麻豆| 欧美一区二区三区日韩视频| 日韩**一区毛片| 欧美高清性hdvideosex| 五月激情综合色| 欧美精品18+| 日韩在线观看一区二区| 欧美丰满美乳xxx高潮www| 亚洲成人午夜电影| 欧美视频一区在线观看| 亚洲国产精品久久久久秋霞影院| 91久久一区二区| 亚洲一二三四区不卡| 欧美性色黄大片|