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

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

?? main.c

?? 51單片機的內存優化和中斷的有用知識
?? C
字號:
//切板機控制程序//
///////////////////
//////////////////////////////////////////////////////////////////////////
//									//							//									//
//作者:鄭玉杰                                                     	//
//Author:Jacky Zheng							//
//國籍:中華人民共和國							//
//Nationality:People's Republic of China				//							//									//
//身份識別碼:320924198602016132					//
//ID NO.:320924198602016132						//									//
//聲明聯系方式:電子郵箱:come_on_yujie@163.com				//
//Contact Information: E-mail:come_on_yujie@163.com			//
//日期:2009年3月1日測試完成						//
//Date:Have been finished on Mar.1,2009.				//									//
//聲明版權:								//
//Copyrights:								//							//									//
//本程序為有版權的程序,未經本人書面同意任何組織和個人不得傳播或使用。	//
//Please do not transmit or use it if you have not the copyrights.	//
//版權歸作者所有。							//
//The copyrights belongs to the author.					//									//
//									//							//									//
//////////////////////////////////////////////////////////////////////////

/*****************************************************************************/

//頭文件加入
#include "REG52.h"
#include <intrins.h>
#include <absacc.h>
#include "VI2C_C51.h"
#include "stdio.h"
#include "STRING.H"
/*****************************************************************************/
//尋址定義
#define UCHAR unsigned char
#define uint unsigned int

/****************************************************************************/
//LCD讀寫使能位
sbit LCDRSPIN = P3^7;
sbit LCDRWPIN = P3^6;//讀寫使能,lcd&da0832
sbit LCDEPIN = P2^6;

/*****************************************************************************/
//輸出
sbit RING_OUT = P2^1;			//RING輸出位

sbit CS = P2^4;				//步進電機使能
sbit CW = P2^5;				//步進電機正反轉標志位
sbit CLK = P2^7;			//脈沖位

 
/*****************************************************************************/
//輸入
sbit LEFT_BIT = P1^0;			//左限位
sbit RIGHT_BIT = P1^1;   		//右限位
sbit SAFE = P2^0;				//光電保護位
/*****************************************************************************/
//按鍵
sbit P3_0 = P3^4;//MANU
sbit P3_1 = P3^3;//ENTER&SAVE
sbit P3_2 = P3^2;//RUN&<-
sbit P3_3 = P3^1;//INC
sbit P3_4 = P3^0;//DEC

/*****************************************************************************/
UCHAR MANU=0;//0:運行使能狀態;1:speed設置狀態;2:length設置狀態。
UCHAR RUN=0;// 運行
UCHAR INC=0;// 增加&向上
UCHAR DEC=0;// 減小&向下
UCHAR LEFT=0;//左移
/*****************************************************************************/
UCHAR SPEED;//速度
uint LENGTH;//行程設置
uint PLUSE;//脈沖量轉換

int COUNT;

bit FLAG = 0;//按鍵一次標志位
bit SAVE = 0;	//保存標志位
//bit Rong = 0;
/*****************************************************************************/
void LcdWDA(unsigned char x,unsigned char y,unsigned char *s);
void Lcd_THREENO(int x,int y,int i);
/*****************************************************************************/
//顯示字符定義
char * MM="MM";
char * R="R";

char * SPD="SPEED:";
char * L="L:";

char * COMPANY =  "PS-3000";
char * CLEAR = "                ";
char * PLACE=" ";
char * GO="<--";
char * BACK="-->";
char * CPS="PCS";

/*****************************************************************************/
//延時
void delaysst(unsigned int i)
{
    UCHAR j;
    for(i; i > 0; i--)
        for(j = 180; j > 0; j--);
}

/*****************************************************************************/
//RING
void RING(void)
{UCHAR S;
for(S=200;S>0;S--)
{
delaysst(1);
RING_OUT=~RING_OUT;
}
}

/*****************************************************************************/
//輸入鍵掃描
KEY()
{FLAG=0;
//設置模
if(MANU!=0)
{
while(P3_0==0)
	{delaysst(5);
	if(P3_0 ==0&&FLAG ==0)
		{
		if(MANU<3)
		MANU++;
		else
		MANU=0;		
		LEFT=0;
		FLAG=1;
		RING();
		}
	}

while(P3_1==0)
	{delaysst(5);
	if(P3_1==0&&FLAG==0)
		{
		SAVE=1;
		MANU=0;
		FLAG=1;		
		}
	}
while(P3_2==0)
	{delaysst(5);
	if(P3_2==0&&FLAG==0)
		{if(LEFT<=3)
		LEFT++;
		else
		LEFT=0;		
		FLAG=1;
		RING();
		}
	}
while(P3_3==0)
	{delaysst(5);
	if(P3_3==0&&FLAG==0)
		{
		INC=1;		
		FLAG=1;
		RING();
		}
	}
while(P3_4==0)
	{delaysst(5);
	if(P3_4==0&&FLAG==0)
		{
		DEC=1;	
		FLAG=1;
		RING();
		}
	}
	FLAG=0;
}


/*****************************************************************************/
//使用模式
if(MANU==0)
{
	while(P3_0==0)
		{delaysst(5);
		if(P3_0==0&&FLAG==0)
			{MANU=1;
			RUN=0;	
			FLAG=1;
			RING();
			}
		}

	while (P3_1==0)
		{
		delaysst(5);
		if (P3_1==0&&FLAG==0)
			{
			SAVE=1;
			MANU=0;	
			FLAG=1;
			
			}
		}

	while (P3_2==0)
		{delaysst(5);
		if(P3_2==0&&FLAG==0)
			{
			RUN=~RUN;
			FLAG=1;
			RING();
			}
		}

 	while (P3_3==0)
		{delaysst(5);
		if(FLAG==0)
		{RING();FLAG=1;}
		if(LEFT_BIT==1&&SAFE==1)
		LcdWDA(11,1,GO);
		while(P3_3==0&&(LEFT_BIT==1||SAFE==1))
			
		{	CW=1;//步進電機正反轉設置-》正轉
			CLK=~CLK;
			delaysst(10000);
			}
		
		//	Lcd_THREENO(11,1,LENGTH);
		}

	while (P3_4==0)
		{delaysst(5);
		if(FLAG==0)
		{RING();FLAG=1;}
		if(RIGHT_BIT==1&&SAFE==1)
		LcdWDA(11,1,BACK);
		while(P3_4==0&&(RIGHT_BIT==1||SAFE==1))
			
		{	CW=0;//步進電機正反轉設置-》正轉
			CLK=~CLK;
			delaysst(10000);
			}
		//	Lcd_THREENO(11,1,LENGTH);
		
	  if(FLAG)
	  Lcd_THREENO(11,1,LENGTH);
		FLAG=0;
}
}
}
 /*****************************************************************************/
//延時
void delay(unsigned int i)
{
    UCHAR j;
    for(i; i > 0; i--)
        for(j = 8000; j > 0; j--);
KEY();
}

 /*****************************************************************************/
//初始化(單片機)
void sercon(void)
{
	SCON  = 0x50;		
	TMOD  |= 0x20;		
	TH1   = 0xFD;      
	TR1   = 1;        	
	TI	  = 1;         	
}

/*****************************************************************************/
//控制LCD
unsigned char XPOS,YPOS;

/*****************************************************************************/
//測忙
void LcdWaitIdle(void)
{  P0=0xff; 
   LCDRSPIN=0; 
   LCDRWPIN=1; 
   LCDEPIN=1;
while((P0&0x80)==0x80);
   LCDEPIN=0;
}

/*****************************************************************************/
//寫指令代碼
void LcdWCN(unsigned char c)
{  LCDRSPIN=0; 
   LCDRWPIN=0; 
   P0=c;
   LCDEPIN=1;
   _nop_(); 
   LCDEPIN=0; 
}

/*****************************************************************************/
//寫指令代碼(測忙)
void LcdWC(unsigned char c)
{  LcdWaitIdle();
   LcdWCN(c); 
}

/*****************************************************************************/
//寫數據
void LcdWD(unsigned char d)
{  LcdWaitIdle(); 
   LCDRSPIN=1; 
   LCDRWPIN=0; 
   P0=d; 
   LCDEPIN=1;
   _nop_(); 
   LCDEPIN=0; 
}

/*****************************************************************************/
//內部數據地址指針定位
void LcdPos(void)
{  XPOS&=0x0f; 
   YPOS&=0x03;
   if(YPOS==0x00)
      LcdWC(XPOS|0x80);
   else if(YPOS==0x01)
      LcdWC((XPOS+0x40)|0x80);
   else if(YPOS==0x02)
      LcdWC((XPOS+0x10)|0x80);
}

/*****************************************************************************/
//lcd初始化
void InitLcd(void)
{  
LCDEPIN=0;
delay(150); LcdWCN(0x38);  /*設置8位格式,2行,2*16*/

   LcdWC(0x08);        /*清除顯示*/
   LcdWC(0x06);       /*設定輸入方式,增量不移位*/
   LcdWC(0x0c);    /*整體顯示,關光標,不閃爍*/
}

/*****************************************************************************/
//字符串顯示
void LcdWDA(unsigned char x,unsigned char y,unsigned char *s) //寫顯示
{
    YPOS=y;
    for(XPOS=x;XPOS<16 && *s != 0;XPOS++)
    {  LcdPos();
      LcdWD(*s);
      s++;
   }
}

/*****************************************************************************/
//數字-》一位數字顯示
void Lcd_ONENO(int x,int y,int i)
{

char LS[2];
LS[0]=i+'0';
LS[1]='\0';
LcdWDA(x,y,LS);
}



/*****************************************************************************/
//數字-》三位數字顯示
void Lcd_THREENO(int x,int y,int i)
{
char g,s,b,l;
char LS[4];
g=i%10;
l=i/10;
s=l%10;
l=l/10;
b=l%10;
LS[0]=b+'0';
LS[1]=s+'0';
LS[2]=g+'0';
LS[3]='\0';
LcdWDA(x,y,LS);
}

/*****************************************************************************/
//數字-》四位數字顯示
void Lcd_FOURNO(int x,int y,int i)
{
char g,s,b,q,l;
char LS[4];
g=i%10;
l=i/10;
s=l%10;
l=l/10;
b=l%10;
l=l/10;
q=l%10;
LS[0]=q+'0';
LS[1]=b+'0';
LS[2]=s+'0';
LS[3]=g+'0';
LS[4]='\0';
LcdWDA(x,y,LS);
}


/*****************************************************************************/
//lcd顯示
Lcdshow()
{
LcdWDA(0,0,COMPANY);
Lcd_FOURNO(9,0,COUNT);
LcdWDA(13,0,CPS);
LcdWDA(0,1,SPD);
LcdWDA(7,1,R);
LcdWDA(9,1,L);
LcdWDA(14,1,MM);
Lcd_ONENO(6,1,SPEED);
Lcd_THREENO(11,1,LENGTH);	
}

