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

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

?? dcmotor.asm

?? 凌陽單片機之電機控制模組
?? ASM
字號:
//======================================================
//  The information contained herein is the exclusive property of
//  Sunnnorth Technology Co. And shall not be distributed, reproduced,
//  or disclosed in whole in part without prior written permission.
//             (C) COPYRIGHT 2003  SUNNORTH TECHNOLOGY CO.
//                          ALL RIGHTS RESERVED
//  The entire notice above must be reproduced on all authorized copies.
//========================================================

//============================================================
// 文件名稱:DCMotor.asm
// 實現功能:SPGT62C19B的直流電機驅動程序,使用IRQ4_4KHz中斷
// 日期:    2005/7/18
//============================================================

//================================================
//	SPGT62C19B控制端口設定
//================================================

/////-----       若使用IOA則使用下面的定義	    -----/////
//.define P_Motor_Data	0x7000
//.define P_Motor_Buf		0x7001
//.define P_Motor_Dir		0x7002
//.define P_Motor_Attr	0x7003

/////-----       若使用IOB則使用下面的定義	    -----/////
.define P_Motor_Data	0x7005
.define P_Motor_Buf		0x7006
.define P_Motor_Dir		0x7007
.define P_Motor_Attr	0x7008

//================================================
//	SPGT62C19B控制引腳設定
//================================================

//			bit:	FEDCBA9876543210
.define PIN_I01		0000000000001000b		//IO PIN 3
.define PIN_I11		0000000000100000b		//IO PIN 5
.define PIN_PH1		0000000000000001b		//IO PIN 0
.define PIN_I02		0000000000010000b		//IO PIN 4
.define PIN_I12		0000000001000000b		//IO PIN 6
.define PIN_PH2		0000000000000010b		//IO PIN 1
.define PIN_SPD		0000000000000100b		//IO PIN 2
.define PIN_MOTOR	PIN_I01+PIN_I11+PIN_PH1+PIN_I02+PIN_I12+PIN_PH2

//================================================
//	速度檢測去抖動時間設定,單位為1/4096秒
//================================================

.define MOTOR_DEBOUNCE	10

//================================================
//	中斷常量定義
//================================================

.define P_INT_Mask		0x702d
.define C_IRQ4_4KHz		0x0040

//================================================
//	變量定義
//================================================

.iram
/////-----       電機驅動狀態變量	    -----/////
.var Motor_Status = 0x00ff	// b15: Enable Motor2
							// b14: Enable Motor1
							// b13: Motor2 Direction. 0-Fwd, 1-Bwd
							// b12: Motor1 Direction
							// b11\
							//  |   Motor2 Speed Level(0~63)
							// b06/
							// b05\
							//  |   Motor1 Speed Level(0~63)
							// b00/
.var Motor_PWM_Cnt = 0x0000	// IO模擬PWM寬度計數,b11~b6:Motor2; b5~b0:Motor1

/////-----       電機速度檢測相關變量	    -----/////
.var Motor_Timer_Cnt = 0	// 定時器計數值
.var Motor_Pulse_Cnt = 0	// 速度檢測脈沖計數值
.var Motor_Pulse_Deb = 0	// 速度檢測脈沖去抖動計數
.var Motor_Speed = 0x00		// 電機速度

//================================================
//	公有函數聲明
//================================================
.public _DCMotor_Init
.public F_DCMotor_Init
.public _DCMotor_SetSpeed
.public F_DCMotor_SetSpeed
.public _DCMotor_Forward
.public F_DCMotor_Forward
.public _DCMotor_Backward
.public F_DCMotor_Backward
.public _DCMotor_Drive
.public F_DCMotor_Drive
.public _DCMotor_Stop
.public F_DCMotor_Stop
.public _DCMotor_GetSpeed
.public F_DCMotor_GetSpeed

