几个关于PIC单片机的问题,请大家帮帮忙,谢谢

2020-02-10 08:37发布

我的编译器用的是C18,我只会用C编程,用的片子是PIC18F25K20。
问题1.如何定义一个复位不初始化的变量。
问题2.PWM输出,我要的程序运行过程中要调整脉宽(不考虑小数部分),直接写CCPR1L就可以了吗?新写入的值是不是从PWM的下一个周期输出的时候生效的,还有TMR2IF的中断标志位和这个PWM输出的有什么关系,是不是不用去考虑它。
问题3.AD采样的时候,我要切换通道,是不是只要一次转换完毕之后,直接设定通道,然后再打开AD转换就可以了。

小弟我是PIC新手,以前不用PIC的,感觉PIC不是很友好,特别是它的调试工具ICD2不好用,速度很慢,功能很弱。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
piccode
1楼-- · 2020-02-10 08:39
个人认为PIC的  CCS C是最好用的
  问题1:汗-复位不初始化的变量我也不知。 (只知常量和变量,常量复位不会变,好比码表)
       有那位大X来解译一下复位不初始化的变量? EEPROM里的值吧呵。
问题2:CCS C噢
        
        //setup_timer_2(T2_DIV_BY_16,150, 5);   // 设定PWM的频率=1/周期      130
       // setup_ccp1(CCP_PWM);                  // 设定CCP1为 "11**" 即为PWM模式
       // set_pwm1_duty(40);                  // 设定PWM的脉宽即占空比.data越大高电平越长duty=0输出低电平

问题3. 先设定用内部RC时钟还是外部时钟。 然后切换通道,开AD转换
       SETUP_ADC(ADC_CLOCK_INTERNAL);
       SETUP_ADC_PORTS( AN0_AN1_AN3 );   
       SET_ADC_CHANNEL(3);
       ;
        da=READ_ADC();
bozai
2楼-- · 2020-02-10 11:57
复位不初始化的话,不要用static限定,定义不赋值就OK了。楼主说的应该是全局变量。 这个变量会被编译到未初始化段,不占用实际代码空间。复位一般会被清零。
millwood0
3楼-- · 2020-02-10 17:14
 精彩回答 2  元偷偷看……
dasuantou
4楼-- · 2020-02-10 18:19
回1楼的:
   我的单片机启蒙就是用的PIC16F877和CCS C,特别喜欢CCS,但我现在用KEIL和C8051了.
lxyppc
5楼-- · 2020-02-10 22:53
PICC中可以用persistent关键词
不知道C18中有没有类似的
piccode
6楼-- · 2020-02-10 23:07
我的单片机启蒙就也是用的PIC16F877和CCS C,  第一个量产就是用的CCS C  真的是很喜欢呵 有8年了吧
  PICC 就象用汇编来写C (但现给MICROCHIP给收购了)

一周热门 更多>