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

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

?? dcmotor.asm

?? SPMC701系統(tǒng)開發(fā)板范例代碼 大家可以下載學(xué)習(xí)
?? ASM
字號(hào):
//======================================================
//  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
// 實(shí)現(xiàn)功能:SPGT62C19B的直流電機(jī)驅(qū)動(dòng)程序,使用IRQ4_4KHz中斷
// 日期:    2005/7/18
//============================================================

//================================================
//	SPGT62C19B控制端口設(shè)定
//================================================

/////-----       若使用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控制引腳設(shè)定
//================================================

//			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

//================================================
//	速度檢測(cè)去抖動(dòng)時(shí)間設(shè)定,單位為1/4096秒
//================================================

.define MOTOR_DEBOUNCE	10

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

.define P_INT_Mask		0x702d
.define C_IRQ4_4KHz		0x0040

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

.iram
/////-----       電機(jī)驅(qū)動(dòng)狀態(tài)變量	    -----/////
.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寬度計(jì)數(shù),b11~b6:Motor2; b5~b0:Motor1

/////-----       電機(jī)速度檢測(cè)相關(guān)變量	    -----/////
.var Motor_Timer_Cnt = 0	// 定時(shí)器計(jì)數(shù)值
.var Motor_Pulse_Cnt = 0	// 速度檢測(cè)脈沖計(jì)數(shù)值
.var Motor_Pulse_Deb = 0	// 速度檢測(cè)脈沖去抖動(dòng)計(jì)數(shù)
.var Motor_Speed = 0x00		// 電機(jī)速度。
.var Motor_SpeedRdy = 0		// 電機(jī)轉(zhuǎn)速測(cè)量完成標(biāo)志
//================================================
//	公有函數(shù)聲明
//================================================
.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
.public _DCMotor_IsSpeedRdy
.public F_DCMotor_IsSpeedRdy

.code
//======================================================
// 函數(shù)名稱:	DCMotor_Init
// C調(diào)用:		void DCMotor_Init(void)
// 匯編調(diào)用:	F_DCMotor_Init
// 實(shí)現(xiàn)功能:   直流電機(jī)驅(qū)動(dòng)初始化
// 入口參數(shù):	無
// 出口參數(shù):	無
// 破壞寄存器:	無
//======================================================
_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
	[Motor_SpeedRdy] = r1

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

	pop r1 from [sp]
retf

//======================================================
// 函數(shù)名稱:	DCMotor_SetSpeed
// C調(diào)用:		void DCMotor_SetSpeed(unsigned Motor,unsigned Speed)
// 匯編調(diào)用:	F_DCMotor_SetSpeed
// 實(shí)現(xiàn)功能:   設(shè)定電機(jī)轉(zhuǎn)速等級(jí)
// 入口參數(shù):	Motor(R1) - 選擇對(duì)哪個(gè)直流電機(jī)接口進(jìn)行轉(zhuǎn)速等級(jí)設(shè)定:
//					MOTOR_1		直流電機(jī)接口1
//					MOTOR_2		直流電機(jī)接口1
//				Speed(R2) - PWM占空比,范圍0-63,單位1/64
// 出口參數(shù):	無
// 破壞寄存器:	無
//======================================================
_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

//======================================================
// 函數(shù)名稱:	DCMotor_Forward
// C調(diào)用:		void DCMotor_Forward(unsigned Motor)
// 匯編調(diào)用:	F_DCMotor_Forward
// 實(shí)現(xiàn)功能:   使電機(jī)正向轉(zhuǎn)動(dòng)
// 入口參數(shù):	Motor(R1) - 設(shè)定正向轉(zhuǎn)動(dòng)的電機(jī):
//					MOTOR_1		電機(jī)1
//					MOTOR_2		電機(jī)2
// 出口參數(shù):	無
// 破壞寄存器:	無
//======================================================
_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

//======================================================
// 函數(shù)名稱:	DCMotor_Backward
// C調(diào)用:		void DCMotor_Backward(unsigned Motor)
// 匯編調(diào)用:	F_DCMotor_Backward
// 實(shí)現(xiàn)功能:   使電機(jī)反向轉(zhuǎn)動(dòng)
// 入口參數(shù):	Motor(R1) - 設(shè)定反向轉(zhuǎn)動(dòng)的電機(jī):
//					MOTOR_1		電機(jī)1
//					MOTOR_2		電機(jī)2
// 出口參數(shù):	無
// 破壞寄存器:	無
//======================================================
_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

//======================================================
// 函數(shù)名稱:	DCMotor_Stop
// C調(diào)用:		void DCMotor_Stop(unsigned Motor)
// 匯編調(diào)用:	F_DCMotor_Stop
// 實(shí)現(xiàn)功能:   直流電機(jī)停止轉(zhuǎn)動(dòng)
// 入口參數(shù):	Motor(R1) - 需要停轉(zhuǎn)的電機(jī)
//					MOTOR_1		電機(jī)1
//					MOTOR_2		電機(jī)2
// 出口參數(shù):	無
// 破壞寄存器:	無
//======================================================
_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

