void SetDipAddress(unsigned char Address) { BTN_S0_LAT_BIT = false; BTN_S1_LAT_BIT = false; BTN_S2_LAT_BIT = false; if (chkbit(Address,0)) BTN_S0_LAT_BIT = true; if (chkbit(Address,1)) BTN_S1_LAT_BIT = true; if (chkbit(Address,2)) BTN_S2_LAT_BIT = true; }
//****************************************************************************** //JDunne 5/27/07 - Converted routine from assembly to C. (used to be called SEND_TO_LATCHES) //------------------------------------------------------------------------------ void SendDataToShiftReg(unsigned char dataToSend) { unsigned char DataCounter; //SEND_SPEC_TO_LATCHES DataCounter = 8; //Load number of bits to be transfered // bcf SRCK_LAT_BIT //Control clock signal, also prevent IIC start SHIFTREG_RCK_LAT_BIT = true; //Flush out garbage SHIFTREG_RCK_LAT_BIT = false; //STL_TRANSMIT_BIT do { SHIFTREG_SRCK_LAT_BIT = false; //Clear strobe pin if (!chkbit(dataToSend, 7)) { //MSB high? SHIFTREG_SER_IN_LAT_BIT = false; //No, set data signal low } else { //MSB low? SHIFTREG_SER_IN_LAT_BIT = true; //No, release data signal } dataToSend <<=1; //Shift next bit to MSB position SHIFTREG_SRCK_LAT_BIT = true; //STL_RESET_CLOCK_LEVEL } while (--DataCounter!=0); //All 8 bits transfered? No, go transfer next bit //STL_STROBE SHIFTREG_RCK_LAT_BIT = true; //Strobe the data //STL_STROBE_DELAY for (DataCounter = LATCH_STROBE_DELAY; DataCounter !=0; DataCounter--); //Pause for data transfer from external latch_1's input to its output SHIFTREG_RCK_LAT_BIT = false; SHIFTREG_SER_IN_LAT_BIT = true; //Release data signal SHIFTREG_SRCK_LAT_BIT = true; //Release serial clk }
int Test::GetWillBeTestedType(void) { int type =0; IED_DATABASE::YP_DATA *Sample = &IedDb.Sample1[0]; int TestType[] = {S_TEST_WATER,S_TEST_VOL,S_TEST_ASH}; for(int j=0;j<3;j++) { //完成项目被跳过 // bool bBreak = FALSE; for(int i=0;i<IedDb.DownloadWorkParam.m_btMaxSampleCnt;i++) { if(chkbit(Sample[i].cCSta,TestType[j])) // { bBreak = TRUE; break; } } if(bBreak==TRUE) continue; //样品测试项目计算,如果有一个需要测试该项目,就测试该项目 for(int cnt=0;cnt<IedDb.DownloadWorkParam.m_btMaxSampleCnt;cnt++) { if(Sample[cnt].cItem&(1L<<j)) return TestType[j]; } } return type; }
void Sieve(){ int i, j, k; setbit(ar, 0), setbit(ar, 1); for (i = 3; (i * i) < MAX; i++, i++){ if (!chkbit(ar, i)){ k = i << 1; for (j = (i * i); j < MAX; j += k) setbit(ar, j); } } p = 0; prime[p++] = 2; for (i = 3; i < MAX; i++, i++){ if (isprime(i)) prime[p++] = i; } }