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

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

?? comm.c

?? 一個正在應用的步進電機控制程序,包括電機的調速,正反,細分,通訊控制
?? C
字號:
/*******************************************************
/*ICC-AVR application builder : 2004-3-11 12:02:11
// Target : atMega16
// Crystal: 8.0000Mhz
通訊模塊  單工雙向485接口
******************************************************/
#include <string.h>
#include <iom16v.h>
#include <math.h>
#include <stdlib.h>
#include <macros.h>
#include <eeprom.h>
#include "eeprom_l.h"
#include "comm.h"
#include "main.h"
#include "delay.h"
#include "key.h"
	 
#pragma data:data
unsigned char state2;
//state2.0 disable_data    //1:輸入數據無效,0有效;
//state2.1 remote		   //1:遙控輸入有效,0:本地輸入有效
//state2.7 p99			   //P99指令使能
unsigned char state1;		   				   					  
//state1.2 PE  
//state1.3 DOR
//state1.4 FE
//state1.5 
//state1.6 
unsigned char pump_tab;		//機器號								   
extern unsigned int speed;
extern unsigned char state_other;
extern unsigned char state0;
extern unsigned char key;
extern unsigned char in_out_number;
extern unsigned char state;
//state0.5接收消息有效標志

/* 通信變量定義 */
char txd_frm[15];         //物理層發(fā)送緩沖區(qū)
char txd_frm_len;          //物理層發(fā)送數據長度
char rxd_frm[15];         //物理層接收緩沖區(qū)
char rxd_frm_len;          //物理層接收數據長度
char tx485_busy;		   //485發(fā)送工作判忙
char txd_cnt;			   //發(fā)送數據計數器
char rxd_cnt;			   //接收數據計數器
char rxd_ins_flag;		   //一幀接收數據中有E8或E9標志
char txd_ins_flag;		   //一幀發(fā)送數據中有E8或E9標志
char txd_ins_data;		   //發(fā)送數據
char rxd_data;			   //接收數據
char mac_txd_th;		   //發(fā)送狀態(tài) 0發(fā)送完畢,1發(fā)送幀頭,2發(fā)送中間數據
char rxd_h_ok;			   //接收開始標志
char fcs1;				   //異或校驗
char rxd_mesg_addr;		   //接收地址
char rxd_mesg_len;		   //應用層接收數據長度
char rxd_mesg[15];		   //應用層接收數據緩沖區(qū)
char txd_mesg_addr;		   //發(fā)送地址
char txd_mesg_len;		   //應用層發(fā)送數據長度
char txd_mesg[15];		   //應用層發(fā)送數據緩沖區(qū)
/*********任務管理*************/
char pri[16];
char act[16];           //任務寄存器
char rxd_llc_job;       //物理層收任務寄存器
char txd_llc_job;       //物理層發(fā)任務寄存器
char rs485_app_job;     //應用層任務寄存器
char att_n_max;
extern struct cal
       {
	   unsigned  int       test_time;
	   unsigned  long int  dispvol;
	   unsigned  long int  test_dispvol;
	   float               dispk;
	   unsigned  long int  run_time;
	   };
extern struct cal cal0;
/*****************************************************************
功能: serial_int
描述: 運行串行口 FSAs.
參數: 無.
返回無.
影響無.
*****************************************************************/
#pragma interrupt_handler serialri_int:iv_USART_RX
#pragma interrupt_handler serialti_int:iv_USART_TX

