<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > C51編程中的自定義“位”及其保存方案

C51編程中的自定義“位”及其保存方案

作者: 時(shí)間:2013-02-17 來(lái)源:網(wǎng)絡(luò ) 收藏

  if(Decode_key==0x000C) {//“▼”鍵碼核對

  BEEP=1;//蜂鳴聲響輸出

  if(switch_sign) {//翻轉

  JD1_out=1;//繼電器1控制輸出端

  JD2_out=0;//繼電器2控制輸出端

  }

  else {

  JD1_out=0;//繼電器1控制輸出端

  JD2_out=1;//繼電器2控制輸出端

  }

  }

  }

  if(Decode_addr==0x5D35) {//取反操作糾正時(shí)地址碼核對

  if(Decode_key==0x00C0) {//“▲”鍵碼核對

  BEEP=1;//蜂鳴聲響輸出

  switch_sign=~switch_sign; //取反一次翻轉

  save_data();//調用保存數據子程序

  }

  }

  }

  從上面這段遙控數據處理子程序可以看到:在任何時(shí)候兩個(gè)繼電器的控制輸出端JD1_out與JD2_out至多只能開(kāi)一個(gè)。當遙控“▲”鍵按下有效時(shí),翻轉“switch_sign”的邏輯“0”或邏輯“1”狀態(tài)將決定兩個(gè)繼電器的控制輸出端JD1_out與JD2_out的一開(kāi)一關(guān),或一關(guān)一開(kāi);同理,當遙控“▼”鍵按下有效時(shí)也會(huì )得到與“▲”鍵按下相反的類(lèi)同效果……也就是說(shuō),只要改變翻轉標志位“switch_sign”的邏輯狀態(tài),就能改變兩個(gè)繼電器控制輸出端誰(shuí)“開(kāi)”誰(shuí)“關(guān)”的控制輸出狀態(tài)。亦即,在同一個(gè)遙控按鍵按下時(shí)(如“▲”鍵按下),標志位“switch_sign”的邏輯狀態(tài)不同,兩個(gè)繼電器控制輸出端誰(shuí)“開(kāi)”誰(shuí)“關(guān)”的控制輸出狀態(tài)也將不同。其中的蜂鳴聲響提示按鍵操作是否有效。

  投影屏幕升降的動(dòng)力電機是一個(gè)AC 220V的交流電機,圖1是電機控制電路的簡(jiǎn)圖。由此可見(jiàn),當繼電器JD1閉合,JD2斷開(kāi)時(shí),電機M中的L1為主繞組,L2為啟動(dòng)副繞組,電機將一個(gè)方向運轉;當繼電器JD1斷開(kāi),JD2閉合時(shí),電機M中的L1為啟動(dòng)副繞組,而L2為主繞組了,電機將以原來(lái)的反方向運轉。結合上文,改變翻轉標志位“switch_sign”的邏輯狀態(tài)→改變兩個(gè)繼電器控制輸出端誰(shuí)“開(kāi)”誰(shuí)“關(guān)”的控制輸出狀態(tài)→改變電機的運轉方向→投影屏幕的升降狀態(tài)。也就是說(shuō),改變翻轉標志位“switch_sign”的邏輯狀態(tài),就可糾正遙控電機運轉方向及其投影屏幕的升降狀態(tài)。將遙控按鍵與投影屏幕升降的對應關(guān)系協(xié)調后,必須保存的標志位“switch_sign”當前的邏輯狀態(tài),否則,斷電后下一次上電復位初始化,又可能要出洋相了。

  從例舉2的程序中還可以看到,翻轉標志位“switch_sign”的取反操作也是用同一個(gè)遙控器上的“▲”鍵來(lái)執行的,只是在遙控器的地址編碼上動(dòng)了點(diǎn)手腳——改變了一下地址編碼(0x5D35),待操作對應協(xié)調后再改回到原來(lái)的地址編碼(0x5535)。

  2保存1個(gè)字節來(lái)復原標志“位”

  標志“位”的保存及其復原有很多種方法,我曾嘗試過(guò)幾種方法。例3是一種保存1個(gè)字節來(lái)復原1個(gè)自定義標志位的方法,具體操作如下:

  static unsigned char current_dat;//定義一個(gè)通用的輔助字節變量

  bit bdata switch_sign;//自定義的翻轉標志位(應作全局變量定義)

  ……

  switch_sign=~switch_sign;//取反1次翻轉標志位

  if(switch_sign) {//判斷switch_sign是邏輯“1”還是邏輯“0”

  current_dat=0xA5;//對通用的輔助字節變量賦值

  }

  else {

  current_dat=0x00;//通用的輔助字節變量

  }

  save_data();//調用保存數據子程序

  BEEP=1;//蜂鳴聲響輸出

  以上程序是:取反翻轉標志位“switch_sign”后,若“switch_sign”為邏輯“1”狀態(tài),就給通用的輔助字節變量“current_dat”賦值“0xA5”(當然,這數據由你自己隨意定);若“switch_sign”為邏輯“0”狀態(tài),則給通用的輔助字節變量“current_dat”賦值“0x00”(這數據也是自己隨意定的,只要與前面那個(gè)不一樣就是了),然后調用保存數據程序將通用的輔助字節變量“current_dat”保存起來(lái)。這樣,即使斷電了翻轉標志位“switch_sign”的當前狀態(tài)已間接地被通用的輔助字節變量“current_dat”保存起來(lái)了……當下一次上電復位初始化時(shí),應先將保存的輔助變量“current_dat”的數據讀出來(lái),并還原成翻轉標志位“switch_sign”相應的邏輯狀態(tài)。上電初始化時(shí)若從存儲處讀出的數據是“0xA5”,則將翻轉標志位“switch_sign”置“1”;若讀出的數據是“0x00”,則將翻轉標志位“switch_sign”置“0”——這就與原來(lái)保存時(shí)的狀態(tài)對應起來(lái)了。其操作過(guò)程如例4:

  static unsigned char current_dat;//定義一個(gè)通用的輔助字節變量

  static unsigned char addr;//自定義地址變量緩沖單元

  static unsigned char Rdat;//自定義讀數據緩沖單元

  bit bdata switch_sign;//自定義的翻轉標志位(應作全局變量定義)

  ……



關(guān)鍵詞: C51編程 自定義 標志位

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>