电子技术
做一个定时器流水灯程序但只亮了一个灯
懒惰的0族元素 2016-5-7 11:31:06
#include<reg52.h>
unsigned char i ;
unsigned char led;
unsigned char temp;
#include<intrins.h>
void main(void)
{
    temp=0xfe;
P1=temp;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
ET0=1;
EA=1;
TR0=1;
}
void insteat() interrupt 1
{
   i++;
    TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
if(i==10)
   {
     i=0;
     temp=_crol_(temp,1);
   }
}
2016-5-7 17:00:55
1楼
一个良好的架构很重要,受益终身……
#include<reg52.h>

//定义Timer0重载值常数:
#define Timer0Reload_H (ms_to_timer(10)>>8)  //定时器溢出周期设为10ms
#define Timer0Reload_L ms_to_timer(10)

volatile unsigned char cnt_10ms=0;//定时器中断里累加,主程序里读取

unsigned char i ;
unsigned char led;
unsigned char temp;
#include<intrins.h>
void main(void)
{
temp=0xfe;
P1=temp;
TH0=Timer0Reload_H;//(65535-50000)/256;
TL0=Timer0Reload_L;//(65535-50000)%256;
ET0=1;
EA=1;
TR0=1;
while(1)
{
if(cnt_10ms>=50)//500ms
{
cnt_10ms = 0;
temp=_crol_(temp,1);
P1=temp;//刷新到输出
}
}
}
void insteat() interrupt 1
{
//   i++;
TH0=Timer0Reload_H;//(65535-50000)/256;
TL0=Timer0Reload_L;//(65535-50000)%256;
// if(i==10)
//   {
//     i=0;
//     temp=_crol_(temp,1);
//   }
cnt_10ms++;//定时器中断里只做最简单、最短的事
}
2楼
你的bug很简单,循环移位后,需要补一句:
P1=temp;//刷新到输出
2016-8-26 10:10:12
3楼
引用 amo:
你的bug很简单,循环移位后,需要补一句:
P1=temp;//刷新到输出
原谅我,居然没看出来,虽然我看不懂这是什么
4楼
引用 g460554451:
原谅我,居然没看出来,虽然我看不懂这是什么
temp是一个变量,存储流水灯信息,P1是单片机的P1口(控制LED的)

想参与大家的讨论?现在就 登录 或者 注册

{{submitted?"":"投诉"}}
请选择违规类型:
{{reason.description}}
支持的图片格式:jpg, jpeg, png