|
本人前段時間為公司開發了一臺簡單型的自動化機械,是采用51單片機控制的。程序是用匯編語言寫的,目前運行都十分正常。這段時間學了一下c51語言,今天嘗試用c51語言來寫此機械的控制程序。發覺用c51語言寫掃描信號代碼十分的麻煩,嘗試了幾種方法都覺得寫起來吃力。最后試了下使用goto調轉指令來寫感覺還算滿意。但是如果采用goto調轉指令來寫,好像又回到匯編語言的感覺,完全失去了c51語言的特性。因本機械在運行中有多個信號需要在不同的地方掃描。為了增強程序在運行中的穩定性都采用每個信號掃描兩次(即掃描第一次后延遲10ms再掃描第二次)比較結果后執行相應代碼。比如說要掃描缺料信號掃描兩次后將會有0 0;1 1;0 1;和1 0這四狀態。假設0 0狀態為有料,程序將繼續執行。如果是1 1狀態那就是缺料程序將調轉到停機代碼那里執行停機控制。如果是0 1或1 0那就是信號有誤需重新掃描直至正確為止。也就是說兩次掃描的信號相同才執行相應代碼,如不同重新掃描直至正確為止。本人除了使用goto調轉指令來寫比較簡單外,切實想不出有更加簡單的方法來寫。可本人又不想過多的采用goto調轉指令來寫(有關教材說c51語言多不采用goto調轉指令),請各位高手指教下應該用c51語言怎么來寫才更加簡單方便!!!在此表示十分的感謝各位!!!!
下面是我采用goto調轉指令來寫的代碼:
sbit P1_0=P1^0;
if(P1_0==1) goto ypx; //p1.0等于1轉到ypx處
if(P1_0==0) goto ypx1; //p1.0等于0轉到ypx1處
ypx:
yanshi(10); //延遲10ms
if(P1_0==0) goto ypx1;//如果第二次掃描等于0,表示信號有誤,調轉到ypx1再次掃描
goto baohu; //如果兩次掃描結果都等于1,表示缺料程序調轉到停機代碼處執行停機
ypx1:
yanshi(10); //延遲10ms
if(P1_0==1) goto ypx; //如果第二次掃描等于1,表示信號有誤,調轉到ypx再次掃描
語句1 // 如果兩次掃描結果都等于0,表示有料程序繼續往下執行
語句2
語句N |
|