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

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

?? stepmotor.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.
//========================================================

//============================================================
// 文件名稱:StepMotor.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_MOTOR	PIN_I01+PIN_I11+PIN_PH1+PIN_I02+PIN_I12+PIN_PH2


//================================================
//	步進電機最高速度定義
//================================================
.define MOTOR_MAXSPEED	150					// 單位為拍/秒(P.P.S)

//================================================
//	電機工作模式定義
//================================================
.define STEP_FULL		0x0001				// 整步
.define STEP_HALF		0x0002				// 半步
.define STEP_MOHALF 	0x0003				// 優化半步

//================================================
//	中斷常量定義
//================================================
.define P_INT_Mask		0x702d
.define C_IRQ4_4KHz		0x0040

//================================================
//	公有函數聲明
//================================================
.public _StepMotor_Init
.public F_StepMotor_Init
.public _StepMotor_SetMode
.public F_StepMotor_SetMode
.public _StepMotor_SetSpeed
.public F_StepMotor_SetSpeed
.public _StepMotor_Forward
.public F_StepMotor_Forward
.public _StepMotor_Backward
.public F_StepMotor_Backward
.public _StepMotor_Stop
.public F_StepMotor_Stop
.public _StepMotor_Status
.public F_StepMotor_Status
.public _StepMotor_Drive
.public F_StepMotor_Drive

//================================================
//	三種工作方式的控制時序表
//================================================
.data
Tbl_SMotor_Full:							// 整步
	.dw	PIN_PH1+PIN_PH2
	.dw	PIN_PH2
	.dw 0x0000
	.dw	PIN_PH1
	.dw	PIN_PH1+PIN_PH2
	.dw	PIN_PH2
	.dw 0x0000
	.dw	PIN_PH1
Tbl_SMotor_Half:							// 半部
    .dw         PIN_I11+PIN_PH1+PIN_I02+PIN_I12+PIN_PH2
    .dw         PIN_I11+PIN_PH1+        PIN_I12+PIN_PH2
    .dw PIN_I01+PIN_I11+                PIN_I12+PIN_PH2
    .dw         PIN_I11+                PIN_I12+PIN_PH2
    .dw         PIN_I11+        PIN_I02+PIN_I12
    .dw         PIN_I11+                PIN_I12
    .dw PIN_I01+PIN_I11+PIN_PH1+        PIN_I12
    .dw         PIN_I11+PIN_PH1+        PIN_I12
Tbl_SMotor_MoHalf:							// 優化半部
    .dw                 PIN_PH1+PIN_I02+PIN_I12+PIN_PH2
    .dw PIN_I01+        PIN_PH1+PIN_I02+        PIN_PH2
    .dw PIN_I01+PIN_I11+                        PIN_PH2
    .dw PIN_I01+                PIN_I02+        PIN_PH2
    .dw                         PIN_I02+PIN_I12
    .dw PIN_I01+                PIN_I02
    .dw PIN_I01+PIN_I11+PIN_PH1
    .dw PIN_I01+        PIN_PH1+PIN_I02

//================================================
//	變量定義
//================================================
.iram
	SMotor_StartPtr:	.dw 0				// 控制時序表起始地址
	SMotor_CurPtr:		.dw 0				// 時序表中當前拍的時序指針
	SMotor_Dir:			.dw 0				// 電機轉動方向
	SMotor_TimerSet:	.dw 0				// 定時器預置數值
	SMotor_CurTimer:	.dw 0				// 定時器計數值
	SMotor_Steps:		.dw 0				// 電機剩余轉動步數
	
