本帖最后由 芯圣电子官方QQ 于 2023-7-24 15:27 编辑
下载的问题解决了(见前两贴),我就开始实验下仿真好不好用呢?????
我就在下载的例程里找到了PWM,P22管脚输出的那个例程。然后我看手册上说可以任意映射,我就映射到P10。因为那里有个LED。
程序如下:
- #include "intrins.h "
- unsigned char i;
- unsigned int y;
- void delay(void);
- /***************************************************************************************
- * @实现效果 P22口输出频率为15.69KHz,占空比为34%的方波
- ***************************************************************************************/
- int main()
- {
- /************************************系统初始化****************************************/
- WDTCCR = 0x00; //关闭看门狗
- while((CLKCON&0x20)!=0x20); //等待内部高频RC起振
- CLKSWR = 0x51; //选择内部高频时钟为主时钟,内部高频RC2分频,Fosc=16MHz
- while((CLKSWR&0xC0)!=0x40); //等待内部高频切换完成
- CLKDIV = 0x01; //Fosc1分频得到Fcpu,Fcpu=16MHz
- /************************************PWM3初始化****************************************/
- P1M0 = 0x08; //P10设置为推挽输出
- PWM3_MAP = 0x10; //PWM3映射P10口
- PWM3C = 0x92; //使能PWM3,关闭中断,允许输出,时钟4分频
- //周期计算 = 0xFF / (Fosc / PWM分频系数) (Fosc见系统时钟配置的部分)
- // = 0xFF /(16000000 / 4)
- // = 255 /4000000
- // = 63.75us 即15.69KHZ
- PWM3P = 0xFF; //PWM周期为0xFF
- //有效电平时间计算(即占空比)
- // = 0x55 / (Fosc / PWM分频系数) (Fosc见系统时钟配置的部分)
- // = 0x55 /(16000000 / 4)
- // = 85 /4000000
- // = 21.25us 占空比为 21.25 / 63.75 = 34%
- PWM3D = 0x00; //PWM占空比设置
- while(1)
- {
- for(i=0;i<255;i++)
- {
- PWM3D = i;
- delay();
- }
- for(i=255;i>0;i--)
- {
- PWM3D = i;
- delay();
- }
- }
- return 0;
- }
- void delay(void)
- {
-
- for(y=0;y<10000;y++)
- {
- _nop_() ;
- }
- }
调试时我用了仿真,还算好用,就是不能停在我指定的断点,而是在断点的下边一行,但我观察变量是对的。
注意一下:这个仿真时才供电,不是插上仿真就供电。
以下是视频:
http://v.youku.com/v_show/id_XMzQ0NTMyMzI0OA==.html?spm=a2h3j.8428770.3416059.1
|