一. keil和proteus的使用
- 生成hex file
- proteus中找不到有些元件
二. 源程序
/* 名称:8 只 LED 左右来回点亮
说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果
*/
#include<reg51.h>
#include<intrins.h>
#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;
三. 电路图
- C1:cap
- X1:晶振 crystal
- C3:点解电容 cap-elec
- 总线 bus
四. 问题