文章目录
- 前言
- 一、代码的重要三部曲
- 二、使用步骤
- 1.LED 过程
- 三、几种流水灯方式
- 1.循环移位
- 2.数组
- 3.移位运算符“>>”、“<<”
- 4. 位操作
- 四、效果图
- 总结
前言
提示:这里可以添加本文要记录的大概内容:
课程需要:
提示:以下是本篇文章正文内容,下面案例可供参考
一、代码的重要三部曲
1.头文件
#include <reg51.h>
2.主函数
void main()
{
while(1){
}
}
3.死循环
二、使用步骤
1.LED 过程
代码如下(示例):
#include <reg51.h> //1.头文件
sbit led0 = P1^0;
sbit led1 = P1^1;
sbit led2 = P1^2;
sbit led3 = P1^3;
sbit led4 = P1^4;
sbit led5 = P1^5;
sbit led6 = P1^6;
sbit led7 = P1^7;
unsigned char ta[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void delay(unsigned int ms)
{
unsigned int i;
i=ms;
while(i--);
}
//#include <xxx.h>
/*
目标 P1.0 闪烁
高电平驱动
0000 0001 0X01
0000 0010 0X02
0000 0100 0X04
0000 1000 0X08
0001 0000 0X10
0010 0000 0X20
0100 0000 0X40
1000 0000 0X80
P1=~ta[i];
低电平驱动
1111 1110 0XFE
1111 1101 0XFD
1111 1011 0X0B
1111 0111 0X07
1110 1111 0XEF
1101 1111 0XDF
1011 1111 0XBF
0111 1111 0X7F
*/
void main() //2.主函数
{
char i;// -128 - 127
// unsigned char t; // 0-255
// int i; //-32768 -32767
// unsigned int i;//0-65535
//死循环上面的代码只执行一次
//设备硬件初始化
while(1)//3.死循环
{
// 死循环里面的代码就反复执行
// led0=1; //1us
// led1=0;led2=0; led3=0; led4=0; led5=0; led6=0; led7=0;
//延时
// P1=0X01; // 0000 0001
// delay(1000);
// P1=0X02; // 0000 0010
// led0=0; //1us
// led1=1;led2=0; led3=0; led4=0; led5=0; led6=0; led7=0;
//延时
// delay(1000);
// i=1000;
// while(i--);
for(i=0;i<8;i++){
P1=ta[i];
delay(60000);
}
}
}
三、几种流水灯方式
1.循环移位
#include <intrins.h> //包含移位函数_crol_( )的头文件
P1=_crol_(P1,1) ; // 函数_crol_(P1,1)把P1中的数据循环左移1位
0000 0001 左移一次 0000 0010
1000 0000 再左移一次 0000 0001 区别于第三种方法
2.数组
上面已经介绍
unsigned char ta[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
.....
for(i=0;i<8;i++){
P1=ta[i];
delay(60000);
}
3.移位运算符“>>”、“<<”
temp=0x01; //左移初值赋给temp
0000 0001 0000 0010 左移是将高位丢掉,低位补0
1000 0000
0000 0000 最后会变成全零 ,又需要重新赋值
temp=0x01; //左移初值赋给temp
4. 位操作
上面也讲了
sibt led0 =P1^0;
一位一位给
四、效果图
总结
很全面的流水灯操作