一、工程建立
- 建立工程 // new project -> 保存(弹窗否)并选择cpu为atm89c51(弹窗否)
- 创建新文本 //(FILE下方空白图标-> 保存并命名为main.c)
- 将c文件添加到工程 //(右击souce文件夹 -> add file to…)
- 生成hex文件 //(第三行魔法棒 -> output -> 勾选creat hex)
- 设置晶振频率 //(第三行魔法棒 -> target -> 修改为12Mhz)
二、LED
<1-1>、LED点亮
#include "reg52.h"
sbit led1=P2^0;
void main()
{
while(1)
{
led1=0;
}
}
<1-2>、LED闪烁
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit led1=P2^0;
u16 i;
/********定时器0初始化函数*******/
void Timer0Init()
{
TMOD|=0X01;
TH0=0XFC;TL0=0X18;
ET0=1;
EA=1;
TR0=1;
}
/*********主函数********/
void main()
{
Timer0Init();
while(1)
{
if(i==1000)
{
i=0;
led1=~led1;
}
}
}
/************定时器0中断函数**************/
void Timer0() interrupt 1
{
TH0=0XFC;TL0=0X18;
i++;
}
<1-3>、一个LED循环移位
#include <reg52.h>
typedef unsigned int u16;
typedef unsigned char u8;
u16 i,n;
/********定时器0初始化函数*******/
void Timer0Init()
{
TMOD|=0X01;
TH0=0XFC;TL0=0X18;
ET0=1;
EA=1;
TR0=1;
}
/*********主函数********/
void main()
{
Timer0Init();
while(1)
{
if(i==1000)
{
i=0;
P2=~(0x01<<n);
if(++n==8)
n=0;
}
}
}
/************定时器0中断函数**************/
void Timer0() interrupt 1
{
TH0=0XFC;TL0=0X18;
i++;
}
<1-4>、三个LED循环移位
#include <reg52.h>
typedef unsigned int u16;
typedef unsigned char u8;
u16 i,n;
/********定时器0初始化函数*******/
void Timer0Init()
{
TMOD|=0X01;
TH0=0XFC;TL0=0X18;
ET0=1;
EA=1;
TR0=1;
}
/*********主函数********/
void main()
{
Timer0Init();
while(1)
{
if(i==1000)
{
i=0;
if(n<6)
P2=~(0x07<<n);
if(n==6)
P2=~0xc1;
if(n==7)
P2=~0x83;
if(++n==8)
n=0;
}
}
}
/************定时器0中断函数**************/
void Timer0() interrupt 1
{
TH0=0XFC;TL0=0X18;
i++;
}