找论文网 > 工科论文 > 通信工程论文 >

PIC单片机开发的若干问题(2)

3.3 了解乘除法函数对寄存器的占用

由于pic片内ram仅几十个字节,空间特别宝贵,而mplab-c编译器对ram地址具有不释放性,即一个变量使用的地址不能再分配给其它变量。如ram空间不能满足太多变量的要求,一些变量只能由用户强制分配相同的ram空间交替使用。而mplab-c中的乘除法函数需借用ram空间来存放中间结果,所以如果乘除法函数占用的ram与用户变量的地址重叠时,就会导致出现不可预测的结果。如果c程序中用到乘除法运算,最好先通过程序机器码的反汇编代码(包含在生成的lst文件中)查看乘除法占用地址是否与其它变量地址有冲突,以免程序跑飞。mplab-c手册并没有给出其乘除法函数对具体ram地址的占用情况。例5是乘法函数对0×13、0×14、0×19、0×1a地址占用情况。

例5

部分反汇编代码
#include 01a7 081f movf 1f,w
#include 01a8 0093 movwf 13
;借用
unsigned long value @0x1 01a9 0820 movf 20,w
char xm @0x2d; 01aa 0094 movwf 14
;借用
void main() 01ab 082d movf 2d,w
{value=20; 01ac 0099 movwf 19
;借用
xm=40; 01ad 019a clrf1a
;借用
value=value*xm 01ae 235f call 035fh
;调用乘法函数
…… 01af 1283 bcf 03,5
} 01b0 009f movwf 1f
;返回结果低字节
01b1 0804 movf 04,w
01b2 00a0 movwf 20
;返回结果高字节

4 对芯片重复编程

对无硬件仿真器的用户,总是选用带eprom的芯片来调试程序。每更改一次程序,都是将原来的内容先擦除,再编程,其过程浪费了相当多的时间,又缩短了芯片的使用寿命。如果后一次编程的结果较前一次,仅是对应的机器码字节的相同位由“1”变成“0”,就可在前一次编程芯片上再次写入数据,而不必擦除原片内容。
在程序的调试过程中,经常遇到常数的调整,如常数的改变能保证对应位由“1”变“0”,都可在原片内容的基础继续编程。另外,由于指令“nop”对应的机器码为“00”,调试过程中指令的删除,先用“nop”指令替代,编译后也可在原片内容上继续编程。
另外,在对带eprom的芯片编程时,特别注意程序保密状态位。厂家对新一代带eprom芯片的保密状态位已由原来的eprom可擦型改为了熔丝型,一旦程序代码保密熔丝编程为“0”,可重复编程的 eprom 芯片就无法再次编程了。使用时应注意这点,以免造成不必要的浪费(microchip 资料并未对此做出说明)。

参考文献

1 micorchip pic16cxx data book
2 mplab-c user
s guide

共2页: 上一页 [1] 2


一种辐射源多特征数据关联的新方法
无线移动通信系统中基于预留信道的呼叫接入控制
工商管理 | 工科论文 | 财务管理 | 管理学 | 公共管理 | 财政税收 | 证券金融 | 会计审计 | 计算机 | 法律论文 | 医药学 | 汉语言文学
社会论文 | 工科论文 | 理科论文 | 文化论文 | 艺术论文 | 文学论文 | 哲学论文 | 政治论文 | 英语论文 | 写作指导 | 计算机应用
www.zlunwen.com 找论文网 ® 版权所有 网站地图