亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧美一卡二卡在线| 欧美一级一区二区| 日本三级韩国三级欧美三级| 精品国产伦一区二区三区免费| av在线不卡免费看| 国模冰冰炮一区二区| 亚洲成人免费在线观看| 欧美高清在线视频| 日韩无一区二区| 在线观看国产日韩| 成人黄色av网站在线| 裸体歌舞表演一区二区| 亚洲最色的网站| 国产精品久久久久久久久晋中 | 日韩欧美一二三区| 在线区一区二视频| 97精品电影院| 白白色 亚洲乱淫| 国产一区二区0| 蜜臀av一区二区三区| 亚洲成人手机在线| 国产精品亲子伦对白| 亚洲妇熟xx妇色黄| 激情综合色播激情啊| 亚洲免费大片在线观看| 亚洲国产成人自拍| 国产日韩欧美综合在线| 2021久久国产精品不只是精品| 欧美日韩一区二区三区在线看 | 色综合久久99| 成+人+亚洲+综合天堂| 国产一区二区三区日韩| 久久成人18免费观看| 久久国产生活片100| 蜜桃av噜噜一区| 麻豆国产精品777777在线| 天天色 色综合| 视频一区视频二区中文| 亚洲成av人**亚洲成av**| 亚洲综合清纯丝袜自拍| 亚洲午夜av在线| 亚洲1区2区3区4区| 日本麻豆一区二区三区视频| 蜜芽一区二区三区| 看国产成人h片视频| 久久国产精品区| 国产一区二区在线电影| 国产成人综合精品三级| 成人永久aaa| 91性感美女视频| 91福利在线导航| 欧美精品色综合| 日韩欧美一区二区不卡| 26uuu亚洲| 国产精品少妇自拍| 一区二区三区中文字幕在线观看| 毛片不卡一区二区| 欧美日韩国产美女| 欧美丰满美乳xxx高潮www| 欧美一三区三区四区免费在线看| 日韩情涩欧美日韩视频| 26uuu亚洲婷婷狠狠天堂| 亚洲国产成人自拍| 一区二区三区免费看视频| 亚洲v日本v欧美v久久精品| 日本成人在线看| 国产乱色国产精品免费视频| 国产91富婆露脸刺激对白| 色综合久久综合中文综合网| 欧美日韩视频不卡| 精品奇米国产一区二区三区| 欧美国产日韩精品免费观看| 一区二区三区在线观看欧美 | 国产一区二区三区观看| 成人福利视频网站| 欧美色图免费看| 久久综合久久久久88| 亚洲品质自拍视频| 麻豆视频一区二区| fc2成人免费人成在线观看播放| 在线一区二区视频| 精品国产一二三区| 亚洲免费视频成人| 久久精品国产网站| 色综合一区二区三区| 51精品秘密在线观看| 亚洲欧洲性图库| 麻豆精品久久久| 色综合色综合色综合| 欧美精品一区二区三区高清aⅴ | 高清成人免费视频| 欧美人与z0zoxxxx视频| 国产欧美日本一区二区三区| 亚洲综合激情另类小说区| 精品一二线国产| 欧美日韩一区二区在线视频| 国产欧美一区二区精品久导航 | 成人高清在线视频| 日韩免费看的电影| 亚洲在线视频免费观看| 国产成a人亚洲| 日韩精品一区二区三区swag| 亚洲精品福利视频网站| 国产乱码精品一区二区三| 在线视频综合导航| 中文字幕欧美国产| 激情久久五月天| 五月综合激情网| 成人黄色免费短视频| 精品国产乱码久久久久久久久 | 欧美日韩午夜精品| 国产精品久久久久9999吃药| 激情都市一区二区| 欧美一二三四区在线| 亚洲一区免费在线观看| 99久久国产综合精品女不卡| 久久久噜噜噜久久人人看| 久久精品999| 欧美一区二区三级| 日韩精品亚洲专区| 欧美日韩中文字幕一区二区| 亚洲免费在线播放| 91网页版在线| 亚洲三级视频在线观看| 99久久精品国产一区二区三区 | 欧美一区二区在线观看| 亚洲一二三四久久| 欧美中文字幕一区二区三区| 自拍偷拍欧美激情| 99久久婷婷国产精品综合| 国产精品视频麻豆| av在线播放一区二区三区| 国产精品久久久一本精品| 粉嫩欧美一区二区三区高清影视| 亚洲精品一线二线三线无人区| 日本中文字幕一区二区视频 | 午夜一区二区三区在线观看| 在线观看国产日韩| 亚洲国产一二三| 欧美色图在线观看| 香蕉加勒比综合久久| 91精品国产综合久久香蕉的特点 | 一区二区三区国产| 91丨九色丨尤物| 亚洲一区二区三区美女| 欧美吻胸吃奶大尺度电影| 亚洲第一在线综合网站| 欧美精品在线观看播放| 麻豆中文一区二区| 国产欧美一区二区三区在线看蜜臀| 岛国av在线一区| 一区二区三区四区在线播放| 欧美性淫爽ww久久久久无| 五月激情丁香一区二区三区| 欧美一区二区在线免费观看| 精品一区二区三区不卡| 中文字幕精品三区| 91在线观看地址| 日韩影院免费视频| 久久免费国产精品| 色综合天天综合网天天看片| 亚洲午夜视频在线观看| 日韩视频在线一区二区| 成人午夜免费av| 亚洲一级二级在线| 日韩一区二区高清| 懂色av一区二区在线播放| 夜夜爽夜夜爽精品视频| 日韩一级免费观看| 成人av中文字幕| 午夜精品视频一区| 久久精品免视看| 欧美体内she精高潮| 久久精品国产99国产精品| 国产精品九色蝌蚪自拍| 欧美一区日韩一区| av中文字幕一区| 奇米888四色在线精品| 国产精品久久网站| 欧美精品高清视频| 成人免费视频国产在线观看| 亚洲成人av在线电影| 久久精品亚洲精品国产欧美| 日本韩国欧美在线| 国产精品888| 偷窥少妇高潮呻吟av久久免费| 久久一夜天堂av一区二区三区| 色爱区综合激月婷婷| 国产大陆精品国产| 免费欧美在线视频| 亚洲欧美经典视频| 久久九九99视频| 欧美人狂配大交3d怪物一区| 国产成人av电影在线播放| 日本午夜精品视频在线观看| 中文字幕一区二| 久久久久久影视| 在线电影欧美成精品| 91丝袜国产在线播放| 国产999精品久久|