实现横排流水灯和竖排流水灯效果

发布者:SparklingSun最新更新时间:2012-09-18 来源: 51hei关键字:横排流水灯  竖排流水灯  延时函数 手机看文章 扫描二维码
随时随地手机看文章
任务:
1、横排流水
2、竖排流水
3、斜排流水
1、横排流水  

源程序:
/*******************************************************************************
作者:刘海涛
版本:第一次
日期:2010年7月23日
描叙:流水灯 顺序P0、P1、P2、P3先后从0到7bit
*******************************************************************************/


/**********************************头文件**************************************/
#include"reg52.h"
/******************************************************************************/


/*******************************************************************************
函数名:delay(),延时函数。
宏定义:无
输  入:无
输  出:无
*******************************************************************************/
delay(unsigned int dat)   //函数定义
{
 unsigned int i,j;
 for(i=0;i<=dat;i++)
   { 
    for(j=0;j<=20000;j++);
   }
}

void main(void)     //主函数
{
 unsigned char i;
 while(1)     //循环
 {
  for(i=0;i<8;i++)
  {  
   P0=0x01<=8)
    { 
        a=i-8;
   }
    
   P1=0x01<=8)
    {
   b=b-8;
   }
      P2=0x01<=8)
    {
   c=c-8;
   }
   P3=0x01<				   
关键字:横排流水灯  竖排流水灯  延时函数 引用地址:实现横排流水灯和竖排流水灯效果

上一篇:电子温度报警器设计制作总结
下一篇:用单片机编写几种跑马灯

推荐阅读最新更新时间:2024-03-16 13:08

for循环编写延时函数的方法
很多初学者对于程序中ms级延时函数的编写方法比较疑惑,其原理和方式虽然简单,但是却没有相关资料。这里用一个例程详细介绍一下。 过程参考如下: 在编译器下建立一个新项目,也可以利用已有项目。此过程中需要注意,单片机晶振的选择,因为for循环里指令的执行时间和晶振有直接关系,本例中晶振使用11.0592M。 编写一段关于延时的函数,主要利用for循环,代码如下: void delay_ms(unsigned int ms) { unsigned int i; unsigned char j; for(i=0;i ms;i++) { for(j=0;j 200;j++); for(j=0;j 10
[单片机]
PIC C延时函数和循环体优化
PIC C延时函数和循环体优化 很多朋友说C中不能精确控制延时时间,不能象汇编那样直观。 其实不然,对延时函数深入了解一下就能设计出一个理想的框价出来。 一般的我们都用 for(x=100;--x;){;}此句等同与x=100;while(--x){;}; 或for(x=0;x 100;x++){;} 来写一个延时函数。 在这里要特别注意:X=100,并不表示只运行100个指令时间就跳出循环。 可以看看编译后的汇编: x=100;while(--x){;} 汇编后: movlw 100 bcf 3,5 bcf 3,6 movwf_delay l2 decfsz _delay go
[单片机]
中断中处理延时及一些函数的调用规则
1,中断处理程序中不能使用有睡眠功能的函数,如ioremap,kmalloc,msleep等,理由是中断程序并不是进程,没有进程的概念,因此就没有休眠的概念; 2,中断处理程序中的延时可以用忙等待函数来代替,如ndelay,udelay,mdelay等,这些函数在实现上本质是根据CPU频率进行一定次数的循环;最好不要使用mdelay,因为毫秒延时对内核来说已经是非常大了。但是在中断处理程序中使用msleep却不行。(见linux设备驱动开发详解第二版p210页) 3,printk函数在中断处理函数中可以使用,但是会占用较多时间,降低效率。在调IIC驱动的时候,由于IIC读取写入处理时必须进行一定延时,在我没有使用udela
[单片机]
【精确延时函数】IAR(MSP430)中的精确延时函数
在 IAR 软件430的编译器里面我们可以利用它内部的延时子程序来实现我们想要的高精度软件延时,方法如下: 具体如下【引用别人的,这个延时函数很高】: 注意: __delay_cycles(x),x必须是常量或则是常量表达式,如果是变量则编译报错! IAR FOR AVR中精确软件延时方法 在用单片机的时候常常会用到延时函数,430也不例外,常见的形式有: void delay(unsigned int ms) { unsigned int i,j; for( i=0;i ms;i++) for(j=0;j 1141;j++); //8MHz晶振时 } 复制代码//以上程序段在要求延时精度不高的场合可以用。 但在
[单片机]
STM32L151中RTC_WakeUpCmd()函数带来了系统延时
ErrorStatus RTC_WakeUpCmd(FunctionalState NewState) { __IO uint32_t wutcounter = 0x00; uint32_t wutwfstatus = 0x00; ErrorStatus status = ERROR; assert_param(IS_FUNCTIONAL_STATE(NewState)); RTC- WPR = 0xCA; RTC- WPR = 0x53; if (NewState != DISABLE) { RTC- CR |= (uint32_t)RTC_CR_WUTE; status = SUCCE
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved