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

1、源代码

Code

1 #include<reg52.h>
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

二、从左到右的流水灯

1、源代码AT89C51

Code

1 #include<reg52.h>
2 #include<intrins.h>
3 #include<math.h>
4 #include<stdio.h>
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

三、左右来回的流水灯

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

源代码

Code

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 }

转载于:https://www.cnblogs.com/Leon6Dw57/archive/2010/01/06/1640049.html

我也玩单片机:流水灯相关推荐

  1. 51单片机流水灯制作

    文章目录 51单片机流水灯制作 初试与复试 初试 复试 制作 分工 制作之硬件 制作之软件 总结 51单片机流水灯制作 我不得不承认自己的毅力实在是太差了,原先准备一星期写一篇博客的目标一致没有实现, ...

  2. 51单片机流水灯现象1

    **` 51单片机流水灯程序 `** 初学者小白,分享上课时写的小程序和普中科技程序,感兴趣的可以瞧瞧. 程序如有相同冒犯了. /*********************************** ...

  3. 单片机流水灯三种实现

    单片机流水灯的三种实现方式(由上至下,再重下到上) 原理图 一般使用单片机的P1口 输出,不需要加上拉电阻: 由原理图可以看出这里采用低电平输出. 一.采用数组方式进行字节定义,最好理解的方式 #in ...

  4. c语言流水灯程序详细讲解,用c语言编写单片机流水灯程序详解

    用C语言编写的单片机流水灯程序 一.硬件电路 因为电路用单片机控制,所以电路非常简洁.其电路原理图见下图,印制板图如下图所示. ? 电路的核心部分是AT89C2051单片机,前面提到它有Pl和P3两组 ...

  5. AT89C51单片机流水灯c语言程序及详解(扫盲教程)

    AT89C51单片机是我们学习单片机必学的一个单片机,也是单片机入门的教材,下面给大家展示一下流水灯的编写方法适合初学者 首先先在proteus画出仿真图,方便仿真程序 下面来编写程序,先来写入头函数 ...

  6. 89c52流水灯汇编语言,89c52单片机流水灯汇编程序

    8路流水灯汇编语言程序的写法 汇编语言程序如下: ;假设1:D1~D8八个彩灯接在P1口,输出低电平发光 ;假设2:系统晶振为12MHz ;假设3:N = 5 ;程序如下: ORG 0000H MOV ...

  7. 基于STM32单片机流水灯仿真与程序设计

    STM32单片机流水灯仿真与程序设计 摘要 本次程序设计和仿真是基于Proteus和keil的环境对STM32F103系列单片机进行流水灯设计,通过配置STM32的GPIO工作模式,实现LED的点亮和 ...

  8. 单片机流水灯串口控制流水灯

    单片机流水灯串口控制的功能要求[从PC通过串口发送字符('R','L,'S),分别控制流水灯向右流动.向左流动.停止]: ​ (1)编写完整的C语言程序实现功能要求,采用循环轮询结构: ​ 答:循环轮 ...

  9. 80c51流水灯程序汇编语言,单片机流水灯汇编语言源代码大全(六款流水灯汇编语言源代码)...

    描述 单片机流水灯汇编语言源代码大全(一) 单片机AT89C51的P1口接8个发光二极管,让这8个发光二极管能够双灯左移之后再双灯右移,形成霹雳灯的效果,如此循环5次后全灭,延时0.5S.灯右移,形成 ...

  10. 蓝桥杯STC15单片机流水灯

    目录 LED原理图 单片机工作的基本时序 机器周期和指令周期 修改编码格式-支持中文 15单片机在线仿真 单片机型号说明:IAP15F2K61S2 新建工程时单片机型号选择STC15F2K60S2 单 ...

最新文章

  1. html语言制作留言条,利用DIV+CSS制作右下角弹出留言板
  2. Android 之小技巧
  3. macos spotlight can not search app
  4. POJ 2259 team queue团队排队问题
  5. 生成纯字母随机编号的示例(大小写混合).sql
  6. 1002.ubuntu系统级BUG-/dev/ttyUSB0
  7. SQL知识点脑图(一张图总结SQL)
  8. Chrome FeHelper 插件下载地址
  9. mysql获取字符串长度函数
  10. 手把手教你封装属于自己的Windows7安装镜像
  11. Linux_加密和安全详细介绍
  12. 饥饿的小易(java)
  13. 窥见数字未来“天机”,IBM正式发布2019十大行业洞察
  14. openlayers动态添加自定义div图层 具有筛选功能 和浮窗
  15. Graphics2D 详细应用秘籍
  16. 傅立叶级数和傅立叶变换是什么关系?
  17. 一文读懂服务式办公室、共享办公室、联合办公空间、开放式工位的关系
  18. python实现数据去重_Python实现的txt文件去重功能示例
  19. 研发人员绩效考核案例
  20. osm地图服务器搭建(二)

热门文章

  1. Openvino Linux 2022新版本(2.0)安装与运行sample流程
  2. 测试攻击机伪装成目标机 IP 给目标机发送攻击报文是否成功
  3. 最好听的钢琴曲排行榜 世界上最好听的钢琴曲
  4. 2010年8月9日 流水账
  5. 欧姆龙PLC项目程序NJ系列模切机程序
  6. C语言程序对夏令时的处理
  7. 全球与中国工业操作杆开关市场现状及未来发展趋势
  8. Ubuntu使用备忘
  9. 存储管理系统课程设计——C语言实现请求页式存储管理模拟系统
  10. 介绍自己过去现在和未来_过去,现在和未来