我也玩单片机:流水灯

发布者:pi26最新更新时间:2024-08-19 来源: cnblogs关键字:单片机  流水灯 手机看文章 扫描二维码
随时随地手机看文章

一、点亮一个P1.0口的发光管

5518-412664a33f63bec4

1、源代码


1 #include
2  #define uint unsigned int    //宏定义
3  #define uchar unsigned char  //宏定义
4 sbit led=P1^0; /*定义P1.0*/
5 sbit led1=P1^1;/*定义P1.1*/
6
7 main()
8 {  
9    uint a;
10    while(1)
11    {   a=50000;
12         led=0;    /*点亮发光管*/
13         while(a--);
14         a=50000;
15         led=1;
16         while(a--);
17 }
18 }

2、分析

1、位操作:置位

sbit的作用:

在C中sbit是“定义位变量”的说明性语句,并不产生指令代码;而在汇编中setb是一条真正的“指令”(意思就是set bit),在汇编中与C中sbit相对应的说明性语句是bit。下面是2种语言中等价的语句:

C语言汇编
sbit led1=p1^0;led1 bit P1.0
led1=1;setb led1
led1=0;clr led1

2、延时

利用循环多次运行指令的延时

怎么计算延时时间呢?

while(a--);这样的延时方式准确吗?

要自动化生成延时代码?试一下单片机小精灵吧。http://jy.newhua.com/soft/86816.htm#down


二、从左到右的流水灯

0-412664a3520ce513

1、源代码AT89C51


1 #include
2 #include
3 #include
4 #include
5 #define uchar unsigned char
6 #define uint  unsigned int
7 void delay(uint z)
8 {
9    uint x,y;
10    for(x=z;x>0;x--)
11    for(y=110;y>0;y--);
12 }
13 void main()
14 {      
15    uchar aa;
16    P0=0xfc;//低电平
17    while(1)
18    {
19       delay(500);
20       aa=P0;
21       //aa=_crol_(aa,1);
22       aa>>=1;
23       P0=aa;
24    }
25 }


2、分析

1、延时

这里的延时函数使用了双重循环:可以凑成整数单位,使输入参数更直观。

2、位移动

aa=_crol_(aa,1);

这是什么函数?其实,效果跟aa>>=1;是一样的。

INTRINS.H:内部函数

_crol_ 字符循环左移

_cror_ 字符循环右移

_irol_ 整数循环左移

_iror_ 整数循环右移

_lrol_ 长整数循环左移

_lror_ 长整数循环右移

_nop_ 空操作8051 NOP 指令

_testbit_ 测试并清零位8051 JBC 指令

详解:

函数名: _crol_,_irol_,_lrol_

原 型:

unsigned char _crol_(unsigned char val,unsigned char n);

unsigned int _irol_(unsigned int val,unsigned char n);

unsigned int _lrol_(unsigned int val,unsigned char n);

功 能:_crol_,_irol_,_lrol_以位形式将val 左移n 位,该函数与8051“RLA”指令。

参考:

C51中的INTRINS.H:内部函数 -- zalezou's Blog

三、左右来回的流水灯

电路图跟“二、从左到右的流水灯”一样

源代码


1 void main()
2 {
3         uint led,i;
4         led=0x01;
5 while  (1)
6         {
7         for(i=0;i<8;i++)
8         {
9                 P2=led;
10                 delay(500);
11                 led<<=1;
12         }
13         for(i=8;i>0;i--)
14         {
15                 P2=led;
16                 delay(500);
17                 led>>=1;
18         }
19         }
20 }


关键字:单片机  流水灯 引用地址:我也玩单片机:流水灯

上一篇:LED类代码
下一篇:我也玩单片机:8只数码管滚动显示单个数字

推荐阅读最新更新时间:2024-11-02 18:47

