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

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

?? retarder.c

?? 這些都是公司的機密啊
?? C
字號:
#include <REG768.H>
#include <stdio.h>
#include <intrins.h>
//常變量定義區,端口位定義
sbit SDA=P1^3;			//I2c數據傳送位
sbit SCL=P1^2;			//I2c時鐘控制位
sbit Inputsignal1=P0^3;
sbit Inputsignal2=P0^4;
sbit Inputsignal3=P0^5;	//設定為外部7檔的輸入口
sbit Inputsignal0=P0^6;	//有些產家在檔位突變之下定義的另外一腳
sbit speed=P1^4;		//INT1為外部里程表信號輸入口
sbit brakeLamp=P0^7;	//剎車燈信號標記
sbit speedStatus1=P1^1;
sbit speedStatus2=P1^0;	//選取多少公里以下不工作。
sbit speedStatus3=P0^2;//三種速度狀態的選擇
sbit pwm0=P0^1;
sbit pwm1=P1^6;
sbit pwm2=P1^7;
sbit pwm3=P0^0;	//P0.0,P1.7,P1.6,P0.1為外部PWM輸出控制口
//變量定義區
#define unchar unsigned char  	//宏指令8位無符號整型
#define min1Fre 0x30			//Retarder工作時最低頻率選擇位1
#define min2Fre 0x40			//Retarder工作時最低頻率選擇位2
#define min3Fre 0x50			//Retarder工作時最低頻率選擇位3
unsigned long OldspeedSignal;	//判斷外部脈沖多少
unsigned long NewspeedSignal;
bit status=1;					//判斷工作狀態進入緩速要求
void initData(void);
void fnc0Level(void);
void fnc1Level(void);
void fnc2Level(void);
void fnc3Level(void);
void fnc4Level(void);
void fnc5Level(void);
void fnc6Level(void);
void fncSameLevel(void);
void fncSundenLevel(void);		//速度突變檔的控制
void OutputPwm(unchar road,unchar pwmH,unchar pwmL);
unchar getStatus(void);
void delay(unsigned int k);
void main(void)
{
	unchar value=0;
	bit flag;
	flag=1;						//判斷速度是否大于所需要的緩速器工作的值
	P1=0x0FF;
	initData();
	value=0;	
	_nop_();
	do 
	{
/*在速度低于瓶限值是緩速器不工作.speed
*/
		while(flag)
			{
				if (speedStatus1==1)
					{
						if(OldspeedSignal>min1Fre)  flag=0,status=1;
					}
				if (speedStatus2==1)
					{
						if(OldspeedSignal>min2Fre) flag=0,status=1;
				
					}
				if (speedStatus3==1)
					{
						if(OldspeedSignal>min3Fre) flag=0,status=1;
					}						
			}
		while(status)
			{
					value=getStatus();
				switch(value)
				{
				//	case (0x01<value<0x0C): fnc0Level(); break;
					case 0: fnc0Level(); break;  	//空擋
					case 1: fncSameLevel(); break;	//橫速	
					case 2:	fnc1Level(); break;		//檔位1
					case 3: fnc2Level(); break;		//檔位2
					case 4: fnc3Level(); break;		//檔位3
					case 5: fnc4Level(); break;		//檔位4
					case 6: fnc5Level(); break;		//檔位5
					case 7: fnc6Level(); break;		//檔位6
					case 8: 
					case 9: 
					case 10:
					case 11:	
					case 12:	
					case 13:	
					case 14:
					case 15:fncSundenLevel(); break;		//檔位突變
					default: break;
				}
		}
	}while(1);
	
}
//空擋下不利用DIVM的值來進行分解頻率的采樣
//由于車速對對單片機周期而言太慢了:該信號取自里程表的信號
void fnc0Level(void)
{
	unchar value;
	DIVM=0x00;
	brakeLamp=0;
	value=getStatus();
	if (value==0)
	{
		OutputPwm(0,0,0);		//關掉制動力
		delay(1000);
		status=0;				//退回速度偵測,是否要進入速度制動范圍
	}
	else  status=1;				//返回判斷檔位
}
////////////////////////////
//橫速檔,開TIMER0取判斷多少時間來進行橫速改為延時來判斷
void fncSameLevel(void)	
{
	unsigned long temp;//temp為當前按下橫速檔的值
	bit flag=1;
	unchar road,pwmH,pwmL;
	unchar value;
//	TR0=1;
	temp=OldspeedSignal;
	do
	{	
		if(temp<OldspeedSignal)
			{
				//減少制動力
				road--;
				OutputPwm(road,pwmH,pwmL);
			}
		if(temp>OldspeedSignal)
			{
				//增加制動
				road++;
				OutputPwm(road,pwmH,pwmL);
			}
		delay(1000);
		value=getStatus();
		if(value=0) status=0,flag=0;  	//退回速度偵測,是否要進入速度制動范圍
		if(value<9) flag=0;				//返回判斷檔位
	}while(flag);
//	TR0=0;
}
void fnc1Level(void)
{
	unchar CYCH,CYCL,value;
	bit flag;
	CNSW0=CYCL;		//四路共用一個周期
	CNSW1=CYCH;		//周期控制
	CPSW0=pwmL;
	CPSW1=pwmL;
	CPSW2=pwmL;
	CPSW3=pwmL;
	CPSW4=pwmH;		//各兩位控制每個極性的高電平
	//寬度固定
	CPSW0=pwmL,CPSW1=0x00,CPSW2=0x00,CPSW3=0x00;
	PWMCON0=0xC2;	//啟動PWM,使用新數據,高電平有效
	do 
	{
		value=getStatus();
		if (value==2) flag=0;
	} while(flag);
}

