英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 3881|回复: 0
打印 上一主题 下一主题

picc几个容易疏忽的关键点

[复制链接]
跳转到指定楼层
1#
发表于 2009-4-18 17:45:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
2)关键字volatile volatile的本意是易变的” (这里引用了海涛的笔记)
volatile
常用在如下的几个地方:
  
  1
、中断服务程序中修改的供其它程序检测的变量需要加volatile
  2
、多任务环境下各任务间共享的标志应该加volatile
  
  3
、存储器映射的硬件寄存器通常也要加volatile说明;3)绝对定位static unsigned char i @ 0x30;这里将变量i定位在地址为bank0 0x30的地址上,但是你要是仔细读过张明锋的《pic C语言》具体的文章名字记得不清楚了,可以到网上搜一下。你就会对这个问题会造成的后果有所了解。在这里我也说一下,这里的绝对定位并不等同于将0x30这个地址空间分配给变量i ,即便你已经用static声明了。也就是说编译器可能在后续的操作中将ox30这个地址空间分配给别的变量j,这样就会造成ij 的数据紊乱,得不到我们想要的结果。这个问题我可是花了三天时间看了编译后反汇编才发现的,所config宏指令应用,个人认为这条宏指令相当好用,可以省去在烧片是的很多烦琐的设置。具体的使用方法可以去看一下《MPLAB伪指令总表》,在这里贴上偶在程序上的应用
   __CONFIG(INT_OSCIO & WDT_ON & BOD_ON & CP_OFF & CPD_OFF & MCLR_OFF & PWRT_ON);
在这里设置了使用内部时钟,看门狗打开,掉电复位打开,EEPROM的程序存储器保护关闭,EEPROM数据存储器保护关闭,复位引脚复位功能关闭,上电复位打开。
以我个人是不提倡用绝对定位。

5)内部EEPROM操作
网上流传的都是不加修改的从数据手册copy。如果你实际操作它时,你会发现读写一两个字节是不会有什么问题的。但是你要是多字节读写,就会发现结果不是你想要的,这里关键是看门狗已经溢出了,所以最好在读写里程序里面加个清看门狗指令。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-5-2 21:15 , Processed in 0.051042 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表