/* 通信物理層發(fā)送中斷程序模塊 */
void serialti_int(void)
{ 
	char i;
	    UCSRA=RS485_UCSRA|0b01000000;   /*清發(fā)送完中斷標志位*/
		if(mac_txd_th==1)
		{ UDR=0xe9;
		  txd_cnt=0;
		  txd_ins_flag=0;
		  tx485_busy=1;
		  mac_txd_th=2;
		}
		else
		{ if(mac_txd_th==2)
		  { if(txd_ins_flag==1)
		    { txd_ins_flag=0;
			  UDR=txd_ins_data;
			}
			else
			{ if(txd_cnt<=(txd_frm_len-1))
			  { if(txd_frm[txd_cnt]==0xe8||txd_frm[txd_cnt]==0xe9)
			    { txd_ins_flag=1;
                  txd_ins_data=txd_frm[txd_cnt]-0xe8;
                  UDR=0xe8;
				}
				else
				{ UDR=txd_frm[txd_cnt];}
				txd_cnt=txd_cnt+1;
			  }
			  else
			  { tx485_busy=0;
			    mac_txd_th=0;
				PORTC&=~(1<<DE_485);
			  }
			}
		  }
		  else
		  { tx485_busy=0;
		    mac_txd_th=0;
			PORTC&=~(1<<DE_485);
		  }
		}
}

/* 通信物理層接收中斷程序模塊 */
void serialri_int(void)
{
	char i;
	    UCSRA=RS485_UCSRA&0b00111111;   /*清接收完中斷標志位*/
		rxd_data=UDR;
		if(tx485_busy!=1)
		{ if(rxd_data==0xe9)
		  { rxd_h_ok=1;
            rxd_cnt=0;
			rxd_ins_flag=0;
			rxd_frm_len=0;
			fcs1=0;
		  }
		  else
		  { if(rxd_h_ok==1)
		    { if(rxd_data==0xe8)
			  { rxd_frm[rxd_cnt]=0xe8;
			    rxd_ins_flag=1;
			  }
			  else
			  { if(rxd_ins_flag==1)
			    { rxd_ins_flag=0;
				  rxd_frm[rxd_cnt]=rxd_frm[rxd_cnt]+rxd_data;
				}
				else
				{ rxd_frm[rxd_cnt]=rxd_data;}
				fcs1=fcs1^rxd_frm[rxd_cnt];
				if(rxd_cnt==1)
				{ rxd_frm_len=rxd_frm[rxd_cnt]+3;}
				rxd_cnt=rxd_cnt+1;
				if((rxd_cnt>1)&&(rxd_cnt>=rxd_frm_len))
				{ if(fcs1==0)
				  { 
				  act[rxd_llc_job]=1;
				  }
				}
			  }
			}
		  }
		}
}


/*********************************/
void rxd_llc_job1(void)
    { 
	char i;
	   act[rxd_llc_job]=0;
	   if((pump_tab==rxd_frm[0])||(rxd_frm[0]==BROADCAST_ADDR))  //接收指令地址等于設備或廣播地址
	   { rxd_mesg_addr=rxd_frm[0];
	     rxd_mesg_len=rxd_frm[1];
		 for(i=0;i<rxd_mesg_len;i++)
		 { rxd_mesg[i]=rxd_frm[i+2];}
		 act[rs485_app_job]=1;
	   }
	}
/*********************************/
void txd_llc_job1(void)
    { 
	char i,fcs;
	   act[txd_llc_job]=0;
	   txd_frm[0]=txd_mesg_addr;
	   txd_frm[1]=txd_mesg_len;
	   fcs=txd_frm[0]^txd_frm[1];
	   for(i=0;i<txd_mesg_len;i++)
	   { txd_frm[i+2]=txd_mesg[i];
	     fcs=fcs^txd_frm[i+2];
	   }
	   txd_frm_len=txd_mesg_len+3;
	   txd_frm[txd_frm_len-1]=fcs;
	   txd_cnt=0;
	   txd_ins_flag=0;
	   tx485_busy=1;
	   mac_txd_th=2;
	   PORTC|=(1<<DE_485);
	   UDR=0xe9;
	}
	