void fnc2Level(void)
{
	unchar CYCH,CYCL,value;
	bit flag;
	CNSW0=CYCL;		//四路共用一個周期
	CNSW1=CYCH;		//周期控制
	CPSW0=pwmL;
	CPSW1=pwmL;
	CPSW2=pwmL;
	CPSW3=pwmL;
	CPSW4=pwmH;		//各兩位控制每個極性的高電平
	//寬度固定
	CPSW0=pwmL,CPSW1=0x00,CPSW2=0x00,CPSW3=0x00;
	PWMCON0=0xC2;	//啟動PWM,使用新數據,高電平有效
	do 
	{
		value=getStatus();
		if (value==3) flag=0;
	} while(flag);	
}
void fnc3Level(void)
{
	unchar CYCH,CYCL,value;
	bit flag;
	CNSW0=CYCL;		//四路共用一個周期
	CNSW1=CYCH;		//周期控制
	CPSW0=pwmL;
	CPSW1=pwmL;
	CPSW2=pwmL;
	CPSW3=pwmL;
	CPSW4=pwmH;		//各兩位控制每個極性的高電平
	//寬度固定
	CPSW0=pwmL,CPSW1=0x00,CPSW2=0x00,CPSW3=0x00;
	PWMCON0=0xC2;	//啟動PWM,使用新數據,高電平有效
	do 
	{
		value=getStatus();
		if (value==4) flag=0;
	} while(flag);
}
void fnc4Level(void)
{
	unchar CYCH,CYCL,value;
	bit flag;
	CNSW0=CYCL;		//四路共用一個周期
	CNSW1=CYCH;		//周期控制
	CPSW0=pwmL;
	CPSW1=pwmL;
	CPSW2=pwmL;
	CPSW3=pwmL;
	CPSW4=pwmH;		//各兩位控制每個極性的高電平
	//寬度固定
	CPSW0=pwmL,CPSW1=0x00,CPSW2=0x00,CPSW3=0x00;
	PWMCON0=0xC2;	//啟動PWM,使用新數據,高電平有效
	do 
	{
		value=getStatus();
		if (value==5) flag=0;
	} while(flag);
}
void fnc5Level(void)
{
	unchar CYCH,CYCL,value;
	bit flag;
	CNSW0=CYCL;		//四路共用一個周期
	CNSW1=CYCH;		//周期控制
	CPSW0=pwmL;
	CPSW1=pwmL;
	CPSW2=pwmL;
	CPSW3=pwmL;
	CPSW4=pwmH;		//各兩位控制每個極性的高電平
	//寬度固定
	CPSW0=pwmL,CPSW1=0x00,CPSW2=0x00,CPSW3=0x00;
	PWMCON0=0xC2;	//啟動PWM,使用新數據,高電平有效
	do 
	{
		value=getStatus();
		if (value==6) flag=0;
	} while(flag);
}
void fnc6Level(void)
{
	unchar CYCH,CYCL,value;
	bit flag;
	CNSW0=CYCL;		//四路共用一個周期
	CNSW1=CYCH;		//周期控制	
	CPSW0=pwmL,CPSW1=0x00,CPSW2=0x00,CPSW3=0x00;
	CPSW4=pwmH;	//各兩位控制每個極性的高電平
	PWMCON0=0xC2;	//啟動PWM,使用新數據,高電平有效
	do 
	{
		value=getStatus();
		if (value==7) flag=0;
	} while(flag);
}