/*****************************************************************************/
//光標顯示
void Lcdflash()
{
    if(MANU==1)
    { 	     
	LcdWDA(6,1,PLACE);
	delay(4000);
	Lcdshow();
	delay(4000);
	}

	if(MANU==2&&LEFT==0)
		{
		LcdWDA(13,1,PLACE);
		delay(4000);
		Lcdshow();
		delay(4000);
		}
	if(MANU==2&&LEFT==1)
		{
		LcdWDA(12,1,PLACE);
		delay(4000);
		Lcdshow();
		delay(4000);
		}
	if(MANU==2&&LEFT==2)
		{
		LcdWDA(11,1,PLACE);
		delay(4000);
		Lcdshow();
		delay(4000);
		}
	if(MANU==2&&LEFT>2)
		{
		LEFT=0;
		}

    if(MANU==3)
    { 	     
	LcdWDA(12,0,PLACE);
	LcdWDA(11,0,PLACE);
	LcdWDA(10,0,PLACE);
	LcdWDA(9,0,PLACE);
	delay(4000);
	Lcdshow();
	delay(4000);
	}	 
}
/*****************************************************************************/
//讀數據
void READ()
{
UCHAR X;
UCHAR Y;
IRcvStr(0xA0,0x600,&SPEED,1);

IRcvStr(0xA0,0x620,&X,1);
IRcvStr(0xA0,0x630,&Y,1);
LENGTH=Y%10*100+X%100;

IRcvStr(0xA0,0x640,&X,1);
IRcvStr(0xA0,0x650,&Y,1);
COUNT=Y%100*100+X%100;
}

/*****************************************************************************/
//寫數據
WRIGHT ()
{
UCHAR X;
UCHAR Y;
ISendStr(0xA0,0x600,&SPEED,1);

X=LENGTH%100;
Y=LENGTH/100%10;
ISendStr(0xA0,0x620,&X,1);
ISendStr(0xA0,0x630,&Y,1);

X=COUNT%100;
Y=COUNT/100%100;
ISendStr(0xA0,0x640,&X,1);
ISendStr(0xA0,0x650,&Y,1);

Lcdshow(); 
RING();
}
/*****************************************************************************/
//參數匹配
void MADE()
{
if (MANU==1)
	{if (INC==1)
		{SPEED++;
		INC=0;}
	if (DEC==1)
		{SPEED--;
		DEC=0;}
	}


if (MANU==2)
	{ if(LEFT>2)
		 	{
			 LEFT=0;
		 	}
		if(LEFT==0)
		 	{
			 if (INC==1)
				{LENGTH++;
				INC=0;}
			 if (DEC==1)
				{LENGTH--;
				DEC=0;}
		 	}
		if(LEFT==1)
		 	{
			 if (INC==1)
				{LENGTH+=10;
				INC=0;}
			 if (DEC==1)
				{LENGTH-=10;
				DEC=0;}
		  	}
		if(LEFT==2)
		 	{
			 if (INC==1)
				{LENGTH+=100;
				INC=0;}
			 if (DEC==1)
				{LENGTH-=100;
				DEC=0;}
		  	}
	}

if (MANU==3)
{
 			 if (INC==1)
				COUNT=0;
			 if (DEC==1)
				COUNT=0;


}

if(SPEED<0||SPEED>9)
SPEED=0;

if(LENGTH<0||LENGTH>999)
LENGTH=0;
}

/***************************************************************************/
//電機運行
MOTOR_RUN()
{
UCHAR WAIT;
WAIT=10-SPEED;	// 脈沖占空比設置
if(LEFT_BIT==1&&RIGHT_BIT==1&&SAFE==1)
LcdWDA(11,1,GO);
for(PLUSE=LENGTH*100;SPEED!=0&&PLUSE>0&&RUN;PLUSE--)// 脈沖量設置		
		{	
			CW=1;//步進電機正反轉設置-》正轉
			if(LEFT_BIT==0||RIGHT_BIT==0||SAFE==0)
			{CS=0;RUN=0;}
			else
			CS=1;// 步進電機使能
			CLK=~CLK;
			delay(WAIT);			
		 }

if(LEFT_BIT==1&&RIGHT_BIT==1&&SAFE==1)
LcdWDA(11,1,BACK);

for(PLUSE=LENGTH*100;SPEED!=0&&PLUSE>0&&RUN;PLUSE--)// 脈沖量設置		
		{	
			CW=0;//步進電機正反轉設置-》反轉
			if(LEFT_BIT==0||RIGHT_BIT==0||SAFE==0)
			{CS=0;RUN=0;}
			else
			CS=1;// 步進電機使能
			CLK=~CLK;
			delay(WAIT);			
		 }
Lcd_THREENO(11,1,LENGTH);

COUNT++;
WRIGHT();

RUN=0;
CS=0;
}

