新闻中心

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

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

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

假设定时器用TMR0,预分频系数为256,晶振的振荡频率为4MHz,则最大延时为65.535ms。如下(其中与A.C相同或类似的均略去):

/*B.C*/
……
fprintf(fp,SUB2 MOVWF BUF);
fprintf(fp,MOVLW HIGH($+4));
fprintf(fp,MOVWF PCLATH);
fprintf(fp,MOVF BUF,W);
fprintf(fp,ORG 200H,F); /*表格从200H开始,避免跨页*/
fprintf(fp,ADDWF PLC,F);
for(i=0;i=254;i++)
{ad=i;
v=ad*5/255; /*求相应于A/D值的电压V*/
I=100*v/3; /*求相应的电流I*/
T=1033.58/(I+11.1111)-0.2222; /*按式(3)求相应的延时时间*/
T0=256-T*1000*256; /*转换为时间常数*/
k=T0+0.5;
if(k0)k=0;
if(k>255)k=255;
fprintf(fp,)
RETLW.%d;AD=.%d,I=%5.1f(A),T=%5.1f(ms),k,i,I,T);
}
……
形成的程序如下(共255行表格,略去其中的大部分表格):
;B.asm
SUB2 MOVWF BUF
MOVLW HIGH($+4)
MOVWF PCLATH
MOVF BUF,W
ORG 200H
ADDWF PCL,F
RETLW .0;AD=.0,I=0.0(A),T=92.8(ms)
……
RETLW .116;AD=.27,I=17.6(A),T=35.7(ms)
RETLW .120;AD=.28,I=18.3(A),T=34.9(ms)
RETLW .123;AD=.29,I=19.0(A),T=34.2(ms)
RETLW .125;AD=.30,I=19.6(A),T=33.4(ms)
……
RETLW .234;AD=.254,I=166.0(A),T=5.6(ms)

进行电流采样A/D,把A/D结果赋给W,CALL

SUB2便可得到相应的延时时间常数W。

3 结论

利用高级语言程序,可以完成许多难以完成或需要进行大量计算才能完成的复杂运算,计算精度高。单片机利用此结果进行插值运行速度要快得多。典型的4MHz晶振时,需要的运算时间为10μs。限于篇幅,本文只给出两个实例,实际上它可以用于单片机测控系统中的许多方面,如模糊控制中的模糊规则的推理、非线性传感器的特性读取以及其它方面。

晶振相关文章:晶振原理

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