.code
//======================================================
// 函數名稱:	StepMotor_Init
// C調用:		void StepMotor_Init(void)
// 匯編調用:	F_StepMotor_Init
// 實現功能:   步進電機驅動初始化(將開啟IRQ4_4KHz中斷)
// 入口參數:	無
// 出口參數:	無
// 破壞寄存器:	無
//======================================================
_StepMotor_Init:
F_StepMotor_Init:
	push r1 to [sp]
	INT OFF
	r1 = [P_Motor_Attr]
	r1 |= PIN_MOTOR
	[P_Motor_Attr] = r1
	r1 = [P_Motor_Dir]
	r1 |= PIN_MOTOR
	[P_Motor_Dir] = r1
	r1 = [P_Motor_Buf]
	r1 |= PIN_MOTOR
	[P_Motor_Data] = r1

	r1 = Tbl_SMotor_Full
	[SMotor_StartPtr] = r1
	[SMotor_CurPtr] = r1
	r1 = 0x0000
	[SMotor_TimerSet] = r1
	[SMotor_CurTimer] = r1
	[SMotor_Steps] = r1
	[SMotor_Dir] = r1

	r1 = [P_INT_Mask]
	r1 |= C_IRQ4_4KHz
	[P_INT_Mask] = r1

	INT FIQ,IRQ
	pop r1 from [sp]
retf

//======================================================
// 函數名稱:	StepMotor_SetMode
// C調用:		void StepMotor_SetMode(unsigned ModeCode)
// 匯編調用:	F_StepMotor_SetMode
// 實現功能:   設置步進電機工作模式
// 入口參數:	ModeCode(r1) - 步進電機工作模式,可以是下列數值之一:
//					STEP_FULL - 整步模式
//					STEP_HALF - 半步模式
//					STEP_MOHALF - 優化半步模式
// 出口參數:	無
// 破壞寄存器:	無
//======================================================
_StepMotor_SetMode:
	push r1 to [sp]
	r1 = sp + 4
	r1 = [r1]
	call F_StepMotor_SetMode
	pop r1 from [sp]
retf

F_StepMotor_SetMode:
	push r1 to [sp]
	cmp r1, STEP_FULL
	jne ?IsHalf
?Full:
	r1 = Tbl_SMotor_Full
	jmp ?SetPtr
?IsHalf:
	cmp r1, STEP_HALF
	jne ?IsMoHalf
?Half:
	r1 = Tbl_SMotor_Half
	jmp ?SetPtr
?IsMoHalf:
	cmp r1, STEP_MOHALF
	jne ?Full
?MoHalf:
	r1 = Tbl_SMotor_MoHalf
?SetPtr:
	[SMotor_StartPtr] = r1
	[SMotor_CurPtr] = r1
	
	pop r1 from [sp]
retf

//======================================================
// 函數名稱:	StepMotor_SetSpeed
// C調用:		void StepMotor_SetSpeed(unsigned Speed)
// 匯編調用:	F_StepMotor_SetSpeed
// 實現功能:   設置步進電機轉速
// 入口參數:	Speed(r1) - 轉速值,單位為拍/秒(P.P.S),范圍從1到MOTOR_MAXSPEED
// 出口參數:	無
// 破壞寄存器:	無
//======================================================
_StepMotor_SetSpeed:
	push r1 to [sp]
	r1 = sp + 4
	r1 = [r1]
	call F_StepMotor_SetSpeed
	pop r1 from [sp]
retf

.external __divu1				// 除法函數,在CMacro1016.lib或CMacro.lib庫中
F_StepMotor_SetSpeed:
	push r1,r2 to [sp]
	r2 = r1						// TimerData=4096/pps (@4kHz Timer)
	jz	?Exit
	cmp r2, MOTOR_MAXSPEED
	jna	?SetTimer
	r2 = MOTOR_MAXSPEED
?SetTimer:
	r1 = 4096
	push r1,r2 to [sp]
	call __divu1
	sp += 2
	r2 = r2 lsl 1				//余數與4096比較,四舍五入
	cmp r2, 4096
	jb ?NoCarry
?Carry:
	r1 += 1
?NoCarry:
	[SMotor_TimerSet] = r1
	r1 = 0
	[SMotor_CurTimer] = r1
?Exit:	
	pop r1,r2 from [sp]
retf

