本人纯属自学单片机一下程序是我自己写
写了一个左移到头接着右移,右移到头再左移的花样流水灯程序
以下程序运行完好,但是如果把此句”delay(100);“延时函数放在P1=~(0x01<<k);的后边然后烧到板子上8个led灯从右移动到左第八位全亮,但是从左移动到右就好像哪种电流很小的样子led等很暗很暗,这是为什么?
板子是郭天祥的TX1C
我的程序哪里有错误请高手指点或者还有什么更简洁的方法?
单片机源码如下:
----------------------------------------------------------------------
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uint i,j,k,ms,m;//定义变量
void delay(ms)//延时函数
{
for(i=ms;i>0;i--)
for(j=110;j>0;j--);
}
void main() //主函数
{
while(1)//死循环
{
delay(100);//调用延时函数并赋值100
P1=~(0x01<<k);//P1口赋初值0x01左移k位
k++; //k值自加1
if(k>=8) //如果左移程序中k值大于等于8则运行右移程序,如果右移程
//序中的m值大于等于8则k,m值归0.
{
P1=~(0x80>>m);
m++;
if(m>=8)
{
k=0;
m=0;
}
}
}
}
|