Microchip
直播中

陈丽

8年用户 1607经验值
私信 关注
[问答]

如何用用C代码在PIC24

大家好,我刚开始用C代码在PIC24上。在此之前有合理的图16f组装经验。我使用的是PIC24FJ128GA202、XC16 v1.25、MPLABX v3.05。我把代码缩减为只设置PORTB输出高,但是在模拟器和主板上的结果是一样的。同样的情况发生在测试相同的方式RA4。所有其它位都作为输出工作。在模拟器调试和ICD3调试期间,即使LAT RB4在监视窗口中也保持低位!我在网上拖网两天了,在“相似的”设备上看到了许多“相似的”情况……通常通过禁用CONFIG位中的SOSC进行排序,我这样做但没有效果。(至少我有)我得出这样的结论,这些引脚只是输入,但是无法在数据表或FRM中找到任何数据来验证这一点。这是代码。非常感谢您的任何帮助。//PIC24FJ128GA202配置位设置//'C'源行配置语句包括//CONFIG4pragma配置DSWDTPS=DSWDTPS1F//深睡眠监视器定时器事后选择位(1:68719476736(25.7天)pragma配置DSWDTOSC=LPRC//DSWDT参考位ence时钟选择(DSWDT使用LPRC作为参考时钟)pragma配置DSBOREN=OFF//深睡眠BOR启用位(DSBOR禁用)pragma配置DSWDTEN=OFF//深睡眠监视器定时器启用(DSWDT禁用)pragma配置DSSWEN=OFF//DSEN位启用(深睡眠由寄存器b控制)它DSEN)#pragma配置PLLDIV=DISABLED//USB 96 MHz PLL预分频器选择位(PLL禁用)#pragma配置I2C1SEL=DISABLE//备用I2C1启用位(I2C1使用SCL1和SDA1引脚)#pragma配置IOL1WAY=ON//PPS IOLOCK Set Only Enable bit(一旦设置,IOLOCK位不能清除)//CONFIG3#pragma config WPFP=WPFP127//写保护闪存页段边界(页127(0x1FC00))#pragma config SOSCSEL=OFF//SOSC选择位(数字(SCLKI)模式)#pragma config WDTWIN=PS25_0//窗口模式看门狗定时器窗口宽度选择(看门狗定时器窗口宽度为25p#pragma config PLLSS=PLL_FRC//PLL Secondary Selection Configuration bit(PLL由片上快速RC(FRC)振荡器馈电)#pragma config BOREN=OFF//Brown-out Reset Enable(Brown-out Reset.bled)#pragma config WPDIS=WPDIS//Se.Write Protection.bled)#pragma config WPCFG=WPCFGDIS//写保护配置页选择(禁用)#pragma配置WPEND=WPENDMEM//段写保护结束页选择(从WPFP写保护到内存的最后一页)//CONFIG2#pragma配置POSCMD=NONE//主振荡器选择(主振荡器禁用)#pragma config WDTCLK=SYSCLK//WDT时钟源选择位(WDT在活动时使用系统时钟,LPRC在睡眠模式下)#pragma config OSCIOFCN=OFF//OSCO引脚配置(OSCO/CLKO/RA3用作CLKO(FOSC/2))#pragma config FCKSM=CSDCMD//时钟切换和故障安全时钟监视器配置位(时钟切换和故障安全时钟监视器被禁用)#pragma配置FNOSC=FRCDIV//初始振荡器选择(带后定标器的快速RC振荡器(FRCDIV))#pragma配置ALTCMPI=CxINC_RB//替代比较器输入位(C1INC在RB13上,C2INC在RB9上,C3INC在O上n RA0)#pragma config WDTCMX=LPRC//WDT时钟源选择位(WDT总是使用LPRC作为其时钟源)#pragma config IESO=OFF//Internal External Switchover(禁用)//CONFIG1#pragma config WDTPS=PS32768//Watchdog Timer Postscaler Select(1:32768)#pragma config FWPSA=PR128//WDT预分频器比率选择(1:128)#pragma配置WINDIS=OFF//WindowdWDT禁用(标准看门狗定时器)#pragma配置FWDTEN=OFF//看门狗定时器启用(硬件中禁用WDT;SWDTEN位禁用)#pragma配置ICS=PGx2//仿真器管脚位置选择位(仿真器功能是sha红色与PGEC2/PGED2)#pragma配置LPCFG=OFF//低功耗调节器控制(禁用-不考虑RETEN)#pragma配置GWRP=OFF//通用段写入保护(写入程序内存允许)#pragma配置GCP=OFF//通用段代码保护(禁用代码保护)#pragma config JTAGEN=OFF//JTAG端口启用(禁用)int main(void){.(1){ANSB=0x0000;TRISB=0x0000;ODCB=0x0000;OSCCON=0x0700;//soscen=0PORTB=0x0000;ANSA=0;PORTB=0xffff;}//main.}//main

回帖(4)

tijing忽忽

2020-5-13 11:33:45
如果您检查数据表中的表4-14和4-15,您将看到没有为RA4或RB4(还有一些)定义的LATx位,因为它们是只输入引脚。
举报

常静娜

2020-5-13 11:41:37
嗨,杰克,我不知道你指的是什么数据表。在PIC24FJ128GA204家庭数据表(DS300 10038 C)中没有表4-14,4-15。我不认为它对应于FRM I/O端口数据板。
举报

丁亚念

2020-5-13 11:48:10
此外,在第17页的DS30010038C中“表1-3:PIC24FJ128GA204家族简介”中显示引脚RA4仅被输入,而第18页显示RB4仅被输入。
举报

常静娜

2020-5-13 12:01:52
谢谢杰克。2天的时间,我没有看到那张桌子,就像它在记忆部分一样。我原本以为在IO端口部分会这样。也许在数据表的叙述部分可以提到这种行为。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分