/*********************************/
void rs485_app_job1(void)
    { 
	char i,fcs;
	unsigned int temp;
	unsigned long int flow_temp;
	unsigned long int rxd_mesg_temp;
	act[rs485_app_job]=0;
	
	   if((rxd_mesg_addr!=BROADCAST_ADDR)&&(rxd_mesg[0]=='R')&&(rxd_mesg[1]=='I')&&(rxd_mesg[2]=='D'))   /* 讀取設備地址命令e9 01 03 52 49 44 5d */
	   { txd_mesg_addr=pump_tab;
	     txd_mesg_len=3;
		 txd_mesg[0]='R';
		 txd_mesg[1]='I';
		 txd_mesg[2]='D';
		 act[txd_llc_job]=1;
		 goto rs485_app_ret;
	   }
	   
	   if((rxd_mesg[0]=='W')&&(rxd_mesg[1]=='I')&&(rxd_mesg[2]=='D'))   /* 設置設備地址命令e9 1f 04 57 49 44 01 40 */
	   { pump_tab=rxd_mesg[3];
		 do {temp=EEPROMwrite(pump_tab_romaddr,pump_tab);}
	     while(temp>0);
		 if(rxd_mesg_addr!=BROADCAST_ADDR)
		 { txd_mesg_addr=pump_tab;
		   txd_mesg_len=3;
		   txd_mesg[0]='W';
		   txd_mesg[1]='I';
		   txd_mesg[2]='D';
		   act[txd_llc_job]=1;
		 }
		 goto rs485_app_ret;
	   }

	   if((rxd_mesg_addr!=BROADCAST_ADDR)&&(rxd_mesg[0]=='R')&&(rxd_mesg[1]=='J'))   // 讀取運行參數命令e9 01 2 52 47 16 
	   { //if(in_out_number<2)
	     //{ 
		   txd_mesg_addr=pump_tab;
		   txd_mesg_len=6;
		   txd_mesg[0]='R';
		   txd_mesg[1]='J';
		   txd_mesg[2]=(speed>>8);
		   txd_mesg[3]=speed;
		   txd_mesg[4]=0;
		   if (state&(1<<RUN_STOP))
		     {txd_mesg[4]|=0b00000001;}
		   else
		     {txd_mesg[4]&=0b11111110;}
		   txd_mesg[5]=0;
		   if (state&(1<<CW_CCW))
		     {txd_mesg[5]&=0b11111110;}
		   else
		     {txd_mesg[5]|=0b00000001;}		 
		   act[txd_llc_job]=1;
		 //}
		 //else
		 //{ act[rs485_app_job]=1;}
		 goto rs485_app_ret;
	   }
       
	   if((rxd_mesg[0]=='W')&&(rxd_mesg[1]=='J'))   // 設置運行參數命令 
	   { if(in_out_number<2)  //內控控制
	     { //delay_cortrol_job();	   
           all_stop();//停止所有運行 
		   rxd_mesg_temp=rxd_mesg[2];//必須如此,rxd_mesg[4]進行常整運算時有錯
		   speed=rxd_mesg_temp*256+rxd_mesg[3];
		   if ((speed==0)||(speed>600))
		     {speed=1;}
		   cal_timer1(speed);
		   EEPROMWriteWord(speed_romaddr,&speed);
		   if (rxd_mesg[4]&0b00000001)
		     {state|=(1<<RUN_STOP);}
		   else
		     {state&=~(1<<RUN_STOP);} 
		   if (rxd_mesg[5]&0b00000001)
		     {state&=~(1<<CW_CCW);}
		   else
		     {state|=(1<<CW_CCW);}
		   do {temp=EEPROMwrite(state_romaddr,state);}
	           while(temp>0);           
		   state_init();
		   
		   if(rxd_mesg_addr!=BROADCAST_ADDR)
		   { txd_mesg_addr=pump_tab;
		     txd_mesg_len=2;
			 txd_mesg[0]='W';
			 txd_mesg[1]='J';
			 act[txd_llc_job]=1;
		   }
		 }
		 goto rs485_app_ret;
	   }        
rs485_app_ret:;
	}
/*********************************/

/* 主調度任務程序模塊 */
void job_att(char step)
	{
	char i,crrt_jn;
	   if(step==0) 
	   { for(i=1;i<=31;i++)
	     { pri[i]=0;
		   act[i]=0;
		 }
		 rxd_llc_job=9;
		 pri[rxd_llc_job]=95;
		 txd_llc_job=10;
		 pri[txd_llc_job]=94;
		 rs485_app_job=11;
		 pri[rs485_app_job]=93;
		 att_n_max=12;
	   }
	   else
	   { crrt_jn=0;
		 for(i=1;i<=att_n_max;i++)
	     { if((act[i]!=0)&&(pri[i]>pri[crrt_jn]))
		   { crrt_jn=i;}
		 }
		 switch (crrt_jn)
		 { 
		   case 9: rxd_llc_job1();
		   break;
		   case 10: txd_llc_job1();
		   break;
		   case 11: rs485_app_job1();
		   break;
		   case 12: break;
		 }
	   }	
	}

/*
串口初始化   
*/         
void serial_init (void)  
{
  	  UBRRH=RS485_BAUDH;
	  UBRRL=RS485_BAUDL;
	  UCSRA=RS485_UCSRA;
	  UCSRC=RS485_UCSRC;
	  UCSRB=RS485_UCSRB;
	  UCSRB=UCSRB|0b00011000;   /* 允許接收、發(fā)送 */
      state1=0;
      DDRC|=(1<<DE_485);
      PORTC&=~(1<<DE_485);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱淫av一区二区三区| 99vv1com这只有精品| 不卡视频一二三| 日韩免费一区二区| 亚洲一区二区综合| k8久久久一区二区三区 | fc2成人免费人成在线观看播放| 欧美日韩视频专区在线播放| 国产精品毛片无遮挡高清| 蜜桃视频在线观看一区| 欧美日韩日本视频| 亚洲美女视频在线| 成人av资源下载| 国产喂奶挤奶一区二区三区| 男人的天堂久久精品| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 日本一区二区三区视频视频| 老司机一区二区| 7777精品伊人久久久大香线蕉的 | 国产精品日韩成人| 狠狠色丁香婷综合久久| 91麻豆精品国产无毒不卡在线观看| 亚洲婷婷国产精品电影人久久| 国产成人自拍高清视频在线免费播放| 日韩欧美卡一卡二| 五月激情综合色| 欧美人动与zoxxxx乱| 天天av天天翘天天综合网| 欧美三级资源在线| 亚洲无线码一区二区三区| 色综合中文综合网| 一本到高清视频免费精品| 国产精品麻豆网站| 波多野结衣在线aⅴ中文字幕不卡| 国产拍揄自揄精品视频麻豆| 国产精品一区专区| 国产亚洲va综合人人澡精品| 狠狠色丁香久久婷婷综| 久久婷婷成人综合色| 国产成人免费视频网站| 国产女人18水真多18精品一级做| 高清日韩电视剧大全免费| 国产精品国产精品国产专区不片| 不卡一区二区中文字幕| 蜜桃视频一区二区三区| 国产91在线看| 亚洲欧美怡红院| 在线免费观看视频一区| 五月天亚洲婷婷| 日韩欧美亚洲另类制服综合在线| 韩国精品久久久| 成人欧美一区二区三区| 色美美综合视频| 免费成人av资源网| 国产欧美精品一区| 欧美主播一区二区三区| 毛片av一区二区三区| 欧美极品另类videosde| 91成人免费网站| 久久精品久久久精品美女| 国产精品三级av| 欧美剧情片在线观看| 激情综合色综合久久综合| 国产精品婷婷午夜在线观看| 欧洲精品一区二区| 精品一区二区免费| 亚洲免费观看高清完整版在线观看 | 亚洲成av人片一区二区梦乃| 欧美大片一区二区三区| av不卡在线观看| 青青草国产成人99久久| 最新国产成人在线观看| 欧美一卡二卡在线| 成人黄色电影在线| 日本vs亚洲vs韩国一区三区| 中文字幕亚洲一区二区va在线| 欧美日韩在线播放三区四区| 丰满岳乱妇一区二区三区| 亚洲电影一区二区| 中国av一区二区三区| 91精品国产色综合久久不卡电影| 不卡欧美aaaaa| 韩国一区二区视频| 午夜精品久久久久久久蜜桃app| 国产日韩欧美亚洲| 91精品欧美久久久久久动漫| 色综合久久久久久久久久久| 国产一区二区在线电影| 五月天中文字幕一区二区| 亚洲丝袜制服诱惑| 久久久久99精品国产片| 欧美电影在哪看比较好| 91黄视频在线| 91色porny在线视频| 国产精品主播直播| 久久国产三级精品| 性做久久久久久久免费看| 亚洲欧美日韩久久| 自拍偷拍亚洲欧美日韩| 亚洲国产精品99久久久久久久久| 精品国精品国产尤物美女| 欧美一卡在线观看| 91精品国产91热久久久做人人| 97se亚洲国产综合在线| av中文字幕在线不卡| www.欧美色图| 成a人片国产精品| av中文字幕在线不卡| 成人国产在线观看| av欧美精品.com| 91首页免费视频| 91丨九色丨黑人外教| 成人久久18免费网站麻豆 | 欧美日韩国产精选| 欧美日韩在线播| 欧美一区二区三区人| 欧美夫妻性生活| 欧美一区二区三区视频在线| 成人毛片老司机大片| 国产精品一色哟哟哟| 国产一区二区电影| 成人激情动漫在线观看| 懂色一区二区三区免费观看 | 亚洲与欧洲av电影| 成人欧美一区二区三区黑人麻豆| 欧美大片在线观看一区| 日韩午夜精品视频| 欧美一区二区三区不卡| 在线综合+亚洲+欧美中文字幕| 欧美久久免费观看| 日韩三级在线观看| 精品久久一区二区三区| 欧美videos中文字幕| 日韩欧美国产三级电影视频| 3atv一区二区三区| 国产亚洲一区二区三区在线观看| 日韩视频国产视频| 26uuu另类欧美亚洲曰本| 久久午夜羞羞影院免费观看| 欧美精品免费视频| 国产欧美一区二区精品秋霞影院| 国产清纯美女被跳蛋高潮一区二区久久w| 久久久久国产精品人| 国产视频视频一区| 日本一区二区三区久久久久久久久不| 成人欧美一区二区三区| 亚洲成人自拍偷拍| 麻豆成人91精品二区三区| 国产一区二区三区免费| 丁香一区二区三区| 欧美在线免费观看视频| 91精品欧美一区二区三区综合在| 精品久久久久久综合日本欧美| 中文字幕在线免费不卡| 一区二区三区四区蜜桃 | 亚洲精选视频在线| 亚洲国产一区二区三区 | 在线免费观看日本欧美| 日韩欧美在线观看一区二区三区| 久久久久久夜精品精品免费| 国产精品久久久久久妇女6080| 亚洲一区二区av电影| 国产一区二区不卡老阿姨| 91猫先生在线| 欧美一激情一区二区三区| 久久精品综合网| 亚洲午夜久久久久久久久电影网| 国产精品一区在线观看乱码 | 五月婷婷色综合| 国产麻豆91精品| 欧美色涩在线第一页| 精品不卡在线视频| 亚洲尤物在线视频观看| 国产一区二区三区在线观看免费| 91丨porny丨最新| 日韩欧美国产wwwww| 亚洲欧美欧美一区二区三区| 久久电影网电视剧免费观看| 国产成人免费高清| 欧美xxxx老人做受| 亚洲午夜久久久久中文字幕久| 国产成人综合在线播放| 欧美色图激情小说| 一区av在线播放| 国产成人午夜精品影院观看视频 | 欧美日韩免费观看一区二区三区| 国产精品美女久久久久久2018| 美腿丝袜亚洲三区| 91精品91久久久中77777| 久久婷婷成人综合色| 国产一区视频网站| 91精品国产麻豆| 亚洲国产综合在线| 一本到不卡精品视频在线观看| 成人免费一区二区三区视频| 国产精品 欧美精品| 欧美大片日本大片免费观看| 日本最新不卡在线| 精品国一区二区三区| 三级亚洲高清视频|