流水灯实践学习心得体会

小草范文网  发布于:2016-12-15  分类: 学习心得体会 手机版

篇一:对LED流水灯的学习总结

单片机的学习总结

第一个实验:

一、 从点亮一个发光二极管到实现流水灯的操作实验报告

实验目的:

(1)知道单片机最小系统和典型系统

(2)知道如何建立一个工程,完成一个点亮发光二极管的编译和烧写 实验器件以及基础知识描述:

(1)LED发光二极管是一种半导体二极管,可以把电能转换成光能,有一个PN

结构成。

(2)晶振:全称为晶体振荡器,其作用是产生原始的时钟频率,这个频率晶振

经过频率发生器的放大或缩小后就成为了电脑中各种不同的总线频率。

(3)IO端口的驱动能力:每个I/O端口允许的做大20mA的灌电流,可以直接

驱动LED和继电器;高电平输出时一般对负载提供电流其提供的电流叫“拉电流”;低电平输出时一般是要吸收负载的电流,其吸收的电流叫“灌电流”。

(4)P1.0---P1.7:准双向接口(内置上拉电阻),端口P1的数据寄存器用P1表示,

端口置一表示高电平,设置为0表示输出低电平。

(5)如何进行程序烧写:

5.1、用传统的并行烧写器

5.2采用目前流行的IAP在线下载程序,STC的单片机可以不要编程器,通过USB或串口下载程序

(6)延时函数:每条指令都占有一定的时间,如果让机器什么都不干机器就会

延时,外加循环此数

一个完整的点亮LED源代码程序如下:

#include<reg52.h>

Sbit LED=P1^0;

void main()

{

LED=1;

LED=0;

While(1)

}

有这一个简单的程序实现使p1^0端口控制的LED灯点亮,如果要实现多个灯同时点亮呢?可以定义多个端口,使之输出低电平即可:

//实现第1、3、5、7个LED灯点亮

#include<reg52.h>

sbit LED0=P1^0;

sbit LED2=P1^2;

sbit LED4=P1^4;

sbit LED6=P1^6;

main(void)

{

LED0=0;

LED2=0;

LED4=0;

LED6=0;

while(1)

{

}

}

实现了控制灯亮暗后,程序中添加一段延时程序即可实现灯的闪烁:延时函数分为有参延时和无参延时;

//一个简单的有参延时函数:

void delay(unsigned int t)

{

While(--t);

}

//无参延时函数:

void delay()

{

for(int i=1000;i>0;i++)

for(int j=1000;j>0;j++);

}

或者: void delay()

{

Unsigned int i=300;

While(--i);

}

通过进一步的分析可以进行流水灯的设计:

设计目的:从实际工程出发,在理论和实践上掌握流水灯系统的基础组成,工作

原理。对设计流水灯有一个完整的概念。

任务描述:本任务通过左移亮灯电路来学习单片机系统开发设计是电路原理图的

设计和步骤,掌握单片机应用电路和程序的开发过过程。

任务目标:分别用位输出操作,移位操作、循环操作完成三个典型的流水灯设计 问题解决:如何改变流水灯的流动的速度:

1、改变调用延时函数的实参

2、更换不同频率的晶振

流水灯的设计:

由以上基础可以设计出不同形式的流水灯,第一可以先对IO端口进行初始化,使之P1=1;接着是第一个灯亮——》然后延时——》第一个灯暗——》第二个灯亮——>》延时——》第二个灯暗。。。。。。。。依次循环下去;

方案二:可以运用左移或者右移使灯依次亮暗

原理图如下:

实现第一个框图时程序如下: #include<reg52.h>

sbit LED0=P1^0;

sbit LED1=P1^1;

sbit LED2=P1^2;

sbit LED3=P1^3;

sbit LED4=P1^4;

sbit LED5=P1^5;

sbit LED6=P1^6;

sbit LED7=P1^7;

#define ON 0

#define OFF 1

void delay(float t)

{

unsigned int i,j;

i=t*100;

while(i--)

{

for(j=8000;j;j--)

;

}

}

void main()

