完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
嗨,我正在处理系统,当几个单独的应用程序运行在PIC18上。我需要验证Flash在哪个区域执行代码。因此,我的想法是准备PC(程序计数器)的当前值。您知道如何用C语言来实现吗?在PIC32上可以使用宏_CP0_GET_EPC()。对于PIC18I使用XC8编译器,我无法找到类似的解决方案。
|
|
相关推荐
14个回答
|
|
|
我认为当你读PCL时,PCLATU和PCLATU寄存器也会自动加载。
|
|
|
|
|
|
我按以下方式完成:{uint32_t program.;//program.uint8_tpc.,pc.,pcUpper;asm("MOVF PCL,WnMOVWFcmGetProgram.@pc.")//将PCL读到W寄存器,然后读到本地C变量,这将触发PCH和PCU值到PCLATH和PLATUasm("MOVFPCLATTH,WnMOV VWF cmGetProgram.@pc.");//将PCLATH读到W寄存器,然后到本地C变量(“MOVF PCLATU,WnMOVWF cmGetProgram.@pcUpper”);//将PCLATH读到W寄存器,然后到本地C变量编程计数器=(((uint32_t)pcUpper)<16)+((uint32_t)pc.)<8)+pc.re;打开程序计数器;}我检查了它,似乎起作用了。我不太熟悉PIC汇编程序。你认为它有潜在的改进吗?
|
|
|
|
|
|
程序计数器在PCU:PCH:PCL寄存器中。低字节PCL寄存器既可读又可写。高字节PCH和上字节PCU不是直接可读或可写的。这两个字节的读写是通过PCLATH和PCLATU寄存器执行的。类似地,程序计数器的上两个字节通过读取PCL的操作被转移到PCLATH和PCLATU。
|
|
|
|
|
|
试试这个:
|
|
|
|
|
|
试试这个:是的,它正在工作。很好的改进:谢谢您。据我所知,这是有效的,因为PCLATH&PCLATU地址刚好在PCL和读取PCL之后,触发器将PCH&U传输到PCLATH&U。对吗?
|
|
|
|
|
|
应该注意到,1和0的解决方案高度依赖于实现,因为它依赖于XC在高位字节和高位字节之前读取低位字节。此外,如果您的代码不使用低字节(即直接屏蔽它),那么如果由于强制转换没有保留PCL的易失性而内联该函数,则存在潜在的问题,这可能在高优化级别上破坏它。离子或直接在表达式中)会更安全,如果需要将它移植到不同的编译器,最好要么验证字节读取顺序,要么使用(PCL,*(volatile uint24_t*)&PCL)强制PCL总是在PCLATH和PCLATU之前读取。
|
|
|
|
|
|
这不会使PC从函数内部返回,这与调用方的PC无关吗?
|
|
|
|
|
|
内联,可能吗?…
|
|
|
|
|
|
当然,你是对的,它从功能内部恢复PC。但对我来说没问题。细节价值在我的案例中并不那么重要。
|
|
|
|
|
|
你想要多少细节?在18F46K22上字节的PCU是零,如果你不需要PCL,那么也许这会更好地工作:
|
|
|
|
|
|
你想要多少细节?在18F46K22上,上位字节PCU是零,如果您不需要PCL,那么这可能会更好:是的,PCH就足够了。你能解释一下“MOVLW高美元”吗?这个句子对我来说并不清楚。
|
|
|
|
|
|
$符号代表当前程序内存地址。高运算符是运算符取其操作数的高位字节的运算符。指令“movlw high$”将当前程序地址的高字节放入WREG,这是返回字符类型的函数的返回值。
|
|
|
|
|
|
HiKnow,你让我迷惑不解!如果我错了,请纠正我。“movlw high$”将导致生成时计算的恒定值。“.*(uint24_t*)&PCL;”将在运行时从PC读取值。这两个选项非常不同。通过不同的方式,我猜其中的一个代码更多。
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1124浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1095浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
873浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 04:31 , Processed in 2.078492 second(s), Total 99, Slave 82 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1449