新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机查表程序的自动生成技术

单片机查表程序的自动生成技术

作者:时间:2012-11-15来源:网络收藏


利用以上,计算时输入文件名为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

把以下插入的适当地方,时中要赋以W相应的值,再CALL

SUB1就可以得到sin(x)第W点上的值。整个计算约10个指令周期(如采用4MHz晶振,为10μs左右)。如果采用乘除的方法计算,至少要花几百甚至上千个指令周期,而且得到的结果精度也差。

2.2 非线性插值

应用中会遇到非线性元件,例如热敏电阻的电阻-温度特性、断路器的保护特性等都是非线性关系。这里以断路器的保护特性为例,说明自动编程的应用。假设现在要仿真的断路器的特性为双曲线,如图1所示。

据此,可以设延时时间与电流的关系为

(I+I0)(t+t0)=K

(1)

由图1的三个点可以得到以下联立方程组:

(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)

现在假设在硬件线路中,电流信号是转换为电压信号经A/D后得到的,其相应点的关系为:0A→0V,100A→3V,A/D为8位,A/D参考电压为5V。转换计算首先将A/D值转换为对应的电压值,再将电压值转换为对应的电流值I,再根据式(3)求相应的延时时间T,最后将延时时间T再转换为延时的间常数T0。T0按式(4)计算:

(256-t0)·Tcy·K=T (4)

t0=256-t/(Tcy·K) (5)

其中,Tcy为指令周期,在4MHz晶振时,Tcy=1μs;K为预分频系数;t为欲延时的时间,单位为μs。

晶振相关文章:晶振原理


评论


相关推荐

技术专区

关闭