搜索
bottom↓
回复: 8

c8051f340如何实现流水灯

[复制链接]

出0入0汤圆

发表于 2010-4-1 13:51:29 | 显示全部楼层 |阅读模式
我把端口配置成漏极开路和推挽输出都不能实现流水灯,连最简单的单灯闪烁都不能实现,麻烦谁帮忙写段程序好好的学习学习,我用的是C8051F340TBC的开发板,外接了自己焊的8路LED

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2010-4-1 14:03:11 | 显示全部楼层
楼主能发程序上来看看吗

出0入0汤圆

发表于 2010-4-1 15:11:52 | 显示全部楼层
关看门狗先,最好在startup.a51第一条指令里关,否则一直复位,啥也实现不了。

出0入0汤圆

 楼主| 发表于 2010-4-1 15:18:42 | 显示全部楼层
单灯闪烁可以了,正如2楼所说,忘了关闭看门狗了
程序很简单,贴上来,大家帮忙挑挑毛病吧
/////////////////////////////////////
//  Generated Initialization File  //
/////////////////////////////////////

#include "C8051F340.h"
#include "intrins.h"
#define uchar unsigned char
#define uint  unsigned int
void Delay_us(uint);
void Delay_ms(uint);
void Delay_s(uint);
sbit led = P1^0;

// Peripheral specific initialization functions,
// Called from the Init_Device() function
void Port_IO_Init()
{
    // P0.0  -  Unassigned,  Open-Drain, Digital
    // P0.1  -  Unassigned,  Open-Drain, Digital
    // P0.2  -  Unassigned,  Open-Drain, Digital
    // P0.3  -  Unassigned,  Open-Drain, Digital
    // P0.4  -  Unassigned,  Open-Drain, Digital
    // P0.5  -  Unassigned,  Open-Drain, Digital
    // P0.6  -  Unassigned,  Open-Drain, Digital
    // P0.7  -  Unassigned,  Open-Drain, Digital

    // P1.0  -  Unassigned,  Push-Pull,  Digital
    // P1.1  -  Unassigned,  Push-Pull,  Digital
    // P1.2  -  Unassigned,  Push-Pull,  Digital
    // P1.3  -  Unassigned,  Push-Pull,  Digital
    // P1.4  -  Unassigned,  Push-Pull,  Digital
    // P1.5  -  Unassigned,  Push-Pull,  Digital
    // P1.6  -  Unassigned,  Push-Pull,  Digital
    // P1.7  -  Unassigned,  Push-Pull,  Digital

    // P2.0  -  Unassigned,  Open-Drain, Digital
    // P2.1  -  Unassigned,  Open-Drain, Digital
    // P2.2  -  Unassigned,  Open-Drain, Digital
    // P2.3  -  Unassigned,  Open-Drain, Digital
    // P2.4  -  Unassigned,  Open-Drain, Digital
    // P2.5  -  Unassigned,  Open-Drain, Digital
    // P2.6  -  Unassigned,  Open-Drain, Digital
    // P2.7  -  Unassigned,  Open-Drain, Digital

    // P3.0  -  Unassigned,  Open-Drain, Digital
    // P3.1  -  Unassigned,  Open-Drain, Digital
    // P3.2  -  Unassigned,  Open-Drain, Digital
    // P3.3  -  Unassigned,  Open-Drain, Digital
    // P3.4  -  Unassigned,  Open-Drain, Digital
    // P3.5  -  Unassigned,  Open-Drain, Digital
    // P3.6  -  Unassigned,  Open-Drain, Digital
    // P3.7  -  Unassigned,  Open-Drain, Digital

    P1MDOUT   = 0xFF;
    XBR1      = 0x40;
}

void Oscillator_Init()
{
    OSCICN    = 0x83;
}

// Initialization function for device,
// Call Init_Device() from your main program
void Init_Device(void)
{
    PCA0MD &= ~0x40;  
        Port_IO_Init();
    Oscillator_Init();
}
void main()
{       
        Init_Device();

        while(1)
        {
                led=0;
                Delay_s(1);
                led=1;
                Delay_s(1);
        }
}
/***********************************************************************************
* Function: Delay_us;
*
* Description: 延时程序, 延时时间范围: 0~65535us;
*
* Input:  times, 延时时间变量;
*
* Output: none;
*
* Return: none;
*
* Note:   延时时间最大是65535us;
************************************************************************************/
void Delay_us(unsigned int times)
{
    unsigned int i;

        for (i=0; i<times; i++)
        {
                _nop_();        // 调用NOP,延时1us
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
        
            _nop_();       
                _nop_();
        }
}

/***********************************************************************************
* Function: Delay_ms;
*
* Description: 延时程序, 延时时间范围: 0~65535ms;
*              
* Input:  times, 延时时间变量;
*
* Output: none;
*
* Return: none;
*
* Note:   延时时间最大是65535ms;
************************************************************************************/
void Delay_ms(unsigned int times)
{
    unsigned int i;
       
        for (i=0; i<times; i++)       
                Delay_us(1000);         // 调用延时函数,延时1ms               
}

/***********************************************************************************
* Function: Delay_s;
*
* Description: 延时程序, 延时时间范围: 0~65535s;
*              
* Input:  times, 延时时间变量;
*
* Output: none;
*
* Return: none;
*
* Note:   延时时间最大是65535s;
************************************************************************************/
void Delay_s(unsigned int times)
{
        unsigned int i;
       
        for (i=0; i<times; i++)
                Delay_ms(1000);           // 调用延时函数,延时1s
}

出0入0汤圆

 楼主| 发表于 2010-4-1 15:22:02 | 显示全部楼层
流水灯也没问题了,再次感谢shark

出0入0汤圆

发表于 2010-12-10 09:32:00 | 显示全部楼层
你写的延时我喜欢!收藏了

出0入0汤圆

发表于 2010-12-10 09:33:51 | 显示全部楼层
呵呵!我也试了试没问题

出0入0汤圆

发表于 2014-1-4 16:10:12 | 显示全部楼层
hehe .good.
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 16:08

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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