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

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

?? main_back1.c

?? ucos II操作系統的源代碼。程序完整
?? C
?? 第 1 頁 / 共 2 頁
字號:
/****************************************Copyright (c)**************************************************
**                               蘇州江海通訊發展實業有限公司
**                                        設計三室 
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: main.c
**創   建   人: 黃凱
**最后修改日期: 2006年11月16日
**描        述: 27號機控制軟件
**操作系統版本:uc/os-II v2.52 
**             
**--------------歷史版本信息----------------------------------------------------------------------------
** 創建人: 黃凱
** 版  本: v1.0
** 日 期: 2006年11月10日
** 描 述: 原始版本
**
**------------------------------------------------------------------------------------------------------
** 修改人: 黃凱
** 版  本: v1.1
** 日 期: 2006年11月14日
** 描 述: 按照標準c格式修改書寫格式
**
**--------------當前版本修訂------------------------------------------------------------------------------
** 修改人: 黃凱
** 日 期: 2006年11月17日
** 描 述: 
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

#include "config.h"
#include "stdlib.h"

#define  FreSaveAddr            3
#define  PowSaveAddr            5
#define  FreConvAddr            20
#define  TASK_STK_SIZE          64
#define  Buffer_Size     	    64

#define  test_on()      { IO1SET = 1<<24; }
#define  test_off()     { IO1CLR = 1<<24; }

typedef struct _flags {
		unsigned  warn		   	: 1;		//告警標志(0: 正常; 1: 告警)							
		unsigned  key			: 1;		//鍵盤狀態(0: 按下; 1: 釋放)						
		unsigned  test			: 1;		//環測標志(0: 拆環; 1: 環測)
		unsigned  fre			: 1;		//頻率改變(0: 未變; 1: 改變)					
		unsigned  pow			: 1;		//功率改變(0: 未變; 1: 改變)			
		unsigned  test_change	: 1;		//環測事件(0: 無  ; 1: 有)	
		unsigned  state	        : 1;		//設備狀態(0: 定頻; 1: 跳頻) 
		unsigned  commok        : 1;        //通信標志(0: 失敗; 1: 成功) 
		unsigned  change        : 1;		//狀態改變(0: 未變; 1: 改變) 	
	} BITS;
BITS  flgs;

struct fre0 {
			INT8U h;
			INT8U l;
			} fre ;
struct back0 {
			INT8U ffre; 
			INT8U ppow;
			} back ;

INT8U fre_char[41]=  {		//頻率控制字
					  0X00,0X01,0X02,0X03,0X04,0X05,0X06,0X07,
    				  0X08,0X09,0X0A,0X0B,0X0C,0X0D,0X0E,0X0F,
    				  0X10,0X11,0X12,0X13,0X14,0X15,0X16,0X17,
    				  0X18,0X19,0X1A,0X1B,0X1C,0X1D,0X1E,0X1F,
    				  0X20,0X21,0X22,0X23,0X24,0X25,0X26,0X27,
    				  0X28,
    				  };


INT8U warn_info;	//保存告警信息	
INT8U fre_value;	//保存頻率信息
INT8U pow_value;	//保存功率信息
INT8U test_value;	//保存環測信息
INT8U fre_char2[Buffer_Size];//保存跳頻表
INT32U fre_cnt;		//保存跳頻計數

OS_STK   SendDataStk[TASK_STK_SIZE];
OS_STK   ReceDataStk[2*TASK_STK_SIZE];
OS_STK   InfoGatherStk[TASK_STK_SIZE];
OS_STK   FreConversionStk[TASK_STK_SIZE];
OS_STK   Each10sCommStk[TASK_STK_SIZE];

OS_EVENT *SendMbox;
OS_EVENT *ReceMbox;
OS_EVENT *FreSem;

void  SendData(void *pdata);
void  ReceData(void *pdata);
void  FreConversion(void *pdata);
void  InfoGather(void *pdata);
void  Each10sComm(void *pdata);


void CtrlOut(INT8U ctrl_no);
void LedRefresh(INT8U fresh_no);
void LpcInitialize(void);
void KeyDecode(INT8U key_value);
void FrePowChange(void);
void Eint3Exception(void);
void FreConverInfo(void);
void WarnInfo(void);
void KeyInfo(void);
void ReceDataDecode(INT8U *pp);
void I2cE2rom(INT8U SaveAddr, INT8U const *SaveData, INT8U SaveNo);
/*********************************************************************************************************
** 函數名稱: SendData
** 功能描述: 發送數據
** 輸 入: pdata 任務附加參數(指針)
** 輸 出: 無
** 全局變量: flag.commok
** 調用模塊: OSMboxPend
**
** 作 者: 黃凱
** 日 期: 2006年11月10日
**-------------------------------------------------------------------------------------------------------
** 修改人: 黃凱
** 日 期: 2006年12月06日
** 備  注:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  SendData(void *pdata){ 
	INT8U err;
	INT8U cnt;   
	INT8U *psd;	
	INT8U Sbuf[10];
	uint16 x;

    pdata = pdata;                                                      
    while (1){
        psd = (INT8U *)OSMboxPend(SendMbox, 0, &err);         /* 接收數據 */
        cnt = *psd + 4;
        memcpy(Sbuf, psd, cnt);

        flgs.commok = 0;
        while (!flgs.commok){
        	err = 0x06;			
			UART_write(0, &err, 1, 3);
			UART_read(0, &err, 1, 4);
        	if (err == 0x00){      	
        		psd = Sbuf;		
				Sbuf[6]=UART_write(0, psd, cnt, 3);
				//UART_write(1, psd, cnt, 2);//debug
        		
        		x=UART_read(0, &err, 1, 4);
        		Sbuf[7] = (uint8)(x &0x00ff);
        		Sbuf[8] = (uint8)( (x&0xff00)>>8);
        		Sbuf[9] =UART_write(1, Sbuf, 8, 3);//debug
        		if (err == 0x0f){
					flgs.commok = 1;					
					break;
				} 
				flgs.commok = 0;
				OSTimeDly(20);						
        	}
        	else 
        	{
        	OSTimeDly(40);	
        	} 
        }
     psd = (INT8U *)0; 
     //U0IER = U0IER | 0x01;  
    }
}
/*********************************************************************************************************
** 函數名稱: ReceData
** 功能描述: 從UART0接收數據
** 輸 入: pdata        任務附加參數(指針)
** 輸 出: 無
** 全局變量: 無
** 調用模塊: GetCRC16
**
** 作 者: 黃凱
** 日 期: 2006年11月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void ReceData(void *pdata){
	INT8U err;	
    INT8U Buf[Buffer_Size];
    INT16U x;
    INT16U rxlen;
    INT16U buflen;
    uint8 *pp;
    pdata = pdata;             /* 避免編譯警告 */
	
    while (1){  			
    	do
    	{
    		Buf[0] = 0;
    		UART_read(0, Buf, 1, 0);
    	}while (Buf[0] != 0x06);
 
 		err = 0x00;
    	UART_write(0, &err, 1, 3);
    	
    	UART_read(0, Buf, 1, 4);	//receive length
    	//UART_read(0, &Buf[1], Buf[0]+3, 15);
    	//**
    	x = 0;
    	buflen = ((Buf[0]+3) > Buffer_Size) ? Buffer_Size : (Buf[0]+3);
    	pp = &Buf[1];
    	do
    	{
    		rxlen = UART_read(0, pp+x, buflen-x, 15);
    		x += rxlen;
		} while ((buflen-x)>0);
		/**/
		UART_write(1, Buf, Buf[0]+4, 15);
		if (GetCRC16(Buf,(INT16U)(Buf[0]+4)) == 0){ 
			err = 0x0f;			
			UART_write(0, &err, 1, 3);
			ReceDataDecode(Buf);					
		} else {
		    err = 0xff;			
			UART_write(0, &err, 1, 3);
			
    	}
	}
}
	
