摘 要:介绍用高级语言C自动生成单片机的查表程序,用查表的方法取代繁琐复杂的数学运算,计算精度高,时间短.包括自动生成程序的原理以及D/A输出复杂波形,非线性插值的示例.
关键词:单片机 自动编程 查表 高级语言
在单片机应用系统中,常用到许多复杂的数学计算,如计算sin(x),cos(x),有效值计算,非线性插值等.这些在高级语言中是简单的工作,而在单片机的汇编语言中却是非常复杂的.因为,这些运算大都要用乘除运算来进行近似运算,计算的精度很难满足要求.更难以接受的是其运算时间太长,这对于无乘除指令的单片机系统更是如此.采用查表取代复杂的计算是一个明智的选择.但是,这种查表程序表格往往都较长,通常为几十条到一二百条,如果采用手工输入不但要花费大量的时间,而且还容易出错.利用高级语言的单片机查表程序的自动生成技术可以大大减小工作量,而且不易出错.
用过Microchip公司的PIC16系列单片机的读者都知道,该系列单片机具有许多优点,唯感遗憾的是在该指令中没有乘除指令(PIC17以系列才有乘指令).在应用中常要自编乘除了程序以完成乘除运算,这种程序执行都要花费较多的时间,如双字节的乘法,运算一次需要花费100多个指令周期,而如果要用乘除进行sin(x),cos(x),开方的计算,则花费的时间就更多.因此,利用高级语言进行单片机查表程序的自动笥成技术在PIC16系列单片机中就显得更有意义.
现以目前在我国正大量使用的Microchip公司的PIC16系列单片机为例,用几个例子说明该技术的应用.当然,这种方法也可以用在其它单片机中,只是所给的示例程序中有关单片机的语句要改为相应的单片机语言.本文采用Tubro C作为高级语言的编程工具,也可以采用其它高级语言.
1 原理
利用高级语言自动生成查表程序的实质就是利用高级语言的计算功能,把原本复杂的计算转换为简单的查表结果,以文本文件的形式输出查表程序,在单片机编程中将该段程序插入相应的程序中去.在应用中需要注意的是:查表结果没有小数,故在计算输出时要四舍五入;查表结果只能在0~255之间,超出此范围要加以处理.PIC16系列单片机的汇编程序默认数制为十六进制,如要使用十进制,要在数前加".".还有一点要注意的是,在插入查表程序时特别要注意查表程序不能跨过0~255的页面.
2 示例
2.1 用D/A输出复杂的波形
用D/A器件可以输出复杂的波形,如sin(x),双音多频信号等复杂的波形.这里以并行D/A,输出sin(x)为例,假设电源电压为5V,D/A的参考电压也为5V;同时假设在sin(x)的半波中共输出90个点(2°输出1个点),相应的C语言源程序如下:
/*程序A.C*/
#include
#include
main()
{
FILE *fp;
char f[15];
float Vmax,v,w;
int i,k;
puts ("the output file name:");
gets (f); /*输入要输出的文件名*/
if((fp=fopen(f,"w"))= =NULL)
{puts("cont open output file");
exit(0);
}
puts("Vmax:");
scanf("%f",&Vmax); /*输入要输出的sin波形峰值*/
fprintf(fp,"SUB1 MOVWF BUF"); /*输出查表程序的第1行*/
fprintf(fp,"SUBLW .%d",90); /*输出查表程序的第2行*/
fprintf(fp,"BTFSS STATUS,C");/*输出查表程序的第3行*/
fprintf(fp,"RETLW .0"); /*输出查表程序的第4行*/
fprintf(fp,"MOVLW HIGH($+4)"); /*输出查表程序的第5行*/
fprintf(fp,"MOVWF PCLATH"); /*输出查表程序的第6行*/
fprintf(fp,"MOVF BUF,W"); /*输出查表程序的第7行*/
fprintf(fp,"ADDWF PCL,F"); /*输出查表程序的第8行*/
for(i=0;i<=90;i++)
{w=i*2; /*2°输出1个点*/
w=w*3.14159/180; /*转换成弧度*/
- 单片机diy电压表头 > 要:介绍用高级语言C自动生成单片机的查表程序
-
要:介绍用高级语言C自动生成单片机的查表程序
下载该文档 文档格式:DOC 更新时间:2008-04-01 下载次数:0 点击次数:1文档基本属性 文档语言: Simplified Chinese 文档格式: doc 文档作者: Ray 关键词: 主题: 备注: 点击这里显示更多文档属性 经理: 单位: www.xunchi.com 分类: 创建时间: 上次保存者: 修订次数: 编辑时间: 文档创建者: 修订: 加密标识: 幻灯片: 段落数: 字节数: 备注: 演示格式: 上次保存时间:
- 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
- DOC格式下载
- 更多文档...
-
上一篇:凌阳单片机培训报名表
下一篇:基于单片机与光电传感器的电动自行车速度与里程表的设...
点击查看更多关于单片机diy电压表头的相关文档
- 您可能感兴趣的
- 单片机diy lcd数字电压表头 电压表数显表头 数字电压表头 电压表头 交流电压表 高精度数字电压表 数显电压表 指针电压表
- 大家在找
-
- · 百度文库言情小说下载
- · 植物树形比较
- · 西医内科学课件下载
- · 单片机原理和应用试卷
- · 佳能喷墨打印机
- · autocad2010快捷命令
- · 倒档拨叉的夹具设计
- · 电气工程师cad2010
- · st钛白股吧
- · 统计预测与决策课件
- · 入党函调表格doc
- · 玛雅预言书2012
- · 肥东县畜牧水产局
- · 陈涉世家原文及注释
- · 梅艳芳和刘德华的照片
- · 电机维修知识
- · 2011驾校模拟考试
- · 测井光电编码器
- · 74ls14
- · 加工承揽合同条例
- · 时光e栈小白楼店
- · 灶台坏了一头风水
- · 成都理工大学工程技术
- · win7dock图标
- · 北京中国大饭店
- · 绍兴汽车西站
- · willloveyou
- · 圆脸且大发型设计图片
- · 新水浒传84集高清观看
- · 广发证券软件
- 赞助商链接