历史上的今天
返回首页

历史上的今天

今天是:2025年04月15日(星期二)

正在发生

2020年04月15日 | P1口外接8个LED,通过按键控制,实现左右移动的流水灯

2020-04-15 来源:eefocus

//用P1口外接8个LED,可以做成一个最常见的流水灯。

//灯光闪烁的时间间隔,可以使用软件延时,也可以使用定时器来控制。

//如果增加一个按键,则还可以控制灯的移动方向。

//电路如下:

P1口外接8个LED,通过按键控制,实现左右移动的流水灯 - 非著名博主 - 电子信息角落

//系统中,定时和按键,都采用了中断方式。即采用定时器0中断来控制延时时间,用外部中断0进行方向控制;

//通过按下按键,可以使左移、右移交替显示。

//为了练习C语言使用中断系统,控制软件采用C语言编制。

//程序如下:

//-------------------------------------------

#include

#include

unsigned char i = 0, temp;


unsigned char bdata j;            //在位寻址区定义字节变量

sbit j0 = j ^ 0;                  //定义位变量

//-------------------------------------------

void main(void)

{

    TMOD = 0x01;                    //设定T0定时方式1

    TH0 = (65536 - 10000) / 256;    //定时

    TL0 = (65536 - 10000) % 256;

    TR0 = 1;

    ET0 = 1;                        //允许T0中断

    PT0 = 1;                        //设定T0为高优先级


    IT0 = 1;                        //外部中断输入下降沿有效

    EX0 = 1;                        //允许X0中断

    EA = 1;                         //开放总中断


    temp = 0xfe;

    P1 = temp;

    while(1);

}

//-------------------------------------------

void T0_int(void) interrupt 1       //每隔10ms执行一次

{

    TH0 = (65536 - 10000) / 256;    //定时

    TL0 = (65536 - 10000) % 256;

    i++;

    if(i >= 100) {

      i = 0;

      if(j0 == 0) temp = _crol_(temp, 1);

      if(j0 == 1) temp = _cror_(temp, 1);

      P1 = temp;

}   }

//-------------------------------------------

void X0_int(void) interrupt 0 using 1

{

    unsigned char k;

    j0 = ~j0;                       //改变运动方向

    for(k = 200; k > 0; k--);       //延时一会再退出,以避免抖动

}

//===========================================================

下面是用汇编语言编写的控制程序,效果与C语言相同。

        ORG   0000H

        SJMP START

        ORG   0003H

        SJMP X0_INT

        ORG   000BH

        SJMP T0_INT

;-------------------------------------------

START:      

        MOV TMOD, #01H

        MOV TH0, #(65536 - 50000) / 256;     //定时

        MOV TL0, #(65536 - 50000) MOD 256;   //定时

        SETB TR0

        SETB ET0

        SETB IT0

        SETB EX0

        SETB PT0

        SETB EA

        MOV R3, #20

        MOV R2, #7FH

        MOV P1, R2

        SJMP $

;-------------------------------------------

X0_INT:

        CPL   F0

        JNB   P3.2, $      ;等待按键释放

        RETI

;-------------------------------------------

T0_INT:

        MOV TL0, #(65536 - 50000) MOD 256;   //定时

        MOV TH0, #(65536 - 50000) / 256;     //定时

        DJNZ R3, T0_END

        MOV R3, #20

        MOV A, R2

        JNB F0, DDD

        RL   A

        SJMP EEE

DDD:

        RR    A

EEE:

        MOV   R2, A

        MOV   P1, A

T0_END:

        RETI

;-------------------------------------------

        END

//===========================================================

推荐阅读

史海拾趣

Big-Sun Electronics Co Ltd公司的发展小趣事

随着国内市场的逐步饱和,Big-Sun Electronics Co Ltd公司开始将目光投向国际市场。公司积极参与国际电子展会,与海外客户建立起了良好的合作关系。同时,Big-Sun还与国际知名电子企业开展技术合作,共同研发新产品,进一步提升了公司的国际竞争力。

Bestar Electric公司的发展小趣事

为了进一步提升竞争力,Bestar Electric开始整合产业链资源。公司通过与供应商建立长期合作关系,确保原材料的稳定供应;同时,公司还涉足电子产品的组装和制造领域,实现了产业链的垂直整合。此外,公司还积极探索多元化发展路径,涉足相关领域,如智能家居、物联网等,以拓展新的增长点。