/*****************************************************************************/ 
//主程序
main()
{	
	sercon();
	InitLcd();
	CS=0;	
	LcdWDA(0,0,CLEAR);
	LcdWDA(0,1,CLEAR);
    READ();
	MADE();
	delay(2000);
	LcdWDA(0,0,CLEAR);
	LcdWDA(0,1,CLEAR);
    Lcdshow();	
while(1)
   {	
 if(SAVE)
	 {
	 WRIGHT();
	 SAVE=0;
	 }	 
	 KEY();
	 Lcdflash();
	 MADE();
  if(RUN)
	{
	MOTOR_RUN();
	}
   }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品少妇一区二区三区免费观看| 国产在线播放一区| 欧美在线一二三| 亚洲视频网在线直播| 99久久精品费精品国产一区二区| 亚洲国产精品激情在线观看| 成人h动漫精品一区二区| 亚洲视频一区二区免费在线观看| 91蜜桃婷婷狠狠久久综合9色| 亚洲精选在线视频| 91精品国产黑色紧身裤美女| 激情综合网av| 中文字幕免费不卡在线| 日本久久精品电影| 日本网站在线观看一区二区三区| 日韩欧美成人一区二区| 成人免费视频视频在线观看免费| 亚洲乱码国产乱码精品精可以看| 欧美日韩一级片网站| 精品一区二区三区在线观看国产| 国产欧美一区二区精品久导航| 91免费版pro下载短视频| 日日摸夜夜添夜夜添国产精品| 精品国产乱码久久久久久夜甘婷婷| 国产传媒欧美日韩成人| 一区二区三区国产| 精品久久一区二区| 色综合久久精品| 日韩va亚洲va欧美va久久| 国产人久久人人人人爽| 欧美在线视频你懂得| 久久国产人妖系列| 亚洲欧洲制服丝袜| 日韩视频免费观看高清完整版在线观看 | 91污片在线观看| 日本亚洲最大的色成网站www| 欧美韩国日本综合| 欧美精品粉嫩高潮一区二区| 成人黄色国产精品网站大全在线免费观看| 一区二区三区免费在线观看| 欧美xxxx老人做受| 欧美日韩视频专区在线播放| 国产99久久久国产精品潘金| 日本aⅴ精品一区二区三区 | 肉色丝袜一区二区| 国产精品午夜免费| 日韩欧美电影一区| 欧美日韩一区精品| 91在线播放网址| 国产剧情一区在线| 美国十次综合导航| 亚洲小说春色综合另类电影| 国产精品麻豆99久久久久久| 日韩丝袜情趣美女图片| 欧美日韩一区二区在线观看视频| av午夜一区麻豆| 国产伦理精品不卡| 日本一道高清亚洲日美韩| 亚洲成在人线免费| 亚洲精品日韩一| 国产精品麻豆久久久| 2017欧美狠狠色| 日韩欧美中文字幕制服| 欧美日本韩国一区| 欧美日韩国产中文| 欧美色图天堂网| 色综合天天综合网天天狠天天| 成人午夜又粗又硬又大| 国产一区不卡在线| 国产美女av一区二区三区| 国模无码大尺度一区二区三区| 麻豆精品新av中文字幕| 亚洲高清视频在线| 午夜精品久久久久久久蜜桃app| 亚洲精品国产一区二区精华液 | 亚洲国产精品一区二区www在线| 亚洲欧洲中文日韩久久av乱码| 国产精品视频你懂的| 中文字幕第一区第二区| 国产精品三级电影| 国产精品国产三级国产aⅴ无密码| 欧美激情中文不卡| 国产精品麻豆欧美日韩ww| 亚洲日本一区二区三区| 亚洲色图欧美偷拍| 亚洲午夜在线视频| 天天影视色香欲综合网老头| 日韩电影在线观看电影| 青青青爽久久午夜综合久久午夜| 蜜臀av一区二区三区| 狠狠色狠狠色综合日日91app| 狠狠色狠狠色综合日日91app| 国产成人福利片| 99re视频精品| 欧美日韩中文字幕一区二区| 欧美福利视频一区| 2017欧美狠狠色| 一区二区中文字幕在线| 亚洲一区二区在线视频| 秋霞午夜鲁丝一区二区老狼| 国产伦精一区二区三区| 91捆绑美女网站| 欧美剧在线免费观看网站| 欧美大片免费久久精品三p| 久久精品免费在线观看| 亚洲欧美一区二区不卡| 日韩国产高清影视| 国产精品中文有码| 色综合色综合色综合色综合色综合 | 亚洲精品视频在线观看免费| 日本成人在线看| 国产超碰在线一区| 欧美日韩一区久久| 久久久久久久久99精品| 亚洲精品五月天| 激情文学综合插| 91老司机福利 在线| 精品久久久久久久久久久久包黑料| 国产日韩欧美精品一区| 一区二区三区四区高清精品免费观看| 日韩激情av在线| 成人理论电影网| 制服丝袜av成人在线看| 国产精品热久久久久夜色精品三区 | 国产在线不卡一卡二卡三卡四卡| 91视频在线观看免费| 在线不卡的av| 国产精品久久国产精麻豆99网站| 香蕉久久夜色精品国产使用方法| 国产成人av影院| 3751色影院一区二区三区| 国产日韩欧美不卡| 麻豆国产91在线播放| 色婷婷av一区二区三区大白胸 | 九色porny丨国产精品| 色综合一区二区| 久久久久九九视频| 奇米色777欧美一区二区| 色综合久久88色综合天天6| 久久久激情视频| 美女一区二区久久| 欧美调教femdomvk| 亚洲少妇屁股交4| 成人国产精品免费网站| 337p日本欧洲亚洲大胆精品| 婷婷久久综合九色国产成人| 色呦呦网站一区| 国产精品日产欧美久久久久| 国产精品一品二品| 亚洲精品一区二区三区在线观看| 亚洲一线二线三线久久久| av亚洲精华国产精华精华| 日本一区二区免费在线观看视频| 国产综合色视频| 欧美xxxxx牲另类人与| 亚洲福利视频三区| 色婷婷精品久久二区二区蜜臂av| 中文字幕一区二区三区四区不卡| 精品亚洲成a人| 欧美mv日韩mv国产网站app| 蜜乳av一区二区| 日韩一卡二卡三卡| 免费成人深夜小野草| 5858s免费视频成人| 日韩精品1区2区3区| 日韩一区二区在线看| 日韩福利电影在线观看| 欧美一区二区二区| 美腿丝袜亚洲一区| 日韩三级中文字幕| 久久99久久99小草精品免视看| 欧美一区二区国产| 麻豆专区一区二区三区四区五区| 日韩一级高清毛片| 久久99精品国产91久久来源| 欧美成人女星排行榜| 蓝色福利精品导航| 久久久国产精品午夜一区ai换脸| 成人理论电影网| 亚洲蜜臀av乱码久久精品| 欧美综合久久久| 日韩和欧美一区二区三区| 欧美一区二区视频观看视频| 久久精品久久综合| 久久免费视频一区| 白白色亚洲国产精品| 亚洲男人天堂av| 欧美色视频在线| 精品一二三四区| 国产精品久久久久永久免费观看| 色综合久久久网| 日本三级韩国三级欧美三级| 精品成人私密视频| 99久久综合色| 亚洲成av人片在线观看无码| 欧美电视剧免费观看| av一区二区久久| 日本亚洲电影天堂| 国产精品福利av| 6080亚洲精品一区二区|