?? plc51x_fnc.c
字號:
}
else if (a<0xf00)
{ a -= 0xe00;
if (a < _C_num)
{ p = (unsigned char*)rC1 + (a / 8);
}
}
else
{ a -= 0xf00;
if (a < _M8xxx_num)
{ p = (unsigned char*)rM8xxx1 + (a / 8);
}
}
return(p);
}
//-----------------------------------------------------------------------------------------//
// 函數名稱: RD_int_ppp //
// 函數類型: unsigned int RD_int_ppp(unsigned int a) //
// //
// 功能描述: 將并列的n位軟元件點的內容從存儲器內讀入 //
// //
// 入口參數: unsigned int a ...... 讀入軟元件點的起始地址 //
// //
// 出口參數: 并列的n位軟元件點的內容 //
// //
// 全局變量: 無 //
// //
// 調用模塊: char* ADDR_int_ppp(unsigned int a) //
// 模塊描述: 讀入并列的n位軟元件點的起始地址,返回地址絕對指針 //
// //
// //
// 作 者: 許意義 //
// 日 期: 2009年9月26日 //
// 備 注: //
//-----------------------------------------------------------------------------------------//
// 修 改 人: //
// 日 期: //
// 備 注: //
//-----------------------------------------------------------------------------------------//
unsigned int RD_int_ppp(unsigned int a) // (讀入int點內容)
{ unsigned char *p;
unsigned char i, n;
unsigned int Ia;
p = ADDR_int_ppp(a);
n = 0x10;
i = a % 8;
Ia = (unsigned int)(*p++);
n -= (8-i);
for (; n>=8; )
{ Ia = ((unsigned int)(*p++) << 8) | Ia;
n -= 8;
}
if (n != 0)
{ Ia = ((unsigned int)(*p++) << (16-n)) | (Ia >> n);
}
else ;
return Ia;
}
//-----------------------------------------------------------------------------------------//
// 函數名稱: WR_int_ppp //
// 函數類型: void WR_int_ppp(unsigned int a,unsigned int b,unsigned char n) //
// //
// 功能描述: 將并列的n位軟元件點的內容寫入存儲器 //
// //
// 入口參數: unsigned int a ...... 寫入軟元件點的起始地址 //
// unsigned int b ...... 寫入內容 //
// unsigned char n ...... 寫入寬度,n=2,4bit; n=4,8bit; //
// n=6,12bit; n=8,16bit; 依次類推 //
// //
// 出口參數: 返回寫入點地址下一個地址 //
// //
// 全局變量: 無 //
// //
// 調用模塊: char* ADDR_int_ppp(unsigned int a) //
// 模塊描述: 讀入并列的n位軟元件點的起始地址,返回地址絕對指針 //
// //
// //
// 作 者: 許意義 //
// 日 期: 2009年9月26日 //
// 備 注: //
//-----------------------------------------------------------------------------------------//
// 修 改 人: //
// 日 期: //
// 備 注: //
//-----------------------------------------------------------------------------------------//
unsigned int WR_int_ppp(unsigned int a,unsigned int b,unsigned char n) // (寫入int點內容)
{ unsigned char *p;
unsigned char i, j;
unsigned char Ca;
p = ADDR_int_ppp(a);
n <<= 1;
if (n == 0)
{ if ((b&0x01) == 0) *p &= ~(1 << (a % 8));
else *p |= 1 << (a % 8);
a++;
}
else
{ i = a % 8;
if (n <= (8-i))
{ Ca = BYTE_BIT_s[i];
for (j=1; j<n; j++)
{ Ca |= (Ca << 1);
}
*p++ = ((*p & ~Ca) | ((unsigned char)((b<<i) & 0xff) & Ca));
b >>= n;
a += n;
n = 0;
}
else
{ Ca = BYTE_BIT_w[i];
*p++ = ((*p & ~Ca) | ((unsigned char)((b<<i) & 0xff) & Ca));
i = 8-i;
b >>= i;
a += i;
n -= i;
}
for (; n>=8; )
{ *p++ = (unsigned char)(b & 0xff);
b >>= 8;
a += 8;
n -= 8;
}
if (n != 0)
{ Ca = BYTE_BIT_e[n-1];
*p = ((*p & ~Ca) | ((unsigned char)(b & 0xff) & Ca));
a += n;
}
else;
}
return a;
}
//-----------------------------------------------------------------------------------------//
// 函數名稱: char RD_ppp //
// 函數類型: unsigned char RD_ppp(unsigned int a) //
// //
// 功能描述: 將1點軟元件的內容從存儲器內讀入 //
// //
// 入口參數: unsigned int a ...... 讀入軟元件點的起始地址 //
// //
// 出口參數: 1點軟元件的內容 //
// //
// 全局變量: 無 //
// //
// 調用模塊: 無 //
// 模塊描述: //
// //
// //
// 作 者: 許意義 //
// 日 期: 2009年9月26日 //
// 備 注: //
//-----------------------------------------------------------------------------------------//
// 修 改 人: //
// 日 期: //
// 備 注: //
//-----------------------------------------------------------------------------------------//
unsigned char RD_ppp(unsigned int a) // (讀入點內容)
{ unsigned char n;
unsigned char *p;
p = ADDR_int_ppp(a);
n = *p >> (a % 8);
return(n & 0x01);
}
//-----------------------------------------------------------------------------------------//
// 函數名稱: char RD_Mp //
// 函數類型: unsigned char RD_Mp(unsigned int a) //
// //
// 功能描述: 將1點軟元件的內容從擴展 Mp 存儲器內讀入 //
// //
// 入口參數: unsigned int a ...... 讀入軟元件點的起始地址 //
// //
// 出口參數: 1點軟元件的內容 //
// //
// 全局變量: 無 //
// //
// 調用模塊: 無 //
// 模塊描述: //
// //
// //
// 作 者: 許意義 //
// 日 期: 2009年9月26日 //
// 備 注: //
//-----------------------------------------------------------------------------------------//
// 修 改 人: //
// 日 期: //
// 備 注: //
//-----------------------------------------------------------------------------------------//
unsigned char RD_Mp(unsigned int a) // (讀入擴展Mp存儲器內的點內容)
{ unsigned char n=0;
return(n & 0x01);
}
//-----------------------------------------------------------------------------------------//
// 子函數名: unsigned char RD_ppp_old(unsigned int a) //
// //
// 注 釋: 將1點軟元件的內容從 old 備份存儲器內讀入 //
// //
// 入口參數: unsigned int a ...... 讀入軟元件點的起始地址 //
// 出口參數: 1點軟元件的內容 //
//-----------------------------------------------------------------------------------------//
//-----------------------------------------------------------------------------------------//
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -