单片机之流水灯 AT89C51

发布者:Xinmei最新更新时间:2016-08-14 来源: eefocus关键字:单片机  流水灯  AT89C51 手机看文章 扫描二维码
随时随地手机看文章
流水灯是单片机入门必学的一个实验。这里面主要涉及的操作就是移位操作,还有就是对延时的控制。在没有接触定时器的时候,可以用for语句来进行延时,当然并不能做到精准延时,可以通过在试验箱上的实验现象,来修改延时时间的长短。

#include
#define uchar unsigned char
#define uint  unsigned int
 
void delay()
{
uchar m,s,n;
for(m=20;m>0;m--)
for(s=20;s>0;s--)
for(n=248;n>0;n--);
}
/*上面这个延时到底延时了多长时间,可以通过keil中的反汇编看到。晶振为12MHz。机器周期为1us。指令又分为单周期指令、双周期指令*/
/*************************************反汇编**************************/
C:0x0054    12005A   LCALL    delay(C:005A) //开始调用延时函数 跳转 这是双周期指令2us
    35:                 } 
C:0x0057    0A       INC      R2
C:0x0058    80D6     SJMP     C:0030
     5: void delay() 
     6: { 
     7:         uchar m,s,n; 
     8:         for(m=20;m>0;m--) 
C:0x005A    7F14     MOV      R7,#0x14 //单周期指令1us
     9:         for(s=20;s>0;s--) 
C:0x005C    7E14     MOV      R6,#0x14
    10:         for(n=248;n>0;n--); 
    11:  
C:0x005E    7DF8     MOV      R5,#0xF8
C:0x0060    DDFE     DJNZ     R5,C:0060 //248*2us 双周期指令
C:0x0062    DEFA     DJNZ     R6,C:005E //20*(248*2+3)us
C:0x0064    DFF6     DJNZ     R7,C:005C //20*(20*(248*2+3)+3)us
    12: } 
C:0x0066    22       RET       //双周期指令2us
即总共延时:循环内延时+循环外延时(5us)=496+9980+199660+5约等于0.2秒
/***********************************************************************/
void main(void)
{ uchar temp;
uchar a,b,i;
while(1)
{ temp=0xfe;
P1=temp;
for(i=0;i<8;i++)
{
a=temp<
b=temp>>(8-i); //右移有符号数符号位会保留,正数高位补0,负数高位补1.无符号数高位补0
P1=a|b;
delay();
 
}
for(i=0;i<8;i++)
{
a=temp>>i;
b=temp<<(8-i);
P1=a|b;
delay();
 
 
}
 
 
}
 
 
}

关键字:单片机  流水灯  AT89C51 引用地址:单片机之流水灯 AT89C51

上一篇:4X4矩阵键盘控制LED ----AT89C51
下一篇:基于ds18b20温度传感器的51单片C语言程序

推荐阅读最新更新时间:2024-03-16 15:04

单片机的单CPU仿真器的设计
摘要 :本文基于对8051单片机存储空间结构的深层次分析,提出了一种基于单片机的单CPU仿真器设计方案。该方案实用廉价,工程实践性强,可用于设计新的教学设备。 引言 单片机以它的廉价、体积小、可塑性强、稳定性高的特性,有着广阔的市场前景。 在用单片机开发产品时,虽然许多厂家设计了可编程ISP单片机,但是从安全与便捷方面考虑,单片机仿真器仍然是开发人员不可或缺的工具。单片机仿真器在产品开发阶段可用来替代单片机进行软硬件调试,从而迅速发现、纠正程序中的错误,大大缩短单片机开发的周期。但实际中仿真器过于昂贵,因此,设计制作出一款廉价且实用的仿真器有着广泛的市场。 传统的单片机仿真器硬件系统一般有三种实现方法。一、采用专用仿真的单
[单片机]
51单片机STC89C52控制LED闪烁(使用for语句实现延时)
/*-----------------------包含头文件区域-------------------------*/ #include reg52.h //单片机头文件 /*-----------------------端口/引脚定义区域----------------------*/ sbit LED=P2^0; //位定义P2.0引脚名为LED /*-----------------------主函数区域-----------------------------*/ void main() { unsigned int i; //定义无符号整形变量i(范围为0~65535) while(1)
[单片机]
如何使用STM8SMCU
为什么要使用STM8系列? 为项目或产品选择微控制器时,必须选择正确的微控制器。由于Microchip不断的生产和支持,PIC器件非常出色,而AVR器件包含一个非常强大的CPU(可能更多的是CISC而不是RISC)。然而,简单的原型最终可能变成商业产品,当这种情况发生时,每一分钱都很重要。 PIC控制器通常比AVR设备便宜,而AVR设备可能更难以随时编程。这就是STM8系列微控制器的用武之地,非常便宜,功能强大且速度快! 然而,ST设备存在缺陷;他们没有好的软件包,许多编译器/IDE需要购买许可证。值得庆幸的是,COSMIC(为STM设备生产C编译器)完全发布了他们的编译器,对STM8设备没有任何限制,而STM32设备仍然限制
[单片机]
 如何使用STM8SMCU
