哔哩哔哩/CSDN/博客园:萌狼蓝天
延时器
delay(int count){
int i,j;
for(i=0;i<count;i++){
for(j=0;j<1000;j++);
}
}
瞧一瞧
题目要求:P0口接八个发光二极管,先让后面四个灯亮,再让前面四个灯亮,循坏
# include <REGX51.H>
delay(int count){
int i,j;
for(i=0;i<count;i++){
for(j=0;j<1000;j++);
}
}
void main(){
while(1){
P0 = 0x0f;
delay(1000);
P0 = 0xf0;
delay(1000);
}
}
完整演示
题目要求:P1口接八个灯,从右往左依次亮
创建项目
编写代码
# include <REGX51.H>
# include <intrins.h>
unsigned char pem;
delay(int count){
int i,j;
for(i=0;i<count;i++){
for(j=0;j<1000;j++);
}
}
void main()
{ pem = 0x01;
while(1){
P1=pem;
pem = _crol_(pem,1);
delay(1000);
}
}
ctrl + s 保存
编译调试
退出调试模式
再点一次debug
做一做
让灯从右往左依次亮
调试可知,
亮1个灯:0x01
亮2个灯:0x02
亮3个灯:0x07
亮4个灯:0x0F
亮5个灯:0x1F
……
# include <REGX51.H>
# include <intrins.h>
unsigned char pem;
unsigned char sum;
void delay(int count){
int i,j;
for(i=0;i<count;i++){
for(j=0;j<1000;j++);
}
}
void main()
{
pem = 0x01;
sum = 0x01;
while(1){
P1=sum;//P1初始值是0x01
pem = _crol_(pem,1);//左移一位。这是负责计算每个位置亮灯时的值(只亮这个位置,其他位置不亮灯的时候的值)
sum+=pem;//统计值
delay(1000);//延时
if (sum == 0xFF) {
P1 = 0xFF;//手动亮灯
delay(1000);//延时,让效果显示
//重置状态
pem = 0x01;
sum = 0x01;
}
}
}