void initData(void)
{
	Inputsignal1=1;
	Inputsignal2=1;
	Inputsignal3=1;
	Inputsignal0=1;

	speedStatus1=1;
	speedStatus2=1;
	speedStatus3=1;//三種速度狀態的選擇
	speed=1;		//定義為數據輸入方式
//	SP=0x50;		//設置堆棧地址為50H
	DIVM=0x00;		//CPU時鐘2分頻
/*	When the DIVM register is set to some value N (between 1 and 255),
the CPU clock is divided by 2 * (N + 1).*/
	P0M1=0x00;		//P0 MODE1 and MODE2
	P0M2=0xFF;		//P0端口定義
	//21~28==00
//	ACC=0x00;
//	B=0x10;
	TMOD=0x01;
	//01:16-bit Timer/Counter “THn” and “TLn” are cascaded; there is no presc
	//for time1 and time0 as enble, not count and INT
	EA=1;		//總中斷允許;
//	TR0=1;		//啟動定時器0;
	TCON=0xC8;
	TMOD=0x10;
	TR1=1;		//啟動定時器0
	//Timer 0 Run control bit. Set/cleared by software to turn Timer/Counter 0 on/off.
	IT1=1;
	/*Interrupt 1 Type control bit. Set/cleared by software to specify falling edge/low level triggered
	external interrupts.*/
	ET0=1;		//定時器0中斷使能
	EX1=1;		//INT1中斷使能
	IP0=0x78;
	IP0H=0x7B;
	/*Each interrupt source can be individually programmed to one of four
	priority levels by setting or clearing bits in the IP0, IP0H, IP1, and
	IP1H registers*/
	brakeLamp=0; 	//清除剎車標記回到初始狀態
	CNSW0=CYCL;		//四路共用一個周期
	CNSW1=CYCH;		//周期控制	最大值為3FF;
}
//控制幾路輸出,并控制占空比
void OutputPwm(unchar road,unchar pwmH,unchar pwmL)
{
	unchar CYCH,CYCL;
	CNSW0=CYCL;		//四路共用一個周期
	CNSW1=CYCH;		//周期控制
	CPSW0=pwmL;
	CPSW1=pwmL;
	CPSW2=pwmL;
	CPSW3=pwmL;
	CPSW4=pwmH;		//各兩位控制每個極性的高電平
	//寬度固定
	switch(road)
	{
		case 1:	CPSW0=pwmL,CPSW1=0x00,CPSW2=0x00,CPSW3=0x00; break;
		case 2:	CPSW0=pwmL,CPSW1=0x00,CPSW2=0x00,CPSW3=0x00; break;
		case 3:	CPSW0=pwmL,CPSW1=0x00,CPSW2=0x00,CPSW3=0x00; break;
		case 4:	CPSW0=pwmL,CPSW1=0x00,CPSW2=0x00,CPSW3=0x00; break;
		case 5:	CPSW0=pwmL,CPSW1=0x00,CPSW2=pwmL,CPSW3=0x00; break;
//		case 3:	CPSW0=pwmL,CPSW1=pwmL,CPSW2=0pwmL,CPSW3=0x00; break;
//		case 4:	CPSW0=pwmL,CPSW1=pwmL,CPSW2=0pwmL,CPSW3=pwmL; break;
		default: break;
	}
	PWMCON0=0xC2;	//啟動PWM,使用新數據,高電平有效
}

