[资源共享] 基于HC89S003F4板子呼吸灯

[复制链接]
440|3
 楼主 | 2018-3-7 11:23 | 显示全部楼层 |阅读模式
本帖最后由 ddllxxrr 于 2018-3-7 11:28 编辑


下载的问题解决了(见前两贴),我就开始实验下仿真好不好用呢?????

我就在下载的例程里找到了PWM,P22管脚输出的那个例程。然后我看手册上说可以任意映射,我就映射到P10。因为那里有个LED。

程序如下:
  1. #include "intrins.h "

  2. unsigned char i;
  3. unsigned int y;
  4. void delay(void);

  5. /***************************************************************************************
  6.   * @实现效果        P22口输出频率为15.69KHz,占空比为34%的方波
  7. ***************************************************************************************/
  8. int main()
  9. {
  10. /************************************系统初始化****************************************/
  11.         WDTCCR = 0x00;                                                //关闭看门狗
  12.         while((CLKCON&0x20)!=0x20);                        //等待内部高频RC起振
  13.         CLKSWR = 0x51;                                                //选择内部高频时钟为主时钟,内部高频RC2分频,Fosc=16MHz
  14.         while((CLKSWR&0xC0)!=0x40);                        //等待内部高频切换完成
  15.         CLKDIV = 0x01;                                                //Fosc1分频得到Fcpu,Fcpu=16MHz
  16. /************************************PWM3初始化****************************************/
  17.         P1M0 = 0x08;                                //P10设置为推挽输出
  18.         PWM3_MAP = 0x10;                                        //PWM3映射P10口
  19.         PWM3C = 0x92;                                                 //使能PWM3,关闭中断,允许输出,时钟4分频
  20.         //周期计算         = 0xFF / (Fosc / PWM分频系数)                (Fosc见系统时钟配置的部分)
  21.         //                        = 0xFF /(16000000 / 4)                        
  22.         //                         = 255 /4000000
  23.         //                        = 63.75us                即15.69KHZ               

  24.         PWM3P = 0xFF;                                                //PWM周期为0xFF
  25.         //有效电平时间计算(即占空比)         
  26.         //                        = 0x55 / (Fosc / PWM分频系数)                (Fosc见系统时钟配置的部分)
  27.         //                        = 0x55 /(16000000 / 4)                        
  28.         //                         = 85 /4000000
  29.         //                        = 21.25us                占空比为 21.25 / 63.75 = 34%

  30.         PWM3D = 0x00;                                                //PWM占空比设置
  31.     while(1)
  32.         {
  33.             for(i=0;i<255;i++)
  34.                 {
  35.                      PWM3D = i;
  36.                          delay();
  37.                 }
  38.                 for(i=255;i>0;i--)
  39.                 {
  40.                      PWM3D = i;
  41.                          delay();
  42.                 }
  43.         }
  44.     return 0;
  45. }

  46. void delay(void)
  47. {
  48.    
  49.         for(y=0;y<10000;y++)
  50.         {
  51.                 _nop_() ;
  52.         }
  53. }





复制代码



调试时我用了仿真,还算好用,就是不能停在我指定的断点,而是在断点的下边一行,但我观察变量是对的。

注意一下:这个仿真时才供电,不是插上仿真就供电。

以下是视频:

http://v.youku.com/v_show/id_XMzQ0NTMyMzI0OA==.html?spm=a2h3j.8428770.3416059.1





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
| 2018-3-8 19:08 | 显示全部楼层
奇怪, 跑你这LED, 我这都不能工作, 不知哪出问题了...........难点整一下午点阵屏 不能工作
 楼主 | 2018-3-8 21:22 | 显示全部楼层
skygz 发表于 2018-3-8 19:08
奇怪, 跑你这LED, 我这都不能工作, 不知哪出问题了...........难点整一下午点阵屏 不能工作 ...

我跑的好好的,以视频为证
| 2018-7-16 10:10 | 显示全部楼层
报送的是什么错误呢
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

快速回复 返回顶部 返回列表