//======================================================
// 函數名稱:	StepMotor_Forward
// C調用:		void StepMotor_Forward(unsigned Step)
// 匯編調用:	F_StepMotor_Forward
// 實現功能:   使電機正向轉動
// 入口參數:	Steps(r1) - 使電機轉動的拍數,范圍從1~65535
//					當Steps設置為0時,電機將持續轉動
// 出口參數:	無
// 破壞寄存器:	無
//======================================================
_StepMotor_Forward:
	push r1 to [sp]
	r1 = sp + 4
	r1 = [r1]
	call F_StepMotor_Forward
	pop r1 from [sp]
retf

F_StepMotor_Forward:
	push r1 to [sp]
	[SMotor_Steps] = r1
	r1 = [SMotor_StartPtr]
	[SMotor_CurPtr] = r1
	r1 = 1
	[SMotor_Dir] = r1
	pop r1 from [sp]
retf

//======================================================
// 函數名稱:	StepMotor_Backward
// C調用:		void StepMotor_Backward(unsigned Step)
// 匯編調用:	F_StepMotor_Backward
// 實現功能:   使電機反向轉動
// 入口參數:	Steps(r1) - 使電機轉動的拍數,范圍從1~65535
//					當Steps設置為0時,電機將持續轉動
// 出口參數:	無
// 破壞寄存器:	無
//======================================================
_StepMotor_Backward:
	push r1 to [sp]
	r1 = sp + 4
	r1 = [r1]
	call F_StepMotor_Backward
	pop r1 from [sp]
retf

F_StepMotor_Backward:
	push r1 to [sp]
	[SMotor_Steps] = r1
	r1 = [SMotor_StartPtr]
	r1 += 7
	[SMotor_CurPtr] = r1
	r1 = -1
	[SMotor_Dir] = r1
	pop r1 from [sp]
retf

//======================================================
// 函數名稱:	StepMotor_Drive
// C調用:		void StepMotor_Drive(void)
// 匯編調用:	F_StepMotor_Drive
// 實現功能:   實現電機轉動,該函數僅被IRQ4_4KHz中斷服務程序調用
// 入口參數:	無
// 出口參數:	無
// 破壞寄存器:	無
//======================================================
_StepMotor_Drive:
F_StepMotor_Drive:
	push r1,r2 to [sp]
	r1 = [SMotor_TimerSet]
	jz	?Exit
	r2 = [SMotor_Dir]
	jz 	?Exit
	r2 = [SMotor_CurTimer]
	r2 += 1
	[SMotor_CurTimer] = r2
	cmp r2, r1
	jb ?Exit 
	r1 = [SMotor_CurPtr]
	r2 = [P_Motor_Buf]
	r2 &= ~PIN_MOTOR
	r2 |= [r1]
	[P_Motor_Data] = r2
	r1 += [SMotor_Dir]
	r2 = [SMotor_StartPtr]
	cmp r1, r2
	jb ?Rewind_Tail
	r2 += 7
	cmp r1, r2
	jna ?Save_Ptr
?Rewind_Head:
	r1 = [SMotor_StartPtr]
	jmp ?Save_Ptr
?Rewind_Tail:
	r1 = [SMotor_StartPtr]
	r1 += 7
?Save_Ptr:
	[SMotor_CurPtr] = r1

	r1 = [SMotor_Steps]
	jz	?NextStep
	r1 -= 1
	[SMotor_Steps] = r1
	jnz ?NextStep
	r1 = 0
	[SMotor_Dir] = r1
	r1 = [P_Motor_Buf]
	r1 |= PIN_I01 + PIN_I02 + PIN_I11 + PIN_I12
	[P_Motor_Buf] = r1
?NextStep:
	r1 = 0
	[SMotor_CurTimer] = r1
?Exit:
	pop r1,r2 from [sp]
retf

//======================================================
// 函數名稱:	StepMotor_Stop
// C調用:		void StepMotor_Stop(void)
// 匯編調用:	F_StepMotor_Stop
// 實現功能:   使電機停止轉動
// 入口參數:	無
// 出口參數:	無
// 破壞寄存器:	無
//======================================================
_StepMotor_Stop:
F_StepMotor_Stop:
	push r1 to [sp]
	r1 = 0
	[SMotor_Dir] = r1
	[SMotor_CurTimer] = r1
	[SMotor_Steps] = r1
	r1 = [P_Motor_Buf]
	r1 |= PIN_I01 + PIN_I02 + PIN_I11 + PIN_I12
	[P_Motor_Buf] = r1
	pop r1 from [sp]
retf

//======================================================
// 函數名稱:	StepMotor_Status
// C調用:		unsigned StepMotor_Status(void)
// 匯編調用:	F_StepMotor_Status
// 實現功能:   獲取當前電機的轉動狀態(正轉、反轉或停轉)
// 入口參數:	無
// 出口參數:	r1 - 電機轉動狀態,可能是下列數值:
//					0 - 停止狀態
//					1 - 正向轉動
//					0xffff - 反向轉動
// 破壞寄存器:	無
//======================================================
_StepMotor_Status:
F_StepMotor_Status:
	r1 = [SMotor_Dir]
