一、使用keil新建工程
点击菜单: Project-Create New Project
这里选择AT89C52芯片:
提示是否使用8051启动代码,选择否:
点击File-New, 创建新文件,这里命名为main.c 。
在Source Group1上右键,选择刚创建的 main.c 文件。
二、项目设置1. 点击魔术棒,钩选Output-Create Hex File
2. 设置仿真器
点击Debug,选择Use PZ51Tracker Driver, 钩选 Run to main()
点击Settings,如下图填写选项:
点击Utilities,选择PZ51Tracker Driver仿真器。
三、编写代码1. 尝试编译代码
// 包含8051头文件
#include "reg52.h"
void main(){
while(1){
}
}
123456
这里写一个死循环,然后就可以编译代码,生成Hex文件。
2. 点亮LED的代码
#include "reg52.h"
sbit LED1 = P2^0;
sbit LED2 = P2^1;
void delay_10us(int ten_us){
while(ten_us--);
}
void main(){
while(1){
LED1=0;
delay_10us(1000*1000);
LED1=1;
delay_10us(1000*1000);
LED2=0;
delay_10us(1000*1000);
LED2=1;
delay_10us(1000*1000);
}
}
sbit 在前一节说过,是8051定义的位类型, LED1指向P2的0位,LED2指定P2的1位。delay_10us是模拟延迟。编译后使用前文方法烧写到开发板即可运行。
3. GPIO引脚介绍GPIO是General purpose input output的简称,中文为通用输入输出端口。51单片机的引脚大致分为:
- 电源引脚
- 晶振引脚
- 复位引脚
- 下载引脚
- GPIO引脚图上P1.n, P0.n, P2.n都是GPIO引脚,共4*8=32个。
- 读锁存器接三态门(高电平、低电平、高阻态),三态门作为输入缓冲器。
- D触发器构成锁存器,用来保持一位二进制数据, D端是数据输入端,CLK是时序控制信号,Q是锁存器输出端,!Q是反向输出端。
- 多路开关,确定端口作为输入输出使用,还是作为地址/数据使用;对于8051的I/O端口作为地址/数据模式一般是用不到的。
- VT1、VT2 场效应管,组成推拉式结构,两个不能同时导通,是MOS管的输出电路。
P0口作为I/O输出时,数据流向: 内部总线 => 锁存器 => !Q => 多路开关 => V2栅极 => V2 漏极 。 这时漏极开路,外部需要上拉电阻。P0口作为I/O输入时,内部读引脚是打开的, 数据流向:通过输入缓冲器到达内部总线。
P1 端口
P1 内部有上拉电阻(比较弱)。
其它端口不再详细介绍,要注意的是P3端口有第二功能。
四、软件仿真点击魔法棒属性设置,选择Debug、Use Simulator
在Target Xtal(Mhz)填写晶振频率
点击菜单仿真按钮即可运行。
,