單片機查表程序的自動(dòng)生成技術(shù)
利用以上程序,計算時(shí)輸入文件名為A.ASM,Vmax=3,得至的A.ASM的內容如下(共90行表格,略去其中的大部分表格):
;A.ASM
SUB1 MOVWF BUF
SUBLW .90
BTFSS STATUS,C
RETLW .0
MOVLW HIGH($+4)
MOVWF PCLATH
MOVF BUF,W
ADDWF PCL,F
RETLW .0;0
RETLW .5;1
……
RETLW .90;72
RETLW .86;73
RETLW .81;74
……
RETLW .11;88
RETLW .5;89
RETLW .0;90
把以下程序插入單片機程序的適當地方,查表時(shí)中要賦以W相應的值,再CALL
SUB1就可以得到sin(x)第W點(diǎn)上的值。整個(gè)計算約10個(gè)指令周期(如采用4MHz晶振,為10μs左右)。如果采用乘除的方法計算,至少要花幾百甚至上千個(gè)指令周期,而且得到的結果精度也差。
2.2 非線(xiàn)性插值
在單片機應用中會(huì )遇到非線(xiàn)性元件,例如熱敏電阻的電阻-溫度特性、斷路器的保護特性等都是非線(xiàn)性關(guān)系。這里以斷路器的保護特性為例,說(shuō)明自動(dòng)編程的應用。假設現在要仿真的斷路器的特性為雙曲線(xiàn),如圖1所示。
據此,可以設延時(shí)時(shí)間與電流的關(guān)系為
(I+I0)(t+t0)=K
(1)
由圖1的三個(gè)點(diǎn)可以得到以下聯(lián)立方程組:
(I+20)(t+33)=K
(I+40)(t+20)=K (2)
(I+90)(t+10)=K
采用迭代法解得I0=11.111 1,t0=0.222
2,K=1 033.58,代入式(1)得
t=[1 033.58/(I+11.111 1)]-0.222
2 (3)
現在假設在硬件線(xiàn)路中,電流信號是轉換為電壓信號經(jīng)A/D后得到的,其相應點(diǎn)的關(guān)系為:0A→0V,100A→3V,A/D為8位,A/D參考電壓為5V。轉換計算首先將A/D值轉換為對應的電壓值,再將電壓值轉換為對應的電流值I,再根據式(3)求相應的延時(shí)時(shí)間T,最后將延時(shí)時(shí)間T再轉換為延時(shí)的間常數T0。T0按式(4)計算:
(256-t0)·Tcy·K=T (4)
t0=256-t/(Tcy·K) (5)
其中,Tcy為指令周期,在4MHz晶振時(shí),Tcy=1μs;K為預分頻系數;t為欲延時(shí)的時(shí)間,單位為μs。
晶振相關(guān)文章:晶振原理
評論