/*********************************************************************************************************
** 函數名稱: FreConversion
** 功能描述: 跳頻服務程序
** 輸 入: pdata        任務附加參數(指針)
** 輸 出: 無
** 全局變量: 無
** 調用模塊: OSMboxCreate,OSSemCreate
**
** 作 者: 黃凱
** 日 期: 2006年11月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  FreConversion(void *pdata){
    INT8U *cp;
    INT8U err;
	
    pdata = pdata;  
	
	LpcInitialize();
	
    while(1){
        OSSemPend(FreSem, 0, &err);         /* 等待跳頻開始 */
        //************
        cp = fre_char2;
        fre_value = *(cp + (fre_cnt % fre_char[0] + 1));
        if (fre_cnt == 0xffffffff){
			  fre_cnt = 0;
	  	} else {
			 fre_cnt++;
		}
        ////CtrlOut(0x03);  
        /***************/                                       
    }
}

/*********************************************************************************************************
** 函數名稱: Each10sComm
** 功能描述: 每隔10s發送一次,來表征設備正在工作
** 輸 入: pdata        任務附加參數(指針)
** 輸 出: 無
** 全局變量: 無
** 調用模塊: 無
**
** 作 者: 黃凱
** 日 期: 2006年11月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void Each10sComm(void *pdata){	
	INT8U err;
	pdata = pdata ;
	while (1){
		OSTimeDly(10*OS_TICKS_PER_SEC);
		err = 0x18;
		UART_write(0, &err, 1, 3);

	}
}
/*********************************************************************************************************
** 函數名稱: ReceDataDecode
** 功能描述: 處理接收到的數據
** 輸 入: pp: 接收數據的指針       
** 輸 出: 無
** 全局變量: 無
** 調用模塊: 無
**
** 作 者: 黃凱
** 日 期: 2006年11月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/    		
void ReceDataDecode(INT8U *pp){	
			if (*(pp+1) == 0x0a){	//跳頻			
				*(pp + 1) = *pp;
				memcpy(fre_char2, (pp + 1), (*pp+1));	//更新跳頻表	
				I2cE2rom(FreSaveAddr, (pp + 1), *pp);	
				UART_write(1, fre_char2, fre_char2[0], 15);			
			} else if (*(pp+1) == 0x0c){
				if (*(pp+2) == 0xf1){	//test
					flgs.test = 1;
					pow_value = 1;
					test_on();
				}	
				if (*(pp+2) == 0xf2){	//work
					flgs.test = 0;
					pow_value = back.ppow;
					test_off();
				}	
				LedRefresh(0x0f);
				//CtrlOut(0x0f);				
			}
}

/*********************************************************************************************************
** 函數名稱: I2cE2rom
** 功能描述: E2rom燒寫
** 輸 入: SaveAddr:數據保存地址; 
**		   SaveData:指向被保存數據的指針; 
**         SaveNo  :需保存數據的個數      
** 輸 出: 無
** 全局變量: 無
** 調用模塊: 無
**
** 作 者: 黃凱
** 日 期: 2006年11月10日
**-------------------------------------------------------------------------------------------------------
** 修改人: 黃凱
** 日 期: 2006年11月16日
** 備  注:改正CAT1025燒寫時地址錯誤
**-------------------------------------------------------------------------------------------------------
** 
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/    		
void I2cE2rom(INT8U SaveAddr, INT8U const *SaveData, INT8U SaveNo){
	INT8U i;
	INT8U x;
	INT8U y;
	INT8U *ptr;
	INT8U I2ctemp[17];
	 
	x = SaveNo / 16;
	y = SaveNo % 16;
	ptr = I2ctemp;

	for (i=0; i<x; i++){		
		*ptr = SaveAddr + 16*i;
		memcpy((ptr + 1), (SaveData + 16*i + 1), 17);
		I2cWrite(CAT1025, I2ctemp, 17);	//write eerom
		OSTimeDly(OS_TICKS_PER_SEC / 100 + 1);
	}	
	if (y != 0){
		*ptr = SaveAddr + 16*x;
		memcpy((ptr + 1), (SaveData + 16*x +1), y);
		I2cWrite(CAT1025, I2ctemp, (y + 1));
		OSTimeDly(OS_TICKS_PER_SEC / 100 + 1);
	}	
}		
	
/*********************************************************************************************************
** 函數名稱: LpcInitialize
** 功能描述: 芯片初始化
** 輸 入: 無        
** 輸 出: 無
** 全局變量: 無
** 調用模塊: 無
**
** 作 者: 黃凱
** 日 期: 2006年11月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/    		
void LpcInitialize(void){
	INT8U cp = 0;
		
	FreSem = OSSemCreate(NULL); 
    SendMbox = OSMboxCreate(NULL); 
	ReceMbox = OSMboxCreate(NULL); 
	                        
    if (SendMbox == NULL){
	     while (1);
	}
	//**********************
	if (FreSem ==  NULL) {
		while (1);
	}
	if (ReceMbox == NULL) {
	    while (1);
	}
	/*******************/
	TargetInit(); 
	
	UART_Init(1);
    UART_open(1, 19200, 8, 'n', 0); 
	UART_Init(0);
    UART_open(0, 9600, 8, 'n', 0); 
    	
	PINSEL1 = (PINSEL1 & 0xcfffffff) | (1<<29);//P0.30 is used as EINT3 
	EXTMODE = 0X08;
	EXTPOLAR = 0X08;
	
	//IO0DIR  = 0X3d233F00;
	IO0DIR  = 0X3d230000;
	IO1DIR  = 0X0F << 16;
    IO1DIR  |=  0X03 << 24;//p1.16:19,P1.24:25 output
    
    cp = FreSaveAddr;
    I2cRead(CAT1025, &fre_value, &cp, 1, 1);
    cp = PowSaveAddr;
    I2cRead(CAT1025, &pow_value, &cp, 1, 1);
    if ((fre_value > 0x29) || (fre_value == 0x00))
    {
    	fre_value = 0x01;
    }
    if (pow_value > 0x04)
    {
    	pow_value = 0x01;
    }   
    back.ffre = fre_value;
	back.ppow = pow_value;
    ////CtrlOut(0x03);
	LedRefresh(0x03);
    //CtrlOut(0x0f);
	LedRefresh(0x0f);
    cp = FreConvAddr;
    I2cRead(CAT1025, fre_char2, &cp, 1, 1);	//length
    cp = FreConvAddr +1;
    I2cRead(CAT1025, &fre_char2[1], &cp, 1, fre_char2[0]);
	
}