//======================================================
// 函數(shù)名稱:	DCMotor_Drive
// C調(diào)用:		void DCMotor_Drive(void)
// 匯編調(diào)用:	F_DCMotor_Drive
// 實(shí)現(xiàn)功能:   產(chǎn)生PWM波形,在IRQ4_4KHz中斷服務(wù)程序中調(diào)用
// 入口參數(shù):	無
// 出口參數(shù):	無
// 破壞寄存器:	無
//======================================================
_DCMotor_Drive:
F_DCMotor_Drive:
	push r1,r5 to [sp]
	r1 = [Motor_Status]
	test r1,0xC000
	jnz	?Motor_ChkPulse
	goto ?Exit
?Motor_ChkPulse:							// 速度檢測(cè)
	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, 1024
	jb ?Motor_Drive
	r5 = [Motor_Pulse_Cnt]
//	r5 = r5 LSR 1
	[Motor_Speed] = r5
	r5 = 0
	[Motor_Pulse_Cnt] = r5
	r5 = 1
	[Motor_SpeedRdy] = r5
	r4 = 0
?Motor_Drive:								// PWM發(fā)生
	[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

//======================================================
// 函數(shù)名稱:	DCMotor_GetSpeed
// C調(diào)用:		unsigned DCMotor_GetSpeed(void)
// 匯編調(diào)用:	F_DCMotor_GetSpeed
// 實(shí)現(xiàn)功能:   獲取電機(jī)轉(zhuǎn)速
// 入口參數(shù):	無
// 出口參數(shù):	r1 - 測(cè)得的電機(jī)轉(zhuǎn)速值,單位(轉(zhuǎn)/秒)
// 破壞寄存器:	無
//======================================================
_DCMotor_GetSpeed:
F_DCMotor_GetSpeed:
	r1 = 0
	[Motor_SpeedRdy] = r1
	r1 = [Motor_Speed]
retf


//======================================================
// 函數(shù)名稱:	DCMotor_IsSpeedRdy
// C調(diào)用:		unsigned DCMotor_IsSpeedRdy(void)
// 匯編調(diào)用:	F_DCMotor_IsSpeedRdy
// 實(shí)現(xiàn)功能:   是否已完成一次電機(jī)轉(zhuǎn)速測(cè)量
// 入口參數(shù):	無
// 出口參數(shù):	r1 - 結(jié)果, 0:否, 1:是
// 破壞寄存器:	無
//======================================================
_DCMotor_IsSpeedRdy:
F_DCMotor_IsSpeedRdy:
	r1 = [Motor_SpeedRdy]
retf

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91原创在线视频| 91尤物视频在线观看| 精品88久久久久88久久久| 国产成人综合在线| 亚洲欧美成人一区二区三区| 国产又粗又猛又爽又黄91精品| 中文字幕av一区 二区| 欧美丝袜自拍制服另类| 国产一区二区三区在线观看精品| 亚洲欧洲综合另类在线| 欧美一区二区三区色| aa级大片欧美| 捆绑调教一区二区三区| 亚洲欧美日韩一区二区| xf在线a精品一区二区视频网站| 色婷婷综合激情| 国内成人免费视频| 亚洲桃色在线一区| 久久久亚洲国产美女国产盗摄| 色视频欧美一区二区三区| 国产一区美女在线| 视频一区二区三区在线| 亚洲情趣在线观看| 国产网站一区二区| 欧美午夜不卡视频| 成人黄色免费短视频| 久久99久久99小草精品免视看| 99热这里都是精品| 国产精品一级二级三级| 欧美精品123区| 久久精品国产99| 蜜臀av性久久久久蜜臀av麻豆| 国内精品免费**视频| 国产精品久久久久久久浪潮网站| 日本视频一区二区| 亚洲另类春色国产| 精品理论电影在线观看| 欧美丝袜丝交足nylons图片| 成人午夜精品在线| 狠狠v欧美v日韩v亚洲ⅴ| 三级欧美在线一区| 中文字幕日韩一区| 国产午夜久久久久| 精品国产乱码久久久久久久久| 欧美日韩精品是欧美日韩精品| 色综合天天综合网天天看片| 风间由美中文字幕在线看视频国产欧美| 午夜一区二区三区视频| 中文字幕精品一区二区精品绿巨人| 日韩一级视频免费观看在线| 91精品一区二区三区久久久久久| 日本高清免费不卡视频| 99在线精品一区二区三区| 国产69精品久久99不卡| 国产成人免费视频精品含羞草妖精| 捆绑变态av一区二区三区| 青青青爽久久午夜综合久久午夜| 亚洲成人777| 亚洲va欧美va人人爽午夜| 一区二区三区 在线观看视频| 亚洲同性同志一二三专区| 中日韩免费视频中文字幕| 久久久国产一区二区三区四区小说 | 免费av网站大全久久| 国产精品毛片a∨一区二区三区| 精品剧情v国产在线观看在线| 欧美激情一区二区三区全黄| 色诱视频网站一区| 久久爱www久久做| 狂野欧美性猛交blacked| 免费在线一区观看| 亚洲一区二区视频在线| 欧美国产97人人爽人人喊| 国产日韩三级在线| 亚洲另类一区二区| 91精品国产一区二区三区| 在线观看日产精品| 7777精品伊人久久久大香线蕉| 欧美电影一区二区三区| 欧美一区二区日韩| 久久午夜国产精品| 综合久久一区二区三区| 亚洲图片欧美综合| 麻豆国产欧美日韩综合精品二区| 国产自产2019最新不卡| 99在线精品视频| 欧美色手机在线观看| 精品日韩一区二区三区| 一区二区三区在线视频观看58| 免费成人美女在线观看| 91免费版在线| 亚洲欧美日韩国产综合在线| 午夜视频在线观看一区二区 | 欧美日韩中文字幕一区| 国产午夜精品一区二区| 国产亚洲欧洲一区高清在线观看| 亚洲免费在线观看| 日韩高清在线观看| 日本不卡免费在线视频| 大陆成人av片| 91精品国产色综合久久不卡蜜臀| 国产精品免费视频一区| 人人爽香蕉精品| 欧美性猛交xxxxxxxx| 国产精品久久久久一区二区三区共| 日韩国产在线观看| 欧美日韩中字一区| 亚洲欧美一区二区不卡| 日韩天堂在线观看| av在线播放一区二区三区| 色综合天天综合网国产成人综合天 | 91麻豆精东视频| 色一情一伦一子一伦一区| 精品理论电影在线观看| 欧美成人aa大片| 国产一区二区三区黄视频 | 国产精品88av| 色哟哟欧美精品| 欧美日韩午夜在线| 欧美一区二区播放| 中文字幕+乱码+中文字幕一区| 亚洲人xxxx| 紧缚奴在线一区二区三区| 99久久久国产精品免费蜜臀| 91精品蜜臀在线一区尤物| 国产欧美va欧美不卡在线| 亚洲综合精品久久| 视频一区国产视频| 亚洲人成在线观看一区二区| 视频一区视频二区中文| 成人美女视频在线观看| 91精品婷婷国产综合久久性色| 国产精品午夜电影| 狠狠色综合色综合网络| 欧美丝袜第三区| 中国色在线观看另类| 蜜桃av一区二区在线观看| 色综合久久综合网97色综合| 久久精品免费在线观看| 免费成人小视频| 欧美专区亚洲专区| 中文字幕乱码亚洲精品一区| 精品一区二区在线视频| 欧美视频三区在线播放| 亚洲图片另类小说| 国产91露脸合集magnet| 欧美精品一区二区在线播放| 亚洲国产精品精华液网站| thepron国产精品| 久久精品人人做人人综合| 久久成人免费日本黄色| 欧美一区二区三区免费视频| 天堂成人国产精品一区| 欧美日韩一区二区三区在线看| 成人欧美一区二区三区在线播放| 激情六月婷婷综合| 日韩精品一区二区三区在线| 亚洲成人资源在线| 欧美日韩专区在线| 亚洲午夜羞羞片| 久久久久久免费网| 亚洲男人的天堂在线aⅴ视频| 国产一区二区精品久久| 91精品国产综合久久精品麻豆| 亚洲人成在线播放网站岛国| aaa欧美大片| 欧美午夜在线观看| 欧美日韩www| 欧美成人三级在线| 欧美成人a∨高清免费观看| 国产精品一区二区久久不卡| 国产精品美女一区二区三区 | 欧美一卡2卡三卡4卡5免费| 日本视频中文字幕一区二区三区| 日韩免费在线观看| 欧美亚洲国产一卡| 欧美色精品在线视频| 久久一日本道色综合| 国产a精品视频| 中文字幕中文字幕一区| 91免费视频大全| 亚洲福利视频一区| 欧美一区二区三区在| 青青草97国产精品免费观看无弹窗版| 日韩欧美中文字幕一区| 国产精品一品视频| 亚洲欧美在线视频观看| 欧美日韩免费电影| 久久国产福利国产秒拍| 国产精品久久久久一区二区三区| 97精品视频在线观看自产线路二| 亚洲欧美视频一区| 欧美一级午夜免费电影| 国产一区美女在线| 亚洲免费资源在线播放| 91精品国产综合久久婷婷香蕉 | 久久精品av麻豆的观看方式| 久久一二三国产| 色综合天天综合网天天狠天天| 日本成人在线看|