文号
t79855
阅读
6726
回复
5
收藏
3
做一个定时器流水灯程序但只亮了一个灯
2016/05/07
IP:江苏
#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);
   }
}
5
10年7个月前IP:广东
818629
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++;//定时器中断里只做最简单、最短的事
}
引用
评论
10年7个月前IP:广东
818630
2楼
你的bug很简单,循环移位后,需要补一句:
P1=temp;//刷新到输出
引用
评论
10年3个月前IP:北京
824865
3楼
引用 amo:
你的bug很简单,循环移位后,需要补一句:
P1=temp;//刷新到输出
原谅我,居然没看出来,虽然我看不懂这是什么
引用
评论
10年3个月前IP:广东
824887
4楼
引用 g460554451:
原谅我,居然没看出来,虽然我看不懂这是什么
temp是一个变量,存储流水灯信息,P1是单片机的P1口(控制LED的)
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的