嵌入式学习笔记17——AVR单片机之头文件简介和使用
1. ICCAVR的头文件形式为: #include io*v.h 芯片使用的不是mega类;或#include iom*v.h 使用的芯片为mega类。其中 * 用相应的芯片型号代替,如芯片ATmega8,则头文件为#include iom8v.h 2. 在AVR单片机的使用中有一个重要的头文件,macros.h,该头文件定义了一些常用的宏,如BIT(X),以及看门狗复位,开/关全局中断等等。 3. AVR单片机的位操作:AVR中没有像51单片机中sbit的用法,但是同样可对单个I/O口进行操作,其具体方法如下: DDRB | =(1 3); DDRB | =BIT(3); DDRB | =BIT(DDR
[单片机]
一种太阳能报警器系统设计
0 引言 我国是世界上受自然灾害影响最为严重的国家之一,近年来由于滥砍滥伐严重,自然资源过度开采,造成地质灾害和自然灾害发生的频率增多,破坏程度也越来越严重,2008年的四川汶川大地震、2010年的贵州玉树地震都造成了严重的人员死亡和经济损失,还有各地频发的各种泥石流、山体滑坡和水灾等都造成了不同程度的破坏,随时威胁着人民的生命财产安全。每年国家在防灾、抗灾和救灾方面都要花费大量的人力物力。如果能在灾害监测和预警方面下大力气,做到准确预测灾害的来临,灾前做好充分的准备工作,可以将灾害所造成的人员伤亡和经济损失减到最低,也为国家节省大量的救灾资金。 太阳能防空防灾电声警报器为各自独立的功能部件用积木形式集成安装在可移动的防水机
[单片机]
一种太阳能报警器系统设计
MCU市场生变:进为可攻 退因难守
MCU市场波澜再起。国内闪存供应商兆易创新近日发布基于ARM CortexTM-M3内核GD32F103系列32位通用MCU产品。与此同时,富士通子公司富士通半导体宣布退出MCU业务,作价约1.1亿美元以及6500万美元库存卖给另一闪存芯片供应商Spansion(飞索)。一进一退之间的MCU市场变化都指向两个“超现实”问题:一是闪存厂商进入MCU市场有何优势?二是国内厂商在32位MCU市场到底有多大腾挪空间? 进为可攻 嵌入式闪存已成为MCU市场中最为重要的一种差异化产品,闪存厂商从配角变成主角,将对MCU市场产生影响。 闪存厂商成为这些事件的“胜者”,一则表明嵌入式闪存已成为MCU市场中最为重要的一种差异化产品,
[单片机]
如何通过PIC单片机设计一款多媒体终端遥控器?
1 设计理念和原理 1.1 设计理念 随着数字家庭等领域技术的迅速发展,在多媒体终端上的增值业务将越来越多,浏览网页、搜索、短信等都需要遥控器进行输入。但作为连接用户和终端之间的重要外设,遥控器的设计理念还停留在模拟电视时代,体验感较差。目前用户输入的解决方式是呼出终端的内置输入法,这样就带来了两个问题:一,不同厂家的终端都需要内置自己的中英文输入法,占用资源,而且必须搭配自己的遥控器使用,通用性不高;二,用户在输人时必须一边看遥控器输入一边看屏幕确认输入,如果文字较多会造成频频抬头和低头的麻烦,难以忍受。基于以上缺点,本文提出将输入法内置于遥控器的理念,在遥控器上输入文字后再统一将文字编码用红外线发给终端,终端接收后将编码译成文
[单片机]
如何通过PIC<font color='red'>单片机</font>设计一款多媒体终端遥控器?
基于单片机的高速列车轴温集中监测系统
0 引言 列车在高速运行的过程中,机车与钢轨的频繁冲击会造成车辆轴承的发热,当轴承磨损和产生缺陷时,会造成机损从而影响车辆的正常运行,甚至出现热切轴,直接导致火车发生故障翻车,给国家和社会在铁路运输造成巨大的经济损失。目前我国大部分采用红外轴温监测系统,但这种设备易受外界环境影响、探测点受车身摆动影响定位困难等原因,使得轴温过高告警兑现率低、误报率极高、而且外界因素对其工作状态容易产生很大的干扰,失真严重,极有可能给发出错误的温度提示,影响铁路运输的正常工作 .针对这种情况,设计了系统简洁、布局小巧、灵敏度高、收发信息能力快速的高速列车轴温集中监测系统,可在第一时间发现运行中的列车轴承是否温度过高,如轴温超过预设定值,就发出报警
[单片机]
基于<font color='red'>单片机</font>的高速列车轴温集中监测系统
基于单片机应用系统的串行通信设计
  1 引 言   在红外成像技术的电力设备状态检测系统中,基于AT89C51单片机的应用系统,采用美国雷态公司的型号为3iLRL3的非接触式红外测温仪。该测温仪采用的是RS232C串行通信标准接口,该接口在很多通信设备中通用,目前与PC机的直接串行通信也是RS 232C接口。尽管RS232C性能指标并非很好,但还是有广泛的市场支持。就可以方便的在2个数字设备之间进行信息的交换,实现全双工的传送数据,硬件成本低。而且通用性好。   2 串行通信的硬件设计   串行通信是指 使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别使用于计算机与计算机、计算机与外
[单片机]
基于<font color='red'>单片机</font>应用系统的串行通信设计
单片机控制的简易单相逆变电源
    摘要: 文章介绍了用AT89C1051单片机控制的单相逆变器电源的设计文字,该方案通过消谐PWM控制可使逆变电源的输出谐波明显减少,并经小容量的高通滤波后即可得到高质量的正弦波电压输出。该电源通过单相电机的运行试验证明,效果良好,而且结构简单、成本低廉、性能稳定可靠,具有一定的实用价值。     关键词: 逆变电源 消谐控制 单片机 AT89C1051 1 概述 消除输出电压谐波是逆变电源PWM控制的主要目的之一。在此方面,单相逆变电源的结构较三相电源简单,PWM控制也更为方便,因而在单片机的控制下实现PWM的调节策略十分有效。然而,从控制系统的结构和硬件成本方面应考虑采用什么控制算法才能使逆变电
[工业控制]
新能源汽车控制器详解:VCU、ECU、MCU和电池BMS
新能源汽车中的各种控制器主要包括:整车控制器(VCU)、发动机控制器(ECU)、电机控制器(MCU)和电池管理系统(BMS)。 新能源汽车的三电技术,包括电池、电驱和电控。电池部分阐述了动力电池系统的构成;电驱部分讲解了传动机构、电机和电机控制器的功能; 一、整车控制器(VCU) 1. 功能 1.1 驱动系统控制 1.2 整车能量管理和优化 1.3 整车通信和网络管理 1.4 故障处理与诊断 1.5 汽车状态显示 2. 工作模式 2.1 自检模式 2.2 启动模式 2.3 起步模式 2.4 行驶模式 2.5 制动模式 2.6 停车模式 2.7 故障模式
[汽车电子]
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved