
PIC单片机学习笔记
文章平均质量分 72
嵌入式@hxydj
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
PIC16F1936单片机HEX文件问题
开始还以为是编译器出问题了,最后经过查找资料才发现,在PIC16F1xxx系列单片机中,单指令的长度是14bit,是由2个8bit的字节拼起来的,所以hex文件中的地址是实际地址的两倍。这样编译器中的地址 0x7D1 * 2 = 0xFA2, hex文件中的地址 0xFC2 / 2 = 0x7E1。可以看到程序地址从0FA2开始存储,但是在编译器中查看程序数据时发现,0FA2地址中开始的值全是默认值。通过地址换算,然后对比地址中的数据,可以相互对应。说明hex文件中的地址和程序中的地址确实是2倍关系。原创 2025-03-25 16:17:22 · 243 阅读 · 0 评论 -
PIC单片机设置bootloader程序和app程序地址方法
但是app的程序就能不能通过烧写器下载了,否则在下载app的程序时,boot loader的程序就会被擦除掉。第一行的数据存储地址是 0x2000,第2行的数据的存储地址就跳到了0xFF74,这个地址是由编译器自动分配的。这里的ROM ranges就是设置boot loader代码的存放地址,这个地址的范围也可根据自己代码的情况设置。APP的地址地址为0x2000,芯片的最大地址是0xFFFF,所以代码的存储范围就是0x2000到0xFFFF,可以打开编译好的hex文件查看。是由编译器自动分配的。原创 2025-01-21 17:04:51 · 1377 阅读 · 1 评论 -
PIC单片机HEX文件格式分析
04 表示后面的地址为扩展地址,因为数据地址只有2个字节,最大值只能表示到0xFFFF,如果地址超过0xFFFF,就需要用到扩展地址,表示将后面的地址值左移16位,如图中11行所示,后面的地址为0x0030,前面的数据为04,地址值就要左移16位,所以实际的地址值就是0x0300 0000。第16行是跳转到地址0x00F0 0000地址处,这个地址在芯片手册上未找到相关资料,不过根据17行的数据可以看出,在这个地址上写入的值是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。原创 2025-01-21 15:06:46 · 1006 阅读 · 0 评论 -
PIC单片机生成HEX文件中代码地址问题分析
这时候代码的存储位置变了,但是不是从0地址开始存储,而是从7FF地址前面了。当程序中没有中断的时候,代码存储的位置是编译器自动存放的,不一定是按照顺序从0开始存放的。以前使用STM32单片机的时候,生成的HEX文件,代码存储都是从0地址开始依次递增存储的,但是最近再使用PIC单片机的时候却发现这个单片机有点不一样。可以看到默认生成的代码存放地址都是从0x1000开始的,如果要修改存储地址的话需要再编译器项目属性里面设置ROM的地址范围。如果要设置代码的偏移地址的话,也可以在项目属性中设置。原创 2025-01-11 09:20:20 · 747 阅读 · 0 评论