PIC单片机开发的若干问题

上传人:众众****夺宝 文档编号:119685311 上传时间:2022-07-15 格式:DOC 页数:3 大小:15KB
返回 下载 相关 举报
PIC单片机开发的若干问题_第1页
第1页 / 共3页
PIC单片机开发的若干问题_第2页
第2页 / 共3页
PIC单片机开发的若干问题_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述
PIC单片机开发的假设干问题摘要pi单片机在国内日益流行,本文介绍irhippi系列单片机开发过程中软、硬件设计的一些经历、技巧。关键词irhip单片机功耗编程由美国irhip公司消费的pi系列单片机,由于其超小型、低功耗、低本钱、多品种等特点,已广泛应用于工业控制、仪器、仪表、通信、家电、玩具等领域,本文总结了作者在pi单片机开发过程中的一些经历、技巧,供同行参考。1怎样进一步降低功耗功耗,在电池供电的仪器仪表中是一个重要的考虑因素。pi16系列单片机本身的功耗较低在5v,4hz振荡频率时工作电流小于2a。为进一步降低功耗,在保证满足工作要求的前提下,可采用降低工作频率的方法,工作频率的下降可大大降低功耗如pi16在3v,32khz下工作,其电流可减小到15a,但较低的工作频率可能导致部分子程序如数学计算需占用较多的时间。在这种情况下,当单片机的振荡方式采用r电路形式时,可以采用中途进步工作频率的方法来解决。详细做法是在闲置的一个i/脚如rb1和s1管脚之间跨接一电阻r1,如图1所示。低速状态置rb1=0。需进展快速运算时先置rb1=1,由于充电时,电容电压上升得快,工作频率增高,运算时间减少,运算完毕又置rb1=0,进入低速、低功耗状态。工作频率的变化量依r1的阻值而定注意r1不能选得太小,以防振荡电路不起振,一般选取大于5k。另外,进一步降低功耗可充分利用“sleep指令。执行“sleep指令,机器处于睡眠状态,功耗为几个微安。程序不仅可在待命状态使用“sleep指令来等待事件,也可在延时程序里使用见例1、例2。在延时程序中使用“sleep指令降低功耗是一个方面,同时,即使是关中断状态,prtb端口电平的变化可唤醒“sleep,提早完毕延时程序。这一点在一些应用场合特别有用。同时注意在使用“sleep时要处理好与dt、中断的关系。图1进步工作频率的方法例1用plab-编写例2用as编写delay()delay;此行可加开关中断指令/*此行可加开关中断指令*/vl.10fr(i=0;i=10;i+)vfuntersleep();lp1sleepdefszuntergtlp1return2注意intn中的rbif位intn中的各中断允许位对中断状态位并无影响。当prtb配置成输入方式时,rb7:4引脚输入在每个读操作周期被抽样并与旧的锁存值比较,一旦不同就产生一个高电平,置rbif=1。在开rb中断前,也许rbif已置“1,所以在开rb中断时应先清rbif位,以免受rbif原值的影响,同时在中断处理完成后最好是清rbif位。3用plab-高级语言写pi单片机程序时要注意的问题3.1程序中嵌入汇编指令时注意书写格式见例3。例3hile(1)#ashile(1)#as/*应另起一行*/#endas/*不能正确编译*/#endas/*编译通过*/当内嵌汇编指令时,从“#as到“endas每条指令都必须各占一行,否那么编译时会出错。3.2加法、乘法的最平安的表示方法见例4。例4#inlude1671.h#inludeunsignedinta,b;unsignedlng;vidain()a=200;b=2;=ab;/*得不到正确的结果=400*/原因是plab-以88乘法方式来编译=ab,返回单字节结果给,结果的溢出被忽略。改上例中的“=ab;表达式为“=a;=b;,最为平安对加法的处理同上。3.3理解乘除法函数对存放器的占用由于pi片内ra仅几十个字节,空间特别珍贵,而plab-编译器对ra地址具有不释放性,即一个变量使用的地址不能再分配给其它变量。如ra空间不能满足太多变量的要求,一些变量只能由用户强迫分配一样的ra空间交替使用。而plab-中的乘除法函数需借用ra空间来存放中间结果,所以假设乘除法函数占用的ra与用户变量的地址重叠时,就会导致出现不可预测的结果。假设程序中用到乘除法运算,最好先通过程序机器码的反汇编代码包含在生成的lst文件中查看乘除法占用地址是否与其它变量地址有冲突,以免程序跑飞。plab-手册并没有给出其乘除法函数对详细ra地址的占用情况。例5是乘法函数对013、014、019、01a地址占用情况。例5部分反汇编代码#inlude01a7081fvf1f,#inlude01a80093vf13;借用unsignedlngvalue0x101a90820vf20,harx0x2d;01aa0094vf14;借用vidain()01ab082dvf2d,value=20;01a0099vf19;借用x=40;01ad019alrf1a;借用value=valuex01ae235fall035fh;调用乘法函数01af1283bf03,501b0009fvf1f;返回结果低字节01b10804vf04,01b200a0vf20;返回结果高字节4对芯片重复编程对无硬件仿真器的用户,总是选用带epr的芯片来调试程序。每更改一次程序,都是将原来的内容先擦除,再编程,其过程浪费了相当多的时间,又缩短了芯片的使用寿命。假设后一次编程的结果较前一次,仅是对应的机器码字节的一样位由“1变成“0,就可在前一次编程芯片上再次写入数据,而不必擦除原片内容。在程序的调试过程中,经常遇到常数的调整,如常数的改变能保证对应位由“1变“0,都可在原片内容的根底继续编程。另外,由于指令“np对应的机器码为“00,调试过程中指令的删除,先用“np指令替代,编译后也可在原片内容上继续编程。另外,在对带epr的芯片编程时,特别注意程序保密状态位。厂家对新一代带epr芯片的保密状态位已由原来的epr可擦型改为了熔丝型,一旦程序代码保密熔丝编程为“0,可重复编程的epr芯片就无法再次编程了。使用时应注意这点,以免造成不必要的浪费irhip资料并未对此做出说明。参考文献1irhippi16xxdatabk2plab-usersguide
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 其他分类 > 大学论文


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!