昨天晚上,看到一個網(wǎng)友的提問:“說需要將一個變化了的數(shù)據(jù),按規(guī)定的定時時間有規(guī)律存放到一個連續(xù)的數(shù)據(jù)寄存器地址中、、、、、、”。類似處理這樣的程序雖然有很多種編程方法,但我想了想,認為這樣的方法可以測試一下。
編程思路:
1) 既然是定時存放數(shù)據(jù),那做一個定時中斷正好符合要求。新建一個定時中斷,smb34該定時中斷時間以1ms為最小單位(最大255ms),按網(wǎng)友要求設(shè)置為1000ms = 1秒需要10次中斷后再采集一次數(shù)據(jù)。
2) 因為需要將這個變化了的數(shù)據(jù),按每秒鐘時間逐個存放,使用啟用指針編程方法又比較合適。假設(shè),將采集的數(shù)據(jù)依次逐個存放到指針的起始首地址vd100中,并存放為30個數(shù)據(jù)。
3) 當數(shù)據(jù)存放個數(shù)到達第31個時,第一個存放的數(shù)據(jù)將被覆蓋新數(shù)據(jù)值,如此循環(huán)。
編程:
1) 在子程序中調(diào)用定時中斷,smb34 = 100(ms),中斷事件號10,開中斷
2) 在主程序初始該子程序
3) 在中斷程序中比較數(shù)據(jù)采集
定義定時中斷子程序:
在主程序中調(diào)用定義定時中斷子程序:
在中斷子程序編輯數(shù)據(jù)采集:vb0存放定時中斷次數(shù);vb1存放采集數(shù)據(jù)個數(shù)
將上述程序編譯、保存后下載到cpu,新建“狀態(tài)圖表”,啟用監(jiān)控,為方面vd6的數(shù)據(jù)輸入一些隨機數(shù)據(jù)編輯一個小程序在主程序中,這樣vd6的數(shù)據(jù)以每秒1.2遞增,當數(shù)據(jù)大于25.0時,重新返回到1.2開始重復(fù)過程。圖示:
從狀態(tài)圖表中可以看到vd100的數(shù)據(jù)已經(jīng)被第2次數(shù)據(jù)采集所覆蓋了新值,本程序僅僅是我理解網(wǎng)友提問后自己的思路,若有出入,望那位網(wǎng)友看到后指出,并加以修改。