.code
//======================================================
// 函數名稱:	DCMotor_Init
// C調用:		void DCMotor_Init(void)
// 匯編調用:	F_DCMotor_Init
// 實現功能:   直流電機驅動初始化
// 入口參數:	無
// 出口參數:	無
// 破壞寄存器:	無
//======================================================
_DCMotor_Init:
F_DCMotor_Init:
	push r1 to [sp]

	r1 = [P_Motor_Attr]						// 初始化IO
	r1 |= PIN_MOTOR
	r1 &= ~PIN_SPD
	[P_Motor_Attr] = r1
	r1 = [P_Motor_Dir]
	r1 |= PIN_MOTOR
	r1 &= ~PIN_SPD
	[P_Motor_Dir] = r1
	r1 = [P_Motor_Buf]
	r1 |= PIN_MOTOR
	r1 &= ~PIN_SPD
	[P_Motor_Data] = r1

	r1 = 0x0000
	[Motor_Status] = r1
	[Motor_PWM_Cnt] = r1
	[Motor_Speed] = r1
	[Motor_Pulse_Cnt] = r1
	[Motor_Pulse_Deb] = r1
	[Motor_Timer_Cnt] = r1

	r1 = [P_INT_Mask]
	r1 |= C_IRQ4_4KHz
	[P_INT_Mask] = r1
	IRQ ON

	pop r1 from [sp]
retf

//======================================================
// 函數名稱:	DCMotor_SetSpeed
// C調用:		void DCMotor_SetSpeed(unsigned Motor,unsigned Speed)
// 匯編調用:	F_DCMotor_SetSpeed
// 實現功能:   設定電機轉速等級
// 入口參數:	Motor(R1) - 選擇對哪個直流電機接口進行轉速等級設定:
//					MOTOR_1		直流電機接口1
//					MOTOR_2		直流電機接口1
//				Speed(R2) - PWM占空比,范圍0-63,單位1/64
// 出口參數:	無
// 破壞寄存器:	無
//======================================================
_DCMotor_SetSpeed:
	push r1,r2 to [sp]
	r1 = sp + 6
	r2 = [r1--]
	r1 = [r1]
	call F_DCMotor_SetSpeed
	pop r1,r2 from [sp]
retf

F_DCMotor_SetSpeed:
	push r3 to [sp]
	r2 &= 0x003f
	r3 = [Motor_Status]
	cmp r1,1
	je ?Motor1
	cmp r1,2
	je ?Motor2
	cmp r1,3
	jne ?Exit
?Motor1:
	r3 &= ~0x003f
	r3 |= r2
	cmp r1,3
	jne ?Motor_SaveStatus
?Motor2:
	r2 = r2 LSL 4
	r2 = r2 LSL 2
	r3 &= ~0x0FC0
	r3 |= r2
?Motor_SaveStatus:
	[Motor_Status] = r3
	r3 = 0
	[Motor_PWM_Cnt] = r3
?Exit:	
	pop r3 from [sp]
retf

//======================================================
// 函數名稱:	DCMotor_Forward
// C調用:		void DCMotor_Forward(unsigned Motor)
// 匯編調用:	F_DCMotor_Forward
// 實現功能:   使電機正向轉動
// 入口參數:	Motor(R1) - 設定正向轉動的電機:
//					MOTOR_1		電機1
//					MOTOR_2		電機2
// 出口參數:	無
// 破壞寄存器:	無
//======================================================
_DCMotor_Forward:
	push r1 to [sp]
	r1 = sp + 4
	r1 = [r1]
	call F_DCMotor_Forward
	pop r1 from [sp]
retf

F_DCMotor_Forward:
	push r2,r3 to [sp]
	r2 = [Motor_Status]
	cmp r1,1
	je ?Motor1
	cmp r1,2
	je ?Motor2
	cmp r1,3
	jne ?Exit
?Motor1:
	r3 = [P_Motor_Buf]
	r3 &= ~PIN_PH1
	[P_Motor_Data] = r3
	r2 &= ~0x1000
	r2 |= 0x4000
	cmp r1,3
	jne ?Motor_SaveStatus
?Motor2:
	r3 = [P_Motor_Buf]
	r3 &= ~PIN_PH2
	[P_Motor_Data] = r3
	r2 &= ~0x2000
	r2 |= 0x8000
?Motor_SaveStatus:
	[Motor_Status] = r2
	r2 = 0
	[Motor_PWM_Cnt] = r2
?Exit:	
	pop r2,r3 from [sp]
retf

