打印
[通用8051核FLASH系列]

基于HC89S003F4板子呼吸灯

[复制链接]
1189|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 芯圣电子官方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





沙发
skygz| | 2018-3-8 19:08 | 只看该作者
奇怪, 跑你这LED, 我这都不能工作, 不知哪出问题了...........难点整一下午点阵屏 不能工作

使用特权

评论回复
板凳
ddllxxrr|  楼主 | 2018-3-8 21:22 | 只看该作者
skygz 发表于 2018-3-8 19:08
奇怪, 跑你这LED, 我这都不能工作, 不知哪出问题了...........难点整一下午点阵屏 不能工作 ...

我跑的好好的,以视频为证

使用特权

评论回复
地板
xiaoqizi| | 2018-7-16 10:10 | 只看该作者
报送的是什么错误呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2394

主题

6938

帖子

66

粉丝