智浦欣(Chipstar)公司的发展小趣事

随着技术的不断进步和市场需求的日益增长,智浦欣公司意识到,只有不断创新和突破,才能在激烈的市场竞争中立于不败之地。于是,公司加大了对研发团队的投入,引进了一批国内外顶尖的模拟器件和混合信号设计人才。经过数月的努力,团队成功研发出了一款具有高性价比的WLED驱动器产品,该产品以其卓越的性能和稳定的质量赢得了客户的广泛好评。随后,公司又相继推出了多款具有竞争力的新产品,进一步巩固了其在消费类电子市场的地位。

AR RF/Microwave Instrumentation公司的发展小趣事

随着公司产品的不断完善和升级,AR RF/Microwave Instrumentation开始积极拓展市场。他们不仅在国内建立了广泛的销售网络,还积极寻求与国际合作伙伴的合作。通过与国外知名企业的合作,公司不仅引进了先进的技术和管理经验,还进一步提升了产品的国际竞争力。

Global Power Technologies Group公司的发展小趣事
在需要精确控制时间间隔的场合,如定时器、计数器等电路中,集基耦合单稳态电路可以发挥重要作用。
CR Magnetics公司的发展小趣事

随着技术的不断进步和市场的不断变化,CR Magnetics意识到只有不断创新才能在竞争中立于不败之地。因此,公司加大了研发投入,积极引进新技术和新材料,不断推出具有创新性和竞争力的新产品。例如,公司研发的直流传感器在行业内享有很高的声誉,广泛应用于电池充电等领域。此外,公司还推出了一系列模拟量传感器、ANSI和商业级电流互感器等,满足了不同客户的需求。

问答坊 | AI 解惑

开始入门DSP的一些注意事项

在作硬件之前,需要看的资料有: 1.芯片数据手册,描述该器件的引脚信号、片上资源、电气指标和机械特性(如封装等),在做硬件前必看(TMS320F281x数据手册SPRS174J) 2.某一系列DSP的CPU和指令集用户指南,描述该系列DSP的CPU结构、内部寄存器 ...…

查看全部问答>

介绍一个实用的数控稳压电源

各位有那位高手介绍一个实用的0-36V数控实验稳压电源的原理图和程序,谢谢了…

查看全部问答>

怎么没有CBitmapButton类啊

来自EEWORLD合作群:arm linux fpga 嵌入0(49900581) 群主:wangkj …

查看全部问答>

关于pxa270 wince5.0 系统使用sdio wifi (mavell 8686 芯片)的问题

   使用sdio 接口,接上wifi 卡,系统能检测到wifi 卡,并能完成 MrvDrvInitialize ,弹出wifi的设置对话框后,能够检测到AP,但是始终链接不上:下面是调试信息,有没有什么建议『我摘取了从对话框弹出到链接一个AP不成功的信息』: ...…

查看全部问答>

我需要Advanced Archive Password Recovery 注册码

那位高手有请给个吧!!!!!!!!!!!…

查看全部问答>

为什么设备不能申请进入D3状态呢?

为什么可以把系统从挂起状态的设备不能通过DevicePowerNotify申请进入D3状态呢?     小弟看了windows mobile 5.0的文档,但是看得一头雾水,请各位大哥大姐指教,本人不胜感激!以下是mobile的部分文档: Devices that can wake the s ...…

查看全部问答>

系统不工作,示波器探头地碰下电路板的地就工作!

最近再做一个FPGA通过并口与PC机进行通信的实验:数据从FPGA传向PC机。给FPGA下载代码后,PC机接收不到数据,当打开示波器的一瞬间或者用示波器的探头地接触电路板的地时,PC机可以接收到数据! 我在网上看了一些资料,发现可能是“浮地”的问题, ...…

查看全部问答>

【为C2000做贡献】闻亭DSP培训第3天全部资料

闻亭DSP培训第3天全部资料 [ 本帖最后由 0212009623 于 2011-5-1 16:02 编辑 ]…

查看全部问答>

51单片机C语言开发详解光盘

光盘是《51单片机C语言开发详解》一书的配套光盘,内含书中各章节摘抄内容做得PPT和书中的源代码。PPT写得简介易懂,非常值得一读。我很想买到这本书,无奈书已停版,各大书店都买不到。…

查看全部问答>

刚下的一份资料AD09分享一下

分享一下,有要的拿去。 …

查看全部问答>