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

[09-12 18:13:25]   来源:http://www.88dzw.com  单片机学习   阅读:8940

文章摘要: (256-t0)·Tcy·K=T (4) t0=256-t/(Tcy·K) (5) 其中,Tcy为指令周期,在4MHz晶振时,Tcy=1μs;K为预分频系数;t为欲延时的时间,单位为μs。 假设定时器用TMR0,预分频系数为256,晶振的振荡频率为4MHz,则最大延时为65.535ms。程序如下(其中与程序A.C相同或类似的均略去): /*程序B.C*/ …… fprintf(fp,"SUB2 MOVWF BUF"); fprintf(fp,"MOVLW HIGH($+4)");

单片机查表程序的自动生成技术,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com
     (256-t0)·Tcy·K=T
     (4)
     t0=256-t/(Tcy·K) (5)
     其中,Tcy为指令周期,在4MHz晶振时,Tcy=1μs;K为预分频系数;t为欲延时的时间,单位为μs。
     假设定时器用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(k<0)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] 


Tag:单片机学习单片机开发,单片机原理,单片机教程单片机学习

《单片机查表程序的自动生成技术》相关文章

分类导航
最新更新
热门排行