/*********************************************************************************************************
** 函數名稱: FreConverInfo
** 功能描述: 定頻,跳頻判斷
** 輸 入: 無        
** 輸 出: 無
** 全局變量: 無
** 調用模塊: 無
**
** 作 者: 黃凱
** 日 期: 2006年11月10日

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青青草国产成人av片免费| 亚洲成人精品影院| 欧美性色欧美a在线播放| 美腿丝袜亚洲综合| 亚洲欧美在线视频观看| 69av一区二区三区| 成人99免费视频| 青青草伊人久久| 一区二区三区精品在线观看| 久久综合久久综合久久| 欧美日韩国产精选| 99精品黄色片免费大全| 国产在线一区观看| 亚洲444eee在线观看| 亚洲欧美另类图片小说| 国产亚洲午夜高清国产拍精品| 欧美日韩激情一区二区| 91免费看视频| 懂色中文一区二区在线播放| 麻豆91小视频| 亚州成人在线电影| 亚洲欧美aⅴ...| 久久精品在这里| 欧美变态tickling挠脚心| 欧美私人免费视频| 91老司机福利 在线| www.综合网.com| 国产成人在线电影| 国产一区二区成人久久免费影院| 琪琪一区二区三区| 日韩国产成人精品| 亚洲成人免费视频| 亚洲福利一区二区| 亚洲一区在线视频观看| 亚洲精品国产无套在线观| 国产精品久久久久久久久快鸭| 国产免费成人在线视频| 久久男人中文字幕资源站| 欧美精品一区二区三区高清aⅴ | 亚洲成人tv网| 樱花草国产18久久久久| 一区二区三区蜜桃网| 亚洲精品国久久99热| 亚洲综合在线免费观看| 亚洲一区二区在线免费观看视频| 一区二区三区不卡视频| 亚洲午夜一区二区三区| 午夜影视日本亚洲欧洲精品| 亚洲国产精品精华液网站| 亚洲国产视频在线| 香蕉成人伊视频在线观看| 美女在线视频一区| 韩国三级电影一区二区| 国产乱码字幕精品高清av| 国产精品一级黄| 成人h动漫精品一区二区| 91丨九色丨蝌蚪富婆spa| 在线免费精品视频| 3d成人动漫网站| 精品国产乱码久久久久久1区2区 | 国产电影一区二区三区| 成人性生交大合| 91免费版在线| 欧美日韩亚洲国产综合| 欧美成人官网二区| 欧美韩国一区二区| 亚洲免费高清视频在线| 三级在线观看一区二区| 韩国精品久久久| 99re这里都是精品| 欧美精品tushy高清| 久久综合成人精品亚洲另类欧美| 中文字幕一区三区| 亚洲大尺度视频在线观看| 精品在线播放午夜| av电影一区二区| 在线91免费看| 久久精品免视看| 亚洲精品免费电影| 久久国产尿小便嘘嘘尿| thepron国产精品| 欧美美女视频在线观看| 国产欧美日韩精品在线| 一区二区三区精品视频| 国产一区美女在线| 欧美性生活久久| 欧美经典一区二区| 午夜免费久久看| 成人一道本在线| 欧美军同video69gay| 国产精品伦理在线| 欧美aaaaaa午夜精品| 99精品国产热久久91蜜凸| 日韩欧美国产不卡| 亚洲自拍偷拍九九九| 成人深夜视频在线观看| 日韩一区二区三区高清免费看看| 国产精品理论在线观看| 日韩av电影天堂| 色婷婷综合久久久中文字幕| 久久久久久久性| 天天色综合天天| 91色.com| 国产欧美日韩卡一| 精品亚洲porn| 欧美精品v日韩精品v韩国精品v| 亚洲四区在线观看| 国产在线精品免费| 日韩一级免费观看| 亚洲国产aⅴ成人精品无吗| 成人免费视频视频在线观看免费 | 午夜精品福利一区二区三区蜜桃| 成人免费视频网站在线观看| 精品福利在线导航| 日韩精品五月天| 欧美日韩中文一区| 亚洲精品写真福利| 国产ts人妖一区二区| 精品乱人伦小说| 日韩av电影免费观看高清完整版| 欧美三级在线播放| 亚洲欧美偷拍三级| www.欧美亚洲| 国产精品福利一区| 国产成人丝袜美腿| 久久品道一品道久久精品| 久久99精品久久久久| 日韩欧美卡一卡二| 秋霞午夜av一区二区三区| 欧美一级片免费看| 视频一区中文字幕国产| 欧美日韩免费一区二区三区 | 国产成人一区二区精品非洲| 欧美精品一区二区三| 极品销魂美女一区二区三区| 日韩精品一区二区三区中文精品| 日本美女一区二区三区视频| 欧美一区二区三区在线观看 | 久久亚洲精品国产精品紫薇| 精品在线你懂的| 久久久久久久久久久久久女国产乱| 久久99热这里只有精品| 欧美一级生活片| 精品一区二区三区蜜桃| 久久久久一区二区三区四区| 国产成人免费9x9x人网站视频| 国产午夜精品一区二区三区视频 | 欧美日韩国产不卡| 首页综合国产亚洲丝袜| 日韩精品一区二区三区视频在线观看| 日本不卡一二三区黄网| 欧美sm极限捆绑bd| 成人一道本在线| 亚洲最大成人综合| 91精品国产综合久久久久久| 久久精品国产亚洲5555| wwww国产精品欧美| www.66久久| 天天色综合成人网| 久久久www免费人成精品| 成人综合婷婷国产精品久久| 亚洲精品视频自拍| 在线播放亚洲一区| 国产一区二区三区电影在线观看| 国产精品女上位| 欧美亚洲一区二区在线观看| 蜜桃精品在线观看| 国产欧美日韩亚州综合| 日本精品视频一区二区三区| 亚洲国产精品影院| 久久综合色婷婷| 在线区一区二视频| 精品一区二区三区免费视频| 中文字幕一区二区三区在线观看 | 在线观看免费亚洲| 青草av.久久免费一区| 欧美激情一区二区三区不卡| 欧洲精品一区二区| 老色鬼精品视频在线观看播放| 国产精品嫩草99a| 欧美色视频在线| 国产91在线|亚洲| 亚洲成人7777| 中文字幕高清一区| 欧美一区二区视频观看视频 | 在线观看91精品国产入口| 九九国产精品视频| 一区二区视频免费在线观看| 精品国产免费人成电影在线观看四季| 99久久精品国产观看| 免费xxxx性欧美18vr| 亚洲情趣在线观看| 欧美va亚洲va在线观看蝴蝶网| 色哟哟一区二区三区| 久久超碰97人人做人人爱| 亚洲欧美日韩国产一区二区三区| 精品播放一区二区| 欧美日韩免费不卡视频一区二区三区| 国产成人精品综合在线观看| 人人精品人人爱|