void switchNum(unchar n)
{
	unchar value;
	switch (n)
	{
	case 0:	value=0x7E; break;
	case 1:	value=0x0C; break;
	case 2:	value=0xB6; break;
	case 3:	value=0x9E; break;
	case 4:	value=0xCC; break;
	case 5:	value=0xDA; break;
	case 6:	value=0xFA; break;
	case 7:	value=0x0E; break;
	case 8:	value=0xFE; break;
	case 9:	value=0xDE; break;
	default:break;
	}
	P0=value;
}
unchar getStatus(void)			//是否需延時來增加判斷的可靠性
{
	unchar value=0;		
	value=value|Inputsignal0;	//位或		
	value=value<<1;				//左移一位
	value=value|Inputsignal1;	//位或
	value=value<<1;				//左移一位
	value=value|Inputsignal2;	//位或
	value=value<<1;				//左移一位
	value=value|Inputsignal3;	//位或
	//	value=value<<1;				//左移一位
	printf("value is %d",value);
	value=value&0x0F;
	return value;
}
void delay(unsigned int k)
{ 
	unsigned int i,j;
	for(i=0;j<k;i++)
	for(j=0;j<100;j++);
}
void timer0(void) interrupt 5 using 1 
{
/*	CLR TF0
	PUSH ACC
	PUSH PSW
	CLR TR0
	MOV TL0,#00H
	MOV TH0,#23H
	DJNZ B,LOOP
	MOV 25H,21H
	MOV 21H,#00H
	MOV 26H,22H
	MOV 22H,#00H
	MOV 27H,23H
	MOV 23H,#00H
	MOV 28H,24H
	MOV 24H,#00H
	MOV B,#10H
LOOP:
	SETB TR0
	POP PSW
	POP ACC             
	RETI
	/*TF0 = 0;
	*/
}
///////////////////////////////////////////////
//利用timer1和INT1記錄外部中斷次數,來判斷速度
void timer1(void) interrupt 4 using 1
{
	unsigned long x;
	TR1=0;				//暫停定時器1
	OldspeedSignal=NewspeedSignal;
	NewspeedSignal=0;
	TH1=0x00;			//對timer1重新賦值
	TL1=0x00;
	TR1=1;				//開定時器1
}
//////可利用TIMER1當記數器
void int1(void) interrupt 3 using 1
{
	NewspeedSignal++;
}
/*	PUSH ACC
	PUSH PSW
	INC 24H
	MOV A,24H
	CJNE A,#09H,GOON
	MOV 24H,#00H
	INC 23H
	MOV A,23H
	CJNE A,#09H,GOON
	MOV 23H,#00H
	INC 22H
	MOV A,22H
	CJNE A,#09H,GOON
	MOV 22H,#00H
	INC 21H
GOON:
	POP PSW
	POP ACC
	RETI */
//}
/*	ORG 0FD00H
	DB	28H*/


/*void start(void)
{
	EA=1;		//總中斷允許;
	TR0=1;		//啟動定時器0;
	//Timer 0 Run control bit. Set/cleared by software to turn Timer/Counter 0 on/off.
	IT1=1;
	/*Interrupt 1 Type control bit. Set/cleared by software to specify falling edge/low level triggered
	external interrupts.*/
/*	ET0=1;		//定時器0中斷使能
	EX1=1;		//INT1中斷使能
	IP0=0x78;
	IP0H=0x7B;
	/*Each interrupt source can be individually programmed to one of four
	priority levels by setting or clearing bits in the IP0, IP0H, IP1, and
	IP1H registers*/
