proteus仿真流水灯

一. keil和proteus的使用

  • 生成hex file
  • proteus中找不到有些元件

二. 源程序

/* 名称:8 只 LED 左右来回点亮
说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果
*/
#include
#include
#define uchar unsigned char
#define uint unsigned int
//延时
void DelayMS(uint x)
{
    uchar i;
    while(x--)
    {
        for(i=0;i<120;i++);
    }
}
//主程序
void main()
{
    uchar i;
    P2=0x01;
    while(1)
    { 
        for(i=0;i<7;i++)
        {
            P2=_crol_(P2,1); //P2 的值向左循环移动
            DelayMS(150);
        }
        for(i=0;i<7;i++)
        {
            P2=_cror_(P2,1); //P2 的值向右循环移动
            DelayMS(150);
        }
    }
}
  • unsigned int
    16位系统中一个int能存储的数据的范围为-3276832767,而unsigned能存储的数据范围则是065535
  • _crol_()和 _cror_()函数
    将char型变量循环向左(右)移动指定位数后返回,例如如果二进制数为01010101 那么crol(1) 左移1位后将高位补低位。 结果10101010。
  • P2=0x01;
proteus仿真流水灯_第1张图片
P2=0x01;.jpg

三. 电路图

proteus仿真流水灯_第2张图片
仿真图
  1. C1:cap
  2. X1:晶振 crystal
  3. C3:点解电容 cap-elec
  4. 总线 bus

四. 问题

  • 接上电阻LED就不亮。。。

你可能感兴趣的:(proteus仿真流水灯)