X25045单片机看门狗电路介绍
前言 工控系统在运行时,通常都会遇到各种各样的现场干扰,抗干扰能力是衡量工控系统性能的一个重要指标。看门狗(Watchdog)电路是自行监测系统运行的重要保证,几乎所有的工控系统都包含看门狗电路。在8096系列单片机和增强型8051系列单片机中,该系统已经做在芯片内部,用户只要用软件开放它就可以,使用很方便。但目前工控系统仍在使用廉价的普通型8051系列单片机,则看门狗电路必须由用户自己建立。 看门狗电路一般有软件看门狗和硬件看门狗两种。软件看门狗不需外接硬件电路,但系统需要出让一个定时器资源,这在许多系统中很难办到,而且若系统软件运行不正常,可能导致看门狗系统也瘫痪。硬件看门狗是真正意义上的“程序运行监视器”,如计数型的
[单片机]
X25045<font color='red'>单片机</font>看门狗电路介绍
单片机控制技术用于空调器通电延时启动保护器
引言   在一些电源电压不稳定的地方,使用空调器经常出现断电后又马上来电,要人为反复重新将空调器按键启动开机与设置工作模式和状态,这种情况更严重的是容易产生烧毁压缩机的故障。为了解决这个问题,笔者设计了一个空调器通电延时启动保护器,能很好的解决这个问题。当在每次来电时用空调器通电延时启动保护器,对空调器的控制电路延时3~5分钟通电,方法是在空调器的启动按键开关两端并联一个由空调器通电延时启动保护器控制的电子开关,自动控制空调器的按键开关启动开机。另外,根据复位电路的功能和工作原理,人为取消空调器控制电路中复位电路的作用。这样仅需第一次对空调器通电开机设置工作模式和状态,以后反复重新启动,空调器通电开机都能按第一次设置的工作模式
[单片机]
<font color='red'>单片机</font>控制技术用于空调器通电延时启动保护器
单片机的一些常识
从数据存储类型来说,8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code、data、xdata、idata以及根据51系列特点而设定的pdata类型,使用不同的存储器,将使程序执行效率不同,在编写C51程序时,最好指定变量的存储类型,这样将有利于提高程序执行效率(此问题将在后面专门讲述)。与ANSI-C稍有不同,它只分SAMLL、COMPACT、LARGE模式,各种不同的模式对应不同的实际硬件系统,也将有不同的编译结果。 在51系列中data,idata,xdata,pdata的区别: data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,
[单片机]
STM32单片机实现外部中断的步骤及方法
先从最简单的问题开始,用STM32外部中断的方法实现PB.0按键控制PA.0LED灯: 先总的说下实现中断的步骤: 1,配置NVIC寄存器(函数),设置中断为第几组,占先优先级和次优先级; 函数方法: void NVIC_Configuration() { NVIC_InitTypeDef NVIC_InitStruct; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStruct.NVIC_IRQChannel=EXTI0_IRQn; NVIC_InitStruct.NVIC_IRQChannelPreempTIonPriority=0; NVIC_Init
[单片机]
STM32<font color='red'>单片机</font>实现外部中断的步骤及方法
基于单片机AT89C51SND1C的MP3方案设计
随着人们对便携式音乐播放器要求的提高,MP3播放器以其较小的体积和较好的音质赢得了广大音乐爱好者的青睐。起初,MP3文件只能由电脑来播放,随着互联网的发展,促进了MP3播放器的产生,随着人们对MP3产品进一步的认识和更高层次的需求,MP3发生了一系列的变化,其更加小巧精致,更人机化和情趣化,个性区分也越来越强。还出现了功能的融人和产品的整合,总之,MP3播放器正朝着功能强大、外观丰富、价格便宜的方向发展。这里提出一种基于AT89C51SND1C的MP3播放器设计方案。 1 MP3播放器简介 MP3播放器是一种新兴的数字音乐播放器,播放MP3、WMA等格式的文件。通过用MPEG-1 Layer 3编码技术,可以得到大约12:1
[单片机]
基于<font color='red'>单片机</font><font color='red'>AT89C51</font>SND1C的MP3方案设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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