一、程序的书写
编程环境基础:下载并点击打开keil uVision4编译器;
1、新建工程文件
(1)创建工程组(Porject)
Step1:新建工程;
这里4中“template”为工程文件的名称,自定义即可;
Step2:选择CPU型号;
这里选择AT89C52即可(国产STC89C52芯片与其架构相同)
点击 OK 键后,弹出如下对话框:
翻译:是否要将 8051 启动文件添加到工程文件夹中;
这里选择“否”,原因是 KEIL C51 内已经帮我们完成了启动,即可完成工程文件的创建;
2、添加工程文件(File)
Step1:新建.c文件并命名;
点击菜单页面File/New,命名文件(注意必须是字母名称);
Step2:将新建的.c文件添加到工程组中;
即可完成创建
三、配置魔术棒(文件的各种配置选项)
勾选√:输出(Output)时,需创建HEX格式文件;
2**、C语言预编译/程序基本结构**
头文件的引用
(1)写法 # include"reg52.h" ****
凡是编写 51内核单片机程序时,我们源代码的第一行应包含该头文件。
写法1: 编译器先进入到当前工程所在文件夹处开始搜索该头文件,如果当前工程所在文件夹下没有该头文件,编译器将继续回到软件安装文件夹处搜索这个头文件,如果找不到这个头文件,编译器将会报错;
#include "reg52.h"
写法2:从软件安装文件夹处开始搜索这个头文件,如果这个文件夹没有引用的头文件,编译器将会报错;
#include
So,尽量使用“”的写法来引用头文件,能够防止编译器报错;
2、reg52.h头文件内容介绍
可以通过右键可以打开头文件;
reg52.h的作用:提供引脚定义(对引脚的“寄存器地址”进行命名)
STC89C52引脚
①电源引脚:VCC、GND
②时钟引脚:XTAL1、XTAL2
③编程控制引脚:RST、PSEN、ALE/PROG、EA/Vpp。(了解即可)
④I/O 口引脚:如 P0、P1、P2、P3(4组8位I/O口);
当我们引用过了“reg52.h”头文件,可以使用引脚表达,例如:
sbit LED1=P2^0 //重命名P2.0引脚为LED1(注意:P2.0引脚写成P2^0;
头文件reg52.h的具体内容
复制
/*--------------------------------------------------------------------------
REG52.H
Header file for generic 80C52 and 80C32 microcontroller.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/
#ifndef __REG52_H__
#define __REG52_H__
/* BYTE Registers */
sfr P0 = 0x80;
sfr P1 = 0x90;
sfr P2 = 0xA0;
sfr P3 = 0xB0;
sfr PSW = 0xD0;
sfr ACC = 0xE0;
sfr B = 0xF0;
sfr SP = 0x81;
sfr DPL = 0x82;
sfr DPH = 0x83;
sfr PCON = 0x87;
sfr TCON = 0x88;
sfr TMOD = 0x89;
sfr TL0 = 0x8A;
sfr TL1 = 0x8B;
sfr TH0 = 0x8C;
sfr TH1 = 0x8D;
sfr IE = 0xA8;
sfr IP = 0xB8;
sfr SCON = 0x98;
sfr SBUF = 0x99;
/* 8052 Extensions */
sfr T2CON = 0xC8;
sfr RCAP2L = 0xCA;
sfr RCAP2H = 0xCB;
sfr TL2 = 0xCC;
sfr TH2 = 0xCD;
/* BIT Registers */
/* PSW */
sbit CY = PSW^7;
sbit AC = PSW^6;
sbit F0 = PSW^5;
sbit RS1 = PSW^4;
sbit RS0 = PSW^3;
sbit OV = PSW^2;
sbit P = PSW^0; //8052 only
/* TCON */
sbit TF1 = TCON^7;
sbit TR1 = TCON^6;
sbit TF0 = TCON^5;
sbit TR0 = TCON^4;
sbit IE1 = TCON^3;
sbit IT1 = TCON^2;
sbit IE0 = TCON^1;
sbit IT0 = TCON^0;
/* IE */
sbit EA = IE^7;
sbit ET2 = IE^5; //8052 only
sbit ES = IE^4;
sbit ET1 = IE^3;
sbit EX1 = IE^2;
sbit ET0 = IE^1;
sbit EX0 = IE^0;
/* IP */
sbit PT2 = IP^5;
sbit PS = IP^4;
sbit PT1 = IP^3;
sbit PX1 = IP^2;
sbit PT0 = IP^1;
sbit PX0 = IP^0;
/* P3 */
sbit RD = P3^7;
sbit WR = P3^6;
sbit T1 = P3^5;
sbit T0 = P3^4;
sbit INT1 = P3^3;
sbit INT0 = P3^2;
sbit TXD = P3^1;
sbit RXD = P3^0;
/* SCON */
sbit SM0 = SCON^7;
sbit SM1 = SCON^6;
sbit SM2 = SCON^5;
sbit REN = SCON^4;
sbit TB8 = SCON^3;
sbit RB8 = SCON^2;
sbit TI = SCON^1;
sbit RI = SCON^0;
/* P1 */
sbit T2EX = P1^1; // 8052 only
sbit T2 = P1^0; // 8052 only
/* T2CON */
sbit TF2 = T2CON^7;
sbit EXF2 = T2CON^6;
sbit RCLK = T2CON^5;
sbit TCLK = T2CON^4;
sbit EXEN2 = T2CON^3;
sbit TR2 = T2CON^2;
sbit C_T2 = T2CON^1;
sbit CP_RL2 = T2CON^0;
#endif
二、程序的烧录/下载
(1)芯片类型选择;
(2)串口号选择;
(3)波特率选择;
1.波特率
波特率是指单位时间内传送二进制数据的位数,单位用bps(位/秒)表示,记作波特。
波特率是传输通道频宽的指标。
2.比特率
比特率来衡量异步串行通信的数据传输速率,即单位时间内传送二进制有效数据的位数,单位用bps表示。
比特率 = 波特率 x 单个调制状态对应的二进制位数。
比特率表示有效数据的传输速率。