做一个定时器流水灯程序但只亮了一个灯
#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
2016-8-26 10:10:12
3楼
引用 amo:
你的bug很简单,循环移位后,需要补一句:
P1=temp;//刷新到输出
原谅我,居然没看出来,虽然我看不懂这是什么
折叠评论
加载评论中,请稍候...
折叠评论
4楼
引用 g460554451:
原谅我,居然没看出来,虽然我看不懂这是什么
temp是一个变量,存储流水灯信息,P1是单片机的P1口(控制LED的)
折叠评论
加载评论中,请稍候...
折叠评论

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

ID:{{user.uid}}
{{user.username}}
{{user.info.certsName}}
{{user.description}}
{{format("YYYY/MM/DD", user.toc)}}注册,{{fromNow(user.tlv)}}活动
{{submitted?"":"投诉"}}
请选择违规类型:
{{reason.description}}
支持的图片格式:jpg, jpeg, png