1、反馈节点的箭头方向为数据流的传输方向。也需要含槐初始化输入初值,也就是赋初值。
2、赋初值是为了实现LED灯由暗渐亮,再由亮渐暗的变巧游化。
这个是反馈手竖节点,起作用等效于移位寄存器,把上一次循环的值作为下一次循环的输入,实现方法如下:
在数组连入循环的隧道处右键单击,选择替换为移位寄存器,卜正如下型薯悔图
在移位寄存器上右键单击,选择替换为反馈节点,如下图
/********//p1.0波形为:
//1、10ms为周期的方波或持续的高、低电平(与flag、p1.0初始值有关),持续空蔽2秒。
//2、持续的高、低电平或10ms为周期的方波(与flag、p1.0初始值有关),持续2秒。
//3、重复1、2步骤。
*********/
#include
unsigned
int
t02s
unsigned
char
t05ms
bit
flag
void
main(void)
{
tmod=0x01
//初始化定时器。
//可以对照单片机pdf相应章节,按位芹卜对比。
//此处设置定时器0工作于“16
位定时器/
计数器,tl0、th0
全用”模式。
th0=(65536-500)/256
//初始化定时/计数器高字节。
tl0=(65536-500)%256
//初始化。。。。。。低字节。
tr0=1
//启动定时器0。
//以下两句开启定时器中断,缺一不可。
et0=1
//允许定时器0中断。
ea=1
//开启全局中断。
while(1)
//循环,整个程序交由定时中断控制。
}
//此处为定时器中断子程序,每次定时器溢出,进入此段程序。
//根据参数定义,每5ms中断一次。
//定时器中断斗首州后,计数不停止,但是需要重新初始化定时/计数器。
void
t0(void)
interrupt
1
using
0
{
//重新“初始化定时/计数器”高、低字节。
th0=(65536-500)/256
tl0=(65536-500)%256
//每次中断,t02s
加
1。
t02s++
//增加400次后(5ms
×
400
=
2s),flag标志取反。
if(t02s==400)
{
t02s=0
flag=~flag
}
//若中断时flag标志为0,p1.0口取反。
if(flag==0)
{
p1_0=~p1_0
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)