//======================================================
// 函數名稱:	DCMotor_Backward
// C調用:		void DCMotor_Backward(unsigned Motor)
// 匯編調用:	F_DCMotor_Backward
// 實現功能:   使電機反向轉動
// 入口參數:	Motor(R1) - 設定反向轉動的電機:
//					MOTOR_1		電機1
//					MOTOR_2		電機2
// 出口參數:	無
// 破壞寄存器:	無
//======================================================
_DCMotor_Backward:
	push r1 to [sp]
	r1 = sp + 4
	r1 = [r1]
	call F_DCMotor_Backward
	pop r1 from [sp]
retf

F_DCMotor_Backward:
	push r2,r3 to [sp]
	r2 = [Motor_Status]
	cmp r1,1
	je ?Motor1
	cmp r1,2
	je ?Motor2
	cmp r1,3
	jne ?Exit
?Motor1:
	r3 = [P_Motor_Buf]
	r3 |= PIN_PH1
	[P_Motor_Data] = r3
	r2 |= 0x5000
	cmp r1,3
	jne ?Motor_SaveStatus
?Motor2:
	r3 = [P_Motor_Buf]
	r3 |= PIN_PH2
	[P_Motor_Data] = r3
	r2 |= 0xA000
?Motor_SaveStatus:
	[Motor_Status] = r2
	r2 = 0
	[Motor_PWM_Cnt] = r2
?Exit:	
	pop r2,r3 from [sp]
retf

//======================================================
// 函數名稱:	DCMotor_Stop
// C調用:		void DCMotor_Stop(unsigned Motor)
// 匯編調用:	F_DCMotor_Stop
// 實現功能:   直流電機停止轉動
// 入口參數:	Motor(R1) - 需要停轉的電機
//					MOTOR_1		電機1
//					MOTOR_2		電機2
// 出口參數:	無
// 破壞寄存器:	無
//======================================================
_DCMotor_Stop:
	push r1 to [sp]
	r1 = sp + 4
	r1 = [r1]
	call F_DCMotor_Stop
	pop r1 from [sp]
retf

F_DCMotor_Stop:
	push r2 to [sp]
	cmp r1,1
	je	?Motor1
	cmp r1,2
	je	?Motor2
	cmp r1,3
	jne ?Exit
?Motor1:
	r2 = [P_Motor_Buf]
	r2 |= PIN_I01 + PIN_I02
	[P_Motor_Buf] = r2
	r2 = [Motor_Status]
	r2 &= ~0x4000
	[Motor_Status] = r2
	cmp r1,3
	jne ?ClearSpeed
?Motor2:
	r2 = [P_Motor_Buf]
	r2 |= PIN_I11 + PIN_I12
	[P_Motor_Buf] = r2
	r2 = [Motor_Status]
	r2 &= ~0x8000
	[Motor_Status] = r2
?ClearSpeed:
	r2 = 0
	[Motor_Speed] = r2
?Exit:
	pop r2 from [sp]
retf

//======================================================
// 函數名稱:	DCMotor_Drive
// C調用:		void DCMotor_Drive(void)
// 匯編調用:	F_DCMotor_Drive
// 實現功能:   產生PWM波形,在IRQ4_4KHz中斷服務程序中調用
// 入口參數:	無
// 出口參數:	無
// 破壞寄存器:	無
//======================================================
_DCMotor_Drive:
F_DCMotor_Drive:
	push r1,r5 to [sp]
	r1 = [Motor_Status]
	test r1,0xC000
	jnz	?Motor_ChkPulse
	goto ?Exit
?Motor_ChkPulse:							// 速度檢測
	r2 = [P_Motor_Data]
	r2 &= PIN_SPD
	jz	?Motor_Pulse
	r2 = 0
	[Motor_Pulse_Deb] = r2
	jmp ?Motor_GetSpeed
?Motor_Pulse:
	r2 = [Motor_Pulse_Deb]
	jnz	?Motor_Pulse_Old
	r3 = [Motor_Pulse_Cnt]
	r3 += 1
	[Motor_Pulse_Cnt] = r3
?Motor_Pulse_Old:
	r2 += 1
	[Motor_Pulse_Deb] = r2
?Motor_GetSpeed:
	r4 = [Motor_Timer_Cnt]
	r4 += 1
	cmp r4, 2048
	jb ?Motor_Drive
	r5 = [Motor_Pulse_Cnt]
	r5 = r5 LSR 1
	[Motor_Speed] = r5
	r5 = 0
	[Motor_Pulse_Cnt] = r5
	r4 = 0
?Motor_Drive:								// PWM發生
	[Motor_Timer_Cnt] = r4
	r4 = [Motor_PWM_Cnt]
	r5 = [P_Motor_Buf]
?Motor1:
	r2 = r1&0x003f
	r3 = r4&0x003f
	cmp r3,r2
	jae ?Motor1_PWM_Low
?Motor1_PWM_High:
	r5 &= ~(PIN_I11+PIN_I01)
	jmp ?Motor1_PWM_Next
?Motor1_PWM_Low:
	r5 |= (PIN_I11+PIN_I01)
?Motor1_PWM_Next:
	r3 += 1
	r3 &= 0x003f
	r4 &= ~0x003f
	r4 |= r3
?Motor2:
	r2 = r1 & 0x0fc0
	r3 = r4 & 0x0fc0
	cmp r3,r2
	jae ?Motor2_PWM_Low
?Motor2_PWM_High:
	r5 &= ~(PIN_I12+PIN_I02)
	jmp ?Motor2_PWM_Next
?Motor2_PWM_Low:
	r5 |= PIN_I12+PIN_I02
?Motor2_PWM_Next:
	r3 += 0x0040
	r3 &= 0x0fc0
	r4 &= ~0x0fc0
	r4 |= r3
?Motor_Update:
	[Motor_PWM_Cnt] = r4
	[P_Motor_Data] = r5
?Exit:
	pop r1,r5 from [sp]
retf

//======================================================
// 函數名稱:	DCMotor_GetSpeed
// C調用:		unsigned DCMotor_GetSpeed(void)
// 匯編調用:	F_DCMotor_GetSpeed
// 實現功能:   獲取電機轉速
// 入口參數:	無
// 出口參數:	r1 - 測得的電機轉速值,單位(轉/秒)
// 破壞寄存器:	無
//======================================================
_DCMotor_GetSpeed:
F_DCMotor_GetSpeed:
	r1 = [Motor_Speed]
