zdly.net
当前位置:首页 >> 单片机流水灯定时器 >>

单片机流水灯定时器

先写一个延时子函数delay,延时时间1秒.然后写LED=0;delay(1);LED=1;这样就可以做到一亮一灭,再把这段程序加入到循环中就可以,循环函数很简单不用再说了吧,如果还不懂回复我给你程序

流水灯实验:#include#define unit unsigned int;#define uchar unsigned char; uchar temp; void delay(uint z); void main() { temp=0xfe; /*让第一个led发光*/ p1=temp; while(1) { delay(1000); temp=_crol_(temp,1); /*左移,移动变量temp,移动1位*/ p1=temp; } } void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } 给个满意答案,谢谢

最低0.27元开通文库会员,查看完整内容> 原发布者:djx04001 51单片机定时器控制流水灯(2013-04-2323:14:17)分类:单知片机#include#defineucharunsignedcharucharm=0,i=0;voidmain(){TMOD=0x01;//定时器0工作方式为1TH0=(65536-

你这个根本 就没有用到定时器函数..你要想不精确延时的话 搞个比较大的数 ++ 或-- 来延时 要用定时器 就得用定时器中断..至于全亮的原因 是因为 delay1s 没有起到延时1s的作用 二十极其短的延时 导致流水灯太快 给人感觉是全亮的..你可以改成 long a ; while(a

定时器溢出你就等他溢出了么,归0后从0计时时间就不对了,中断中重装初值

原发布者:djx0400151单片机定时器控制流水灯(2013-04-2323:14:17)分类:单知片机#include#defineucharunsignedcharucharm=0,i=0;voidmain(){TMOD=0x01;//定时器0工作方式为1TH0=(65536-50000)/256;TL0=(65536-50000)%6;EA=1;

在开中断之前要设置多少时间进入定时中断程序一次,如果1ms进入一次,晶振12M的话,应该在EA=1之前加上:TH0=(65536-1000)/256; //1ms定时 TL0=(65536-1000)%256; TR0=1; //开启T0定时器 ET0=1; //允许T0定时器中断

1)参考定时器例程,计算出需要的参数,配置出500mS的定时中断功能;2)流水灯操作,可在中断例程里执行,也可在中断产生时,设置标志位,在中断外根据此标志位来执行流水灯操作;

// 写了个测试程序,希望对你有帮助#include<reg52.h>#define uchar unsigned char uchar m=0,i=0; void main() { TMOD|=0x01; //定时器0工作方式为1 TH0=(65536-50000)/256; //装初值 TL0=(65536-50000)%256; EA=1; //开总中断 ET0=1;

#include unsigned char i; main() { P2=0xff; TMOD=0X01; //一般用方式1 EA=1; ET0=1; //IE=0xff; //多余 TH0=0; TL0=0; TR0=1; while(1); } void time0() interrupt 1 //定时器0 { TH0=0; TL0=0;//重新装初值 P2--; } 以上程序中断会每隔65536us(如

网站首页 | 网站地图
All rights reserved Powered by www.zdly.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com