retf

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品亚洲午夜一区二区三区| 日韩精品一区二区三区视频播放 | 精品乱人伦小说| 国产精品情趣视频| 久久精品国产亚洲高清剧情介绍| 91女人视频在线观看| 精品国产乱码久久久久久免费| 亚洲欧美日韩综合aⅴ视频| 国产综合色在线视频区| 欧美一级夜夜爽| 亚洲一区日韩精品中文字幕| k8久久久一区二区三区| 精品电影一区二区| 日本不卡123| 欧美精品粉嫩高潮一区二区| 亚洲免费观看在线视频| 成人v精品蜜桃久久一区| 久久网这里都是精品| 免费的国产精品| 欧美人与禽zozo性伦| 亚洲老司机在线| 99视频超级精品| 国产精品对白交换视频| gogo大胆日本视频一区| 国产精品色呦呦| 国产91高潮流白浆在线麻豆| 欧美激情综合五月色丁香 | eeuss鲁片一区二区三区在线看| 日韩女优毛片在线| 日本欧美一区二区三区乱码| 日韩一区二区电影| 美女视频一区在线观看| 日韩欧美在线综合网| 蜜桃在线一区二区三区| 日韩精品一区二区三区中文不卡| 日本v片在线高清不卡在线观看| 欧美一级xxx| 看国产成人h片视频| 国产亚洲综合av| 成人午夜电影久久影院| 中文字幕中文在线不卡住| 91蜜桃视频在线| 亚洲aaa精品| 91精品国产综合久久福利软件| 亚洲成va人在线观看| 91精品国产综合久久久久久久| 日韩av中文字幕一区二区三区| 日韩精品一区二区三区视频播放| 国产精品性做久久久久久| 国产精品乱人伦中文| 色播五月激情综合网| 亚洲成av人片一区二区梦乃| 欧美电影免费观看高清完整版在线观看| 蜜桃久久精品一区二区| 国产日韩欧美高清| 在线日韩一区二区| 免费亚洲电影在线| 久久一夜天堂av一区二区三区| 大桥未久av一区二区三区中文| 亚洲男女一区二区三区| 日韩欧美国产麻豆| 99久久99久久免费精品蜜臀| 天堂蜜桃91精品| 国产午夜精品一区二区| 91麻豆精东视频| 日日摸夜夜添夜夜添精品视频| 精品国产凹凸成av人网站| www.亚洲色图.com| 亚洲成av人片一区二区梦乃 | 国产一区欧美一区| 国产精品国产三级国产有无不卡| 欧美精品粉嫩高潮一区二区| 丁香婷婷综合色啪| 亚洲一区二区三区四区五区中文| 精品电影一区二区三区| 日本国产一区二区| 国产成人一区在线| 日韩精品电影在线观看| 国产精品久久久久国产精品日日| 欧美日韩www| 91色.com| 国产成人午夜精品5599| 日韩综合在线视频| 亚洲欧美日韩中文播放| 国产亚洲欧美激情| 宅男在线国产精品| 欧美优质美女网站| 波多野结衣在线aⅴ中文字幕不卡| 免费的成人av| 婷婷综合五月天| 亚洲一区二区视频| 亚洲男人的天堂av| 国产精品国产三级国产普通话99| 精品国产sm最大网站免费看| 在线电影欧美成精品| 欧美日韩中文一区| 国产一区二区调教| 久久久精品黄色| 日韩欧美黄色影院| 777亚洲妇女| 欧美日韩精品三区| 在线视频一区二区免费| 成人av资源站| 99久久精品情趣| 国产a区久久久| 国产 日韩 欧美大片| 国产一区美女在线| 激情欧美一区二区三区在线观看| 日韩成人一区二区三区在线观看| 夜夜精品视频一区二区 | 国产精品资源网| 久久99精品久久只有精品| 美腿丝袜亚洲三区| 精品一区二区成人精品| 精品亚洲国内自在自线福利| 久久精品国产亚洲5555| 国产精品一二三区在线| 国产91精品精华液一区二区三区 | 亚洲婷婷国产精品电影人久久| 国产欧美日韩视频一区二区 | 色婷婷综合视频在线观看| 91小视频在线免费看| 一本久道久久综合中文字幕 | 亚洲在线视频免费观看| 亚洲成人免费av| 日韩va亚洲va欧美va久久| 美腿丝袜亚洲综合| 国产成人亚洲综合a∨猫咪| 成人精品小蝌蚪| 色婷婷精品久久二区二区蜜臂av| 欧美日韩一本到| 日韩一二三四区| 国产情人综合久久777777| 一区在线播放视频| 亚洲bt欧美bt精品| 国产在线播放一区三区四| 91影院在线免费观看| 欧美中文字幕不卡| 欧美一级免费大片| 国产日韩av一区| 一区二区三区欧美| 蜜桃精品视频在线| 成人av影视在线观看| 欧美三级乱人伦电影| 26uuu亚洲婷婷狠狠天堂| 国产精品水嫩水嫩| 日韩中文字幕区一区有砖一区| 精品一区二区久久| 91国偷自产一区二区开放时间| 日韩精品在线一区二区| 最新国产精品久久精品| 日韩精品一二区| 91丝袜美女网| 欧美成人一区二区三区在线观看| 国产精品白丝在线| 日本最新不卡在线| jizz一区二区| 久久综合久久鬼色| 亚洲一区二区三区四区在线免费观看| 国内精品自线一区二区三区视频| 色综合色综合色综合 | 国产九九视频一区二区三区| 91官网在线观看| 亚洲精品一区二区三区福利| **网站欧美大片在线观看| 精品在线观看视频| 欧美日韩亚洲综合一区 | 久久网站热最新地址| 亚洲综合小说图片| 粉嫩一区二区三区性色av| 日韩一区二区不卡| 亚洲一区二区精品视频| 成人v精品蜜桃久久一区| 欧美sm极限捆绑bd| 亚洲va欧美va人人爽午夜| 91麻豆福利精品推荐| 欧美激情一区二区三区全黄| 日本不卡的三区四区五区| 欧美日韩一区二区电影| 一区二区三区产品免费精品久久75| 国产大陆亚洲精品国产| 日韩午夜在线影院| 亚洲成av人片| 欧美日韩一区二区三区四区五区| 日韩毛片一二三区| 成人av网站免费观看| 2021国产精品久久精品| 久久精品国产77777蜜臀| 日韩一级欧美一级| 免费观看在线综合| 日韩一区二区中文字幕| 美女mm1313爽爽久久久蜜臀| 欧美一区二区免费| 免费成人深夜小野草| 3d成人动漫网站| 日本成人超碰在线观看| 欧美一三区三区四区免费在线看| 亚洲午夜在线视频| 91精品久久久久久久99蜜桃| 午夜精品福利一区二区三区av|