{

while(1)

{

LED0=ON;

delay(0.01);

LED0=OFF;

LED1=ON;

delay(0.1);

LED1=OFF;

LED2=ON;

delay(0.1);

LED2=OFF;

LED3=ON;

delay(0.1);

LED3=OFF;

LED4=ON;

delay(0.1);

LED4=OFF;

LED5=ON;

delay(0.1);

LED5=OFF;

LED6=ON;

delay(0.1);

LED6=OFF;

LED7=ON;

delay(0.1);

LED7=OFF;

}

}

实现框图二的程序为: #include<reg52.h>

void delay(unsigned int t) {

while(--t);

}

void main()

{

unsigned char i;

P1=0xfe;

while(1)

{

for(i=0;i<8;i++) {

delay(50000);P1<<=1;P1=P1|0x01; }

篇二:流水灯实习报告

1 概述

1.1 DSP介绍

数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列表示。在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛的应用。德州仪器、Freescale等半导体厂商在这一领域拥有很强的实力。

DSP (digital signal processor)是一种独特的微处理器,是以数字信号 来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或l的数字信 号。再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解 译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可 达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界 中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道 的两大特色。

DSP微处理器(芯片)一般具有如下主要特点:

(1)在一个指令周期内可完成一玖乘法和一次加法;

(2)程序和数据空间分开,可以同时访问指令和数据;

(3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问;

(4)具有低开销或无开销循环及跳转的硬件支持;

(5)快速的中断处理和硬件1/0支持;

(6)具有在单周期内操作的多个硬件地址产生器;

(7)可以并行执行多个操作;

(8)支持流水线操作,使取指、译码和执行等操作可以熏叠执行。

1.2 DSP芯片的分类

DSP芯片可以按照下列三种方式进行分类。

1.按基础特性分

这是根据DSP芯片的工作时钟和指令类型来分类的。如果在某时钟频率范围内的任何时钟频率上,DSP芯片都能正常工作,除计算速度有变化外,没有性能的下降,这类DSP芯片一般称为静态DSP芯片。例如,日本OKI 电气公司的DSP芯片、TI公司的TMS320C2XX系列芯片属于这一类。如果有两种或两种以上的DSP芯片,它们的指令集和相应的机器代码机管脚结构相互兼容,则这类DSP芯片称为一致性DSP芯片。例如,美国TI公司的TMS320C54X就属于这一类。

2.按数据格式分

这是根据DSP芯片工作的数据格式来分类的。数据以定点格式工作的DSP芯片称为定点DSP芯片,如TI公司的TMS320C1X/C2X、TMS320C2XX/C5X、TMS320C54X/C62XX系列,AD公司的ADSP21XX系列,AT&T公司的DSP16/16A,Motolora公司的MC56000等。以浮点格式工作的称为浮点DSP芯片,如TI公司的TMS320C3X/C4X/C8X,AD公司的ADSP21XXX系列,AT&T公司的DSP32/32C,Motolora公司的MC96002等。

不同浮点DSP芯片所采用的浮点格式不完全一样,有的DSP芯片采用自定义的浮点格式,如TMS320C3X,而有的DSP芯片则采用IEEE的标准浮点格式,如Motorola公司的MC96002、FUJITSU公司的MB86232和ZORAN公司的ZR35325等。

3.按用途分

按照DSP的用途来分,可分为通用型DSP芯片和专用型DSP芯片。通用型DSP芯片适合普通的DSP应用,如TI公司的一系列DSP芯片属于通用型DSP芯片。专用DSP芯片是为特定的DSP运算而设计的,更适合特殊的运算,如数字滤波、卷积和FFT,如Motorola公司的DSP56200,Zoran公司的ZR34881,Inmos公司的IMSA100等就属于专用型DSP芯片。

1.3 DSP的应用:

(1)语音处理:语音编码、语音合成、语音识别、语音增强、语音邮件、语音储存等。

(2)图像/图形:二维和三维图形处理、图像压缩与传输、图像识别、动画、机器人视觉、多媒体、电子地图、图像增强等。军事、保密通信、雷达处理、声

呐处理、导航、全球定位、跳频电台、搜索和反搜索等。

(3)仪器仪表:频谱分析、函数发生、数据采集、地震处理等。

(4)自动控制:控制、深空作业、自动驾驶、机器人控制、磁盘控制等。

(5)医疗:助听、超声设备、诊断工具、病人监护、心电图等。

(6)家用电器:数字音响、数字电视、可视电话、音乐合成、音调控制、玩具与游戏等。

(7)生物医学信号处理举例:

CT:计算机X射线断层摄影装置。(其中发明头颅CT英国EMI公司的豪斯 菲尔德获诺贝尔奖。)

CAT:计算机X射线空间重建装置。出现全身扫描,心脏活动立体图形,脑 肿瘤异物,人体躯干图像重建。

随着DSP芯片性能价格比的不断提高,可以预见DSP芯片将会在更多的领域内得到更为广泛的应用。

数字信号处理的目的是对真实世界的连续模拟信号进行测量或滤波。因此在进行数字信号处理之前需要将信号从模拟域转换到数字域,这通常通过模数转换器实现。而数字信号处理的输出经常也要变换到模拟域,这是通过数模转换器实现的。数字信号处理的算法需要利用计算机或专用处理设备如DSP和专用集成电路(ASIC)等。数字信号处理的研究方向应该更加广泛、更加深入.特别是对于谱分析的本质研究,对于非平稳和非高斯随机信号的研究,对于多维信号处理的研究等,都具有广阔前景。

数字信号处理技术发展很快、应用很广、成果很多。多数科学和工程中遇到的是模拟信号。以前都是研究模拟信号处理的理论和实现。模拟信号处理缺点:难以做到高精度,受环境影响较大,可靠性差,且不灵活等。数字系统的优点:体积小、功耗低、精度高、可靠性高、灵活性大、易于大规模集成、可进行二维与多维处理。随着大规模集成电路以及数字计算机的飞速发展,加之从60年代末以来数字信号处理理论和技术的成熟和完善,用数字方法来处理信号,即数字信号处理,已逐渐取代模拟信号处理。

数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们所需要的信号形

式。数字信号处理是将信号以数字方式表示并处理的理论和技术。数字信号处理与模拟信号处理是信号处理的子集。数字信号处理技术及设备具有灵活、精确、抗干扰强、设备尺寸小、造价低、速度快等突出优点,这些都是模拟信号处理技术与设备所无法比拟的。

数字信号处理是20世纪60年代,随着信息学科和计算机学科的高速发展而迅速发展起来的一门新兴学科。它的重要性日益在各个领域的应用中表现出来。 其主要标志是两项重大进展,即快速傅里叶变换(FFT)算法的提出和数字滤波器设计方法的完善。数字信号处理是把信号用数字或符号表示成序列,通过计算机或通用(专用)信号处理设备,用数值计算方法进行各种处理,达到提取有用信息便于应用的目的。例如:滤波、检测、变换、增强、估计、识别、参数提取、频谱分析等。

1.4问题描述

输入输出端口(1/0)是DSP芯片内部电路与外部世界交换信息的通道。输入端口负责从外界接收检测信号.键盘信号等各种开关量信弓;输出端口负责向外界输送有内部电路产生的处理结果.显示信息,控制命令.驱动信号。使用中断和定时器延时循环程序,设计DSP的流水灯控制器,在事件管理器中应用EV中断。

2 TMS320C54X

2.1 DSP54X简介

TMS320C54X是TI公司为实现低功耗、高速实时信号处理而专门设计的16位定点数字信号处理器,采用改进的哈佛结构,具有高速的操作灵活性和运行速度,适用于远程通信等实时嵌入式应用需要,现已广泛地应用于无线电通信系统中。

TMS320C54X具有的主要优点如下:

⑴围绕1组程序总线、3组数据总线和4组地址总线而建立的改进哈佛结构,提高了系统的多功能性和操作的灵活性;

⑵具有高度并行性和专用硬件逻辑的CPU设计,提高了芯片的性能;

⑶具有完善的寻址方式和高度专业化指令系统,更适应于快速算法的实现和高度语言编程的优化;

⑷模块化结构设计,使派生器件得到了更快的发展;

⑸采用先进的IC制造工艺,降低了芯片的功耗,提高了芯片的性能;

⑹采用先进的静态设计技术,进一步降低功耗,使芯片具有更强的应用能力。 TMS320C54X系列DSP芯片种类很多,但结构基本相同,主要由中央处理器CPU、内部总线控制、特殊功能寄存器、数据存储器RAM、程序存储器ROM、I/O接口扩展功能、串行口、主要通信接口HPI、定时器、中断系统等10个部分组成。

54X开发板分为TI2000-011DSP54X增强型、DSP54X+CPLD开发板、 SHX-DSP54X开发板。引DSP54X+CPLD开发板套件是一套基TMS320C54X+EPM240的DSP+CPLD的学习开发平台,充分发挥DSP54X和ALTERA MAX II的灵活性和功能强大,用户手册详实易懂,大量源码轻松上手(分DSP和CPLD两部分),我们为用户提供一个完整的IP核通过CPLD进行系统资源分配,用户可以根据需要进行裁剪或追加功能。由于我们的外设都是通过CPLD连接与DSP连接进行电平转换、隔离和总线。仲裁等先进技术,所以使用极为方便灵活、简洁、并且运行及其稳定。这种结构可以充分利用了CPLD的灵活性和功能强大的IP核进行功能更强的系统应用。是初学者和从事开发的科研工作者学习5416和CPLD的首选之品。 本开发板供初学者学习使用,也可作为系统板嵌入到用户的产品供用户进行二次开发以便缩短产品开发周期。SHX-DSP5416A开发板是DSP 5416系列产品中的重要一员。它的最大优点是直观简单明了,极为适于初学者。此棋板采用统一的系统结构、模块结构和机械结构,以多种典型DSP处理器构成的DSP基本系统、标准总线和相同物理尺寸的DSP嵌入式控制模板,将5416的功能发挥的淋漓尽致,为学习者提供了强大、有效的学习平台。用户手册详实易懂,大量源码轻松上手(分DSP和CPLD两部分),我们为用户提供一个完整的IP核通过CPLD进行系统资源分配,用户可以根据需要进行裁剪或追加功能。

2.2 DSP54X事件管理器模块

2.2.1事件管理器的引脚说明

篇三:流水灯心得

先看看流水灯是怎么样和芯片连接起来的吧!

[attachment=6361]

先从锁存器开始吧

[attachment=6358] [attachment=6360]

先来回顾锁存器是什么吧!!

锁存器 是一种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用下改变状态。

简单锁存器描述:输出端的状态不会随输入端的状态变化而变化,只有在有锁存信号时输入的状态被保存到输出,直到下一个锁存信号。通常只有0和1两个值。典型的逻辑电路是D触发器。

由若干个钟控D触发器构成的一次能存储多位二进制代码的时序逻辑电路,叫锁存器件。

逻辑结构与功能表

8位锁存器74HC573的逻辑图见图所示。其中使能端G加入CP信号,D为数据信号。输出控制信号为0时,锁存器的数据通过三态门进行输出。

应用场合:

数据有效延迟后于时钟信号有效。这意味着时钟信号先到,数据信号后到。

在某些运算器电路中有时采用锁存器作为数据暂存器。

[attachment=6357]

再来讲讲发光二极管!!!!

发光二极管(本文来自:wwW.xIaocAofanwEn.coM 小草 范文 网:流水灯实践学习心得体会)

发光二极管简称为LED。由镓(Ga)与砷(AS)、磷(P)的化合物制成的二极管,当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管, 在电路及仪器中作为指示灯,或者组成文字或数字显示。磷砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极管发黄光。

它是半导体二极管的一 种,可以把电能转化成光能;常简写为LED。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。当给发光二极管加上正向电压后,从P区注 入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生自发辐射的荧光。不同的半导体材料中电子和空穴所 处的能量状态不同。当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短。常用的是发红光、绿光或黄光的二极管。

[attachment=6353][attachment=6354]

发光二极管的反向击穿电压约5伏。它的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过管子的电流。限流电阻R可用下式计算:

R=(E-UF)/IF

式中E为电源电压,UF为LED的正向压降,IF为LED的一般工作电流。发光二极管的两根引线中较长的一根为正极,应按电源正极。有的发光二极管的两根引线一样长,但管壳上有一凸起的小舌,靠近小舌的引线是正极。

与小白炽灯泡和氖灯相比,发光二极管的特点是:工作电压很低(有的仅一点几伏);工作电流很小(有的仅零点几毫安即可发光);抗冲击和抗震性能好,可靠 性高,寿命长;通过调制通过的电流强弱可以方便地调制发光的强弱。由于有这些特点,发光二极管在一些光电控制设备中用作光源,在许多电子设备中用作信号显 示器。把它的管心做成条状,用

7条条状的发光管组成7段式半导体数码管,每个数码管可显示0~9十个数目字。 发光二极管分类

发光二极管还可分为普通单色发光二极管、高亮度发光二极管、超高亮度发光二极管、变色发光二极管、闪烁发光二极管、电压控制型发光二极管、红外发光二极管和负阻发光二极管等。

1.普通单色发光二极管 普通单色发光二极管具有体积小、工作电压低、工作电流小、发光均匀稳定、响应速度快、寿命长等优点,可用各种直流、交流、脉冲等电源驱动点亮。它属于电流控制型半导体器件,使用时需串接合适的限流电阻。

普通单色发光二极管的发光颜色与发光的波长有关,而发光的波长又取决于制造发光二极管所用的半导体材料。红色发光二极管的波长一般为 650~700nm,琥珀色发光二极管的波长一般为630~650 nm ,橙色发光二极管的波长一般为610~630 nm左右,黄色发光二极管的波长一般为585 nm左右,绿色发光二极管的波长一般为555~570 nm。

常用的国产普通单色发光二极管有BT(厂标型号)系列、FG(部标型号)系列和2EF系列,见表4-26、表4-27和表4-28。

常用的进口普通单色发光二极管有SLR系列和SLC系列等。

2.高亮度单色发光二极管和超高亮度单色发光二极管 高亮度单色发光二极管和超高亮度单色发光二极管使用的半导体材料与普通单色发光二极管不同,所以发光的强度也不同。通常,高亮度单色发光二极管使用砷铝化镓(GaAlAs)等材料,超高亮度单色发光二极管使用磷铟砷化镓(GaAsInP)等材料,而普通单色发光二极管使用磷化镓(GaP)或磷砷化镓(GaAsP)等材料。

常用的高亮度红色发光二极管的主要参数见表4-29,常用的超高亮度单色发光二极管的主要参数见表4-30。

3.变色发光二极管 变色发光二极管是能变换发光颜色的发光二极管。变色发光二极管发光颜色种类可分为双色发光二极管、三色发光二极管和多色(有红、蓝、绿、白四种颜色)发光二极管。

变色发光二极管按引脚数量可分为二端变色发光二极管、三端变色发光二极管、四端变色发光二极管和六端变色发光二极管。

常用的双色发光二极管有2EF系列和TB系列,常用的三色发光二极管有2EF302、2EF312、2EF322等型号,见表4-31。

4.闪烁发光二极管 闪烁发光二极管(BTS)是一种由CMOS集成电路和发光二极管组成的特殊发光器件,可用于报警指示及欠压、超压指示。其外形、内部结构图及内电路框图见图4-26和图4-27。

闪烁发光二极管在使用时,无须外接其它元件,只要在其引脚两端加上适当的直流工作电压(5V)即可闪烁发光。

5.电压控制型发光二极管 普通发光二极管属于电流控制型器件,在使用时需串接适当阻值的限流电阻。电压控制型发光二极管(BTV)是将发光二极管和限流电阻集成制作为一体,使用时可直接并接在电源两端

好现在看我们是怎样编程序点燃第一个发光二极管的!

[attachment=6359]

注意,上面第一个图上发光二极管连的是P1口,下面的这张图是连的P0口,我们做试验都以这这个板子为基准

[attachment=6355]

插播两个内容,先来讲讲main主函数

Main 函数

格式:void main()

特点:无返回值,无参。

任何一个C程序有且仅有一个main函数,它是整个程序开始执行的入口。

例:void main()

{

总程序从这里开始执行;

其他语句;

}

其次是while函数

While (表达式)

{语句(内部也可为空)}

特点:先判断表达式,后执行语句。

原则:若表达式不是0,即为真,那么执行语句。否则跳出while 语句。

#include<reg52.h>//包含库函数

sbit D1=P0^0;//位定义

void main()

{

while(1)

{

D1=0;//点亮第一个二极管,51单片机默认全为高电平

}

}//位定义形式点亮二极管

位定义形式点亮第一个二极管!

#include<reg52.h> //52单片机头文件

void main() //主函数

{

P0=0xfe;//将单片机P1口的8个口由高到低分别赋值为11111110

while(1);//程序停止在这里,在后面会讲到为什么这样写。

}

[b]总线形式点亮第一个二极管!

现在介绍下烧录器!

我用的是这个[attachment=6356]

[attachment=6351]

[attachment=6352]

这样我们就能点亮第一个发光二极管了,由此我迈开了单片机学习的第一步。

现在我们真正要开始单片机流水灯的控制了,确定我们进入程空时代!!

我们先来编个程序使发光二极管一闪一闪的发光二极管一闪一闪,其实就是单片机控制使二极管一段时间亮一段时间不亮所发生的效果,也就是说我们在编程序的时候要做的就是设定好时间阻隔。

#include<reg52.h>

sbit p1_1=P0^0;

unsigned int a;

void main()

{

while(1)

{

a=51000;//一个无符号整型的最大值是65535,大于这个数,单片机存储的就是(65535-X)

p1_1=0;//打开二极管

while(a--);//程序在这里延时,这里设计的大概是半秒钟

a=51000;// a的值在先前已经减到0,在赋值

while(a--);//到这就一秒钟了

p1_1=1;//关掉二极管

a=51000;//a的值在先前已经减到0,在赋值

while(a--);

a=51000;

while(a--);//在这函数已经执行完成,跳到下个while(1)函数,由于while值为1,所以函数继续进行

}

}

借这个程序来讲讲子程序和for函数

在计算机科学中,作为更大的程序的一部分,一个子程序(函数,过程,或者是子例程)是完成一项特定任务的代码序列,它由一个或多个语句块组成。这些代码通常被整合为软件库。

For (表达式1;表达式2;表达式3)

{ 语句(内部可为空)}

执行过程:

1.求解一次表达式1.

2.求解表达式2,若其值为真(非0 即为真),则执行for中语句。然后执行第3步。否则结束for 语句,直接跳出,不再执行第3步。

3.求解表达式3.

4.跳到第2步重复执行。

#include<reg52.h>

#define uint unsigned int //宏定义,结构是#define 定义名字 你要定义名字的类型 #define uchar unsigned char

sbit D1=P0^0;

void delay(uint);//带参数的子程序的声明,凡子函数都要先声明

void main()

{

while(1)

{

D1=0;

delay(100);//调用子函数

D1=1;

delay(100);

}

}

void delay(uint z)

{

uint x;

uchar y;

for(x=z;x>0;x--)

for(y=1000;y>0;y--);

}

好了 ,最后我们就能达到流水灯的程序编写了,你一定看的懂了!!

在看程序之前我们先了解先这个循环左移函数,这个是c51已经封装好的, #include <intrins.h>//左移函数包含在这个库函数里面

unsigned char _crol_ (unsigned char c, /* c代表要对这个字符循环左移 */ unsigned char b); /*循环移动的位数 */

#include<reg52.h>

#include <intrins.h>

#define uint unsigned int

#define uchar unsigned char

uchar temp,num,num1;

void delay(uint);

void main()

{

temp=0xfe;//先亮第一个二极管

while(1)

{

P0=temp;

delay(100);

temp=_crol_(temp,1);//左移亮,形成流水灯

delay(100);

本文已影响