51单片机入门笔记(二)
二.Keil软件使用及流水灯设计
1.建立Keil工程。
2.点亮第一个发光二极管(代码):
#include<reg52.h>
sbit led1=P2^5;
void main()
{
led1=0;
}
在keil中,编译,然后在【project】->【options for Target 'Target1' 】->【output】->选中【Create HEX File】,确定;再编译后生成HEX文件。将该HEX文件烧写入单片机中。
3.while语句(同C)
4.for语句(同C)
简单的延时语句(延时1秒):
for(i=1000;i>0;i--)
for(j=110;j>0;j--);
5.keil仿真(可精确计算延时语句的时间)
6.单片机的几个周期介绍:
1)时钟周期:也称震荡周期,定义为时钟频率的倒数,是单片机最基本、最小的时间单位。
2)状态周期:时钟周期的两倍。
3)机器周期:单片机的基本操作周期,由12个时钟周期组成。
4)指令周期:CPU执行一条指令所需要的时间。
7.不带参数的函数的写法与调用(同C)
8.带参数的函数的写法与调用(同C)
9.利用C51库函数实现流水灯(_crol_ 循环左移函数;_cror_ 循环右移函数)
代码:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
void delayms(uint);
uchar initial=0xfe;
void main()
{
while(1)
{
P2=initial;
delayms(500);
initial=_crol_(initial,1);
}
}
//***************************delayms(uint)
void delayms(uint m)
{
uint i,j;
for(i=m;i>0;i--)
for(j=110;j>0;j--);
}
10.用左移实现8个LED灯从右到左一次点亮
代码:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
void delayms(uint);
uchar initial=0xff;
void main()
{
while(1)
{
P2=initial;
delayms(500);
initial=initial<<1;
}
}
//*****************延时 函数
void delayms(uint m)
{
uint i,j;
for(i=m;i>0;i--)
for(j=110;j>0;j--);
}