TANGLAOYA 发表于 2016-3-5 19:46 辛苦兄弟了!感谢 |
#include <reg52.h> //此文件中定义了51的一些特殊功能寄存器 #include <intrins.h> //--声明全局函数--// void Delay10ms(unsigned int c); //延时10ms /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ main() { unsigned char LED; LED = 0xfe; //0xfe = 1111 1110 while (1) { P0 = LED; Delay10ms(50); LED = LED << 1; //循环右移1位,点亮下一个LED "<<"为左移位 if (P0 == 0x00) //当它全灭的时候,重新赋值 { LED = 0xfe; // 0xfe = 1111 1110 } } } /******************************************************************************* * 函 数 名 : Delay10ms * 函数功能 : 延时函数,延时10ms * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void Delay10ms(unsigned int c) //误差 0us { unsigned char a, b; //--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--// for (;c>0;c--) { for (b=38;b>0;b--) { for (a=130;a>0;a--); } } } |
第二个仿真图led没有加电阻,图2也不用调用锁存器 |
肯定是代码不一样了 |
1.P0口是开漏输出 需要上拉电阻 2.同一楼说的 LED上面需要限流 |
图2需要加限流电阻 |