//}//read out data to adjust which status is?
/*	ACC=0x00;
	AC=Inputsignal0;
	ACC=ACC<<1;
	AC=Inputsignal1;
	ACC=ACC<<1;
	AC=Inputsignal2;
	ACC=ACC<<1;
	AC=Inputsignal3; 
	ACC=ACC<<1;*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一级大片网址| 亚洲国产精品精华液2区45| 欧美成人精品二区三区99精品| 国产精品毛片a∨一区二区三区| 亚洲一区中文在线| 国产成人鲁色资源国产91色综| 欧美久久一二区| 亚洲区小说区图片区qvod| 狠狠网亚洲精品| 一级精品视频在线观看宜春院| 亚洲综合丝袜美腿| 成人一级视频在线观看| 91精选在线观看| 亚洲综合一区二区| 91丝袜美腿高跟国产极品老师 | 九色综合国产一区二区三区| 91丨porny丨国产| 国产网站一区二区三区| 美女视频黄免费的久久| 日韩一区二区免费在线观看| 亚洲在线视频免费观看| 91麻豆免费在线观看| 日本一区二区三区久久久久久久久不 | 成人一二三区视频| 精品国产三级电影在线观看| 久久69国产一区二区蜜臀| 欧美一级xxx| 麻豆精品久久久| 69成人精品免费视频| 日韩精品91亚洲二区在线观看| 欧美亚洲日本国产| 亚洲va在线va天堂| 欧美日韩www| 日韩av二区在线播放| 日韩亚洲欧美综合| 狠狠色丁香久久婷婷综合_中| 精品国产成人系列| 国产传媒欧美日韩成人| 久久在线免费观看| 成人免费毛片高清视频| 国产精品久久久久久久久免费相片 | 国内精品伊人久久久久av一坑 | 欧美精品视频www在线观看| 丝袜美腿亚洲一区| 欧美成人综合网站| 国产乱码一区二区三区| 国产精品久久久久久久久快鸭| 99久久久久久| 午夜精品久久久久| 日韩精品综合一本久道在线视频| 国内国产精品久久| 中文字幕一区二区三区四区不卡| 色一情一乱一乱一91av| 视频一区二区不卡| 久久网这里都是精品| 99免费精品视频| 日韩主播视频在线| 国产情人综合久久777777| 97se亚洲国产综合自在线观| 日韩黄色小视频| 中文字幕精品三区| 欧美精品久久天天躁| 国产电影一区在线| 丝袜亚洲精品中文字幕一区| 国产欧美一区视频| 欧美日本国产一区| 成人av资源在线| 婷婷久久综合九色国产成人| 国产女人水真多18毛片18精品视频| 在线观看视频91| 国产很黄免费观看久久| 亚洲国产综合人成综合网站| 久久精品亚洲精品国产欧美kt∨| 色天天综合久久久久综合片| 老司机午夜精品| 亚洲一区二区av电影| 国产欧美一区二区三区鸳鸯浴 | 99精品黄色片免费大全| 日本视频在线一区| 亚洲天堂免费看| 国产日韩欧美亚洲| 精品剧情v国产在线观看在线| 日本高清不卡视频| 成人在线视频一区二区| 青椒成人免费视频| 香蕉加勒比综合久久| 亚洲精选免费视频| 国产精品伦理在线| 久久影院午夜片一区| 欧美精品在欧美一区二区少妇| av电影在线观看一区| 国产成人夜色高潮福利影视| 日本亚洲欧美天堂免费| 亚洲18色成人| 亚洲最色的网站| 亚洲三级在线免费观看| 国产精品理论在线观看| 久久久国际精品| 久久久综合网站| xfplay精品久久| 久久综合色一综合色88| 欧美精品一区二区久久婷婷| 91精品国产综合久久福利| 欧美日韩国产三级| 欧美日韩性生活| 欧美精品久久一区| 91精品国产综合久久精品| 538prom精品视频线放| 欧美日韩精品一区二区在线播放| 日本韩国一区二区| 在线观看不卡一区| 欧美日韩高清一区| 欧美精品99久久久**| 欧美高清视频一二三区 | 日韩一区有码在线| 亚洲色图.com| 亚洲国产三级在线| 日韩高清欧美激情| 韩国成人在线视频| 粉嫩av一区二区三区粉嫩 | 国产成人免费视频精品含羞草妖精| 麻豆视频观看网址久久| 国产米奇在线777精品观看| 丁香天五香天堂综合| 成人一区在线观看| 色综合久久综合| 欧美日韩一区二区三区高清| 69av一区二区三区| 精品国产乱码久久久久久免费| 久久久噜噜噜久久人人看| 国产精品久久久久久亚洲伦| 一级精品视频在线观看宜春院| 日韩精品乱码av一区二区| 美女视频黄频大全不卡视频在线播放| 久久99精品久久久| www.欧美.com| 欧美日韩中文另类| 久久久亚洲高清| 亚洲一区免费在线观看| 加勒比av一区二区| 波多野结衣的一区二区三区| 欧美午夜寂寞影院| 亚洲精品一区二区三区香蕉 | 91在线视频在线| 欧美日韩成人在线一区| 国产亚洲成aⅴ人片在线观看| 亚洲视频一二区| 久久国产夜色精品鲁鲁99| 成人av在线观| 91精品国产福利| 中文字幕一区二区三区不卡| 亚洲h精品动漫在线观看| 丰满亚洲少妇av| 日韩欧美亚洲国产精品字幕久久久| 中文一区一区三区高中清不卡| 日日夜夜精品免费视频| 国产99久久久国产精品免费看| 欧美精品一二三| 亚洲欧洲韩国日本视频| 美女视频一区在线观看| 91免费观看在线| 国产婷婷一区二区| 日韩高清不卡一区二区三区| 91麻豆swag| 久久久久久久久蜜桃| 日韩激情中文字幕| 欧美又粗又大又爽| 中文字幕电影一区| 国内精品国产三级国产a久久 | 91色九色蝌蚪| 国产拍欧美日韩视频二区| 五月婷婷综合在线| 在线视频一区二区免费| 国产精品久久三| 国产精品系列在线播放| 日韩一区二区免费视频| 亚洲大片免费看| 91国内精品野花午夜精品| 国产精品三级久久久久三级| 韩国在线一区二区| 日韩久久久精品| 免费在线观看视频一区| 在线观看视频欧美| 一区二区三区欧美日| 99视频超级精品| 国产精品大尺度| 不卡视频在线看| 国产精品无遮挡| 成人免费观看视频| 国产精品初高中害羞小美女文| 国产一区二区三区黄视频| 精品粉嫩超白一线天av| 精品一区二区三区在线播放视频| 在线成人高清不卡| 日日夜夜精品视频天天综合网| 欧美日韩成人高清| 免费成人美女在线观看.| 91精品国产91热久久久做人人| 日日摸夜夜添夜夜添亚洲女人| 欧美肥胖老妇做爰|