retf

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡电影免费在线播放一区| 欧美韩国日本一区| 毛片av一区二区| 日韩色在线观看| 狠狠色丁香久久婷婷综合丁香| 日韩情涩欧美日韩视频| 国产在线精品一区二区| 国产日韩av一区| 不卡的av电影| 亚洲国产精品天堂| 日韩三级视频中文字幕| 国产精品资源在线看| 亚洲日本韩国一区| 制服丝袜av成人在线看| 狠狠狠色丁香婷婷综合久久五月| 久久精品人人做| 色94色欧美sute亚洲13| 日韩不卡免费视频| 久久精品日产第一区二区三区高清版 | 色乱码一区二区三区88| 亚洲国产综合视频在线观看| 欧美r级电影在线观看| 99久久精品99国产精品 | 欧美精品高清视频| 国产成人自拍网| 一级中文字幕一区二区| 欧美videos中文字幕| 91原创在线视频| 久久精品国产99| 一区二区三区四区激情| 久久久亚洲高清| 欧美日韩不卡一区| 大桥未久av一区二区三区中文| 亚洲国产sm捆绑调教视频| 久久奇米777| 欧美精品在线一区二区| 成人午夜精品在线| 蜜臀国产一区二区三区在线播放| 中文字幕在线播放不卡一区| 日韩视频123| 欧美无砖专区一中文字| 国产成人av网站| 蜜臀99久久精品久久久久久软件| 亚洲欧洲无码一区二区三区| 日韩精品一区二区三区在线播放| 91黄色激情网站| 波多野结衣精品在线| 国产一区二区日韩精品| 天堂蜜桃91精品| 亚洲精品伦理在线| 欧美国产日韩精品免费观看| 日韩天堂在线观看| 欧美电影一区二区三区| 色视频欧美一区二区三区| 国产成人丝袜美腿| 韩国三级中文字幕hd久久精品| 五月综合激情网| 一二三四社区欧美黄| 国产精品久99| 欧美经典三级视频一区二区三区| 精品av综合导航| 精品少妇一区二区三区| 欧美日韩国产一区二区三区地区| 色哟哟一区二区三区| 成人美女在线视频| 国产69精品一区二区亚洲孕妇| 激情丁香综合五月| 六月丁香婷婷色狠狠久久| 日韩在线观看一区二区| 香港成人在线视频| 午夜精品福利一区二区三区蜜桃| 亚洲高清免费视频| 亚洲午夜免费福利视频| 午夜私人影院久久久久| 亚洲成av人片在www色猫咪| 亚洲国产成人va在线观看天堂| 亚洲欧美国产三级| 伊人婷婷欧美激情| 亚洲影视在线观看| 亚洲成在线观看| 日韩电影在线免费观看| 蜜桃91丨九色丨蝌蚪91桃色| 久久国产麻豆精品| 国产伦精品一区二区三区视频青涩 | 日韩视频一区二区三区| 欧美一区二区不卡视频| 日韩欧美高清在线| 国产婷婷色一区二区三区在线| 中文av一区二区| 亚洲欧美电影一区二区| 亚洲一区二区不卡免费| 青青草91视频| 丰满亚洲少妇av| 一本一本久久a久久精品综合麻豆| 色婷婷一区二区三区四区| 欧美系列在线观看| 日韩一级片网站| 国产亚洲一区字幕| 亚洲青青青在线视频| 亚洲国产一二三| 美女免费视频一区二区| 成人午夜激情影院| 欧美在线观看视频一区二区三区| 欧美一区二区性放荡片| 久久久久久麻豆| 亚洲乱码国产乱码精品精小说| 亚洲地区一二三色| 国产精品一线二线三线精华| av福利精品导航| 欧美一三区三区四区免费在线看 | 国产精品国模大尺度视频| 亚洲综合在线免费观看| 蜜臀av性久久久久av蜜臀妖精| 粉嫩av一区二区三区粉嫩 | 欧美日韩国产一二三| 精品盗摄一区二区三区| 亚洲日本电影在线| 老司机午夜精品| 91小视频在线观看| 日韩欧美一级片| 亚洲摸摸操操av| 黑人精品欧美一区二区蜜桃| av亚洲精华国产精华精| 日韩午夜在线影院| 亚洲一区免费观看| 懂色av一区二区夜夜嗨| 欧美精品一二三| 中文字幕在线不卡一区二区三区| 久色婷婷小香蕉久久| 色老汉一区二区三区| 国产亚洲一二三区| 亚洲va国产天堂va久久en| 高清免费成人av| 日韩一区二区麻豆国产| 亚洲精品欧美在线| 高清不卡一区二区| 91精品国产一区二区| 夜夜精品视频一区二区| 成人丝袜视频网| 精品国产第一区二区三区观看体验 | 久久奇米777| 日产精品久久久久久久性色| 一本大道综合伊人精品热热 | 最新久久zyz资源站| 激情伊人五月天久久综合| 欧美色精品天天在线观看视频| 国产欧美日韩不卡免费| 久久电影网站中文字幕| 欧美一级片在线看| 日韩精品国产精品| 欧美日韩午夜影院| 亚洲一区二区中文在线| 在线观看视频91| 亚洲欧美视频在线观看| eeuss影院一区二区三区| 国产免费久久精品| 国产不卡视频一区二区三区| 久久女同互慰一区二区三区| 久久国产麻豆精品| 亚洲精品一区二区三区在线观看 | 国产精品白丝在线| 成人午夜在线视频| 国产欧美精品区一区二区三区| 国产另类ts人妖一区二区| 欧美mv日韩mv国产| 国产一区二区三区av电影| 26uuu色噜噜精品一区二区| 美女精品一区二区| 26uuu另类欧美亚洲曰本| 国模套图日韩精品一区二区| 精品久久一区二区三区| 狠狠色综合色综合网络| 精品国精品自拍自在线| 国内精品嫩模私拍在线| 国产性做久久久久久| 国产成人在线视频播放| 中文字幕电影一区| 99久久精品国产精品久久| 一区二区三区在线免费播放 | 久久99精品久久久久| 久久免费电影网| av一区二区三区四区| 亚洲成人久久影院| 欧美一区二区三区免费| 极品销魂美女一区二区三区| 国产人伦精品一区二区| 91欧美一区二区| 五月天精品一区二区三区| 欧美成人精品3d动漫h| 国产精品系列在线播放| 综合欧美亚洲日本| 欧美猛男超大videosgay| 美腿丝袜一区二区三区| 国产欧美1区2区3区| 91在线一区二区| 免费人成精品欧美精品| 日本一区二区三区电影| 在线欧美一区二区| 韩国av一区二区三区| 亚洲人成影院在线观看|