定时器双向流水灯闪烁

定时器双向流水灯闪烁,第1张

定时器设置成50ms一次定时中断,作为时间基准,在定时中断里再每次对一个变量计数加加得到想要的0.5秒和2秒时间基准 define uint unsigned int //定义无符号整数 void delay(uint)//声明延时函数 void main(void){ uint iuchar tempwhile(1){ temp=0xFEfor(i=0i<8i++) //8个流水灯依次全部点亮 { P1=tempdelay(500...

用定时器实现流水灯从左到右双位循环,跳动频率为1秒。程序怎么编啊... —— 用定时器实现流水灯,跳动频率为1秒。用定时器定时50ms,采用中断方式,对定时中断计数,计数20次就是1秒。如下仿真图,P1口接8个LED灯。

有关于单片机的一段程序,是用定时器做流水灯的 —— 要用定时器 就得用定时器中断。。至于全亮的原因 是因为 delay1s 没有起到延时1s的作用 二十极其短的延时 导致流水灯太快 给人感觉是全亮的。。你可以改成 long a while(a<500000)(值大小自己调试)...

如何用定时器中断实现流水灯1秒定时流水? —— 可以中断50ms一次(不一定非要50ms),每次中断计数一次,等计数时间到1s,就执行一次流水动作

求助,用定时器控制流水灯循环 —— 将定时器中断时间设置为一秒一次。声明一个全局的变量temp 在初始化的时候赋初值,在中断服务函数中

用定时器控制16路流水灯循环单片机,且定时时间可调,谢谢! —— interrupt1{uchari//循环变量//重装定时器初值,50ms中断一次p++if(p>=20)//一秒钟改变一次状态{for(i=0i<8i++){P1=temptemp<<=1//左移一位,流水灯}p=0}}呵呵,这就是简单的后台任务处理思想 ...

51单片机定时器实现流水灯,并用按键外部中断控制改变流水灯的流向,这个... —— EA=1;//开总中断 EX0=1;//开外部中断0 IT0=1;//下降沿触发 while(1){ if(flag==0){ for(i=0i<8i++){ P0=0X01<<idelayms(500)} } if(flag==1){ for(i=0i<8i++){ P0=0X80...

51单片机用定时器,怎么编程流水灯一秒闪烁一次, —— 先写一个延时子函数delay,延时时间1秒。然后写LED=0;delay(1);LED=1;这样就可以做到一亮一灭,再把这段程序加入到循环中就可以,循环函数很简单不用再说了吧,如果还不懂回复我给你程序 ...

plc怎么用计时器做3个流水灯程序 —— 计数器,定时器……用计数器,就数值1点亮一个,2点亮一个,3点亮一个,加完复位,加个循环;定时器,定时一秒,二秒,三秒,每个对应一个灯,加个循环

#include

unsigned int LED

unsigned int a,i,m

void yiwei()

void delay(unsigned int b)

void main()

TMOD=0x01 //T0为方式1

TH0=(65536-50000)/256

TL0=(65536-50000)%256  //初值

EA=1      //允许中断

ET0=1

while(1)

P2=0x00

delay(2000)

LED = 0x7f

m

=0

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

{

a=0

TR0=1

delay(100)

while(m)

delay(2000)

P2=0x00

delay(2000)

LED = 0xfe

m=0

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

a=1

TR0=1

delay(100)

while(m)

}

delay(2000)   

}

}

void t0() interrupt 1 using 1

{

TH0=(65536-50000)/256

TL0=(65536-50000)%256

m++

if(m==20)

{

m=0

yiwei()   

}

}

void yiwei()

{

if(a==0)

{      

P2=LED

LED = LED>>1 // 右移

LED = LED|0x80 

}

else

{  

P2  = LED

LED = LED <<1     // 左移

LED = LED | 0x01

}

}

void delay(unsigned int b)

{

unsigned char j

for(bb >0b--)    //机器在这里执行需要一段时间 也就达到了延时效果

for(j = 255j >0j--)

}

自己调试过,我12晶振

1.51单片机C语言实现循环8个流水灯左移三次,后右移三次。

例程:

#include<reg51.h>  //51单片机头文件

#include <intrins.h> //包含有左右循环移位子函数的库

#define uint unsigned int    //宏定义

#define uchar unsigned char  //宏定义

sbit beep=P2^3

void delay(uint z)  //延时函数,z的取值为这个函数的延时ms数,如delay(200)大约延时200ms.

{                    //delay(500)大约延时500ms.

    uint x,y

    for(x=zx>0x--)

        for(y=110y>0y--)    

}

void main()            //主函数

{

    uchar a,i,j

    while(1)        //大循环

    {

        a=0xfe     //赋初值

        for(j=0j<3j++) for(i=0i<8i++)   //左移三次

        {

            P1=a       //点亮小灯

            beep=0     //开启蜂鸣器

            delay(50) //延时50毫秒

            beep=1     //关闭蜂鸣器

            delay(50)  //再延时50毫秒

            a=_crol_(a,1) //将a变量循环左移一位

        }

        a=0x7f

       for(j=0j<3j++) for(i=0i<8i++)  //右移三次

        {

            P1=a       //点亮小灯

            beep=0     //开启蜂鸣器

            delay(50) //延时50毫秒

            beep=1     //关闭蜂鸣器

            delay(50)   //再延时50毫秒

            a=_cror_(a,1) //将a变量循环右移一位

        }        

    }

}

2.51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7794689.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存