您的位置 首页 开关

第4课 点亮发光管程序剖析

上面我们的叙述了一个程序的编辑、编译和下载完整的过程,最终点亮了第一个发光二极管,不过这个程序到底是什么意思,为什么应该这么写,可

上面咱们的叙说了一个程序的修正、编译和下载完好的进程,终究点亮了榜首个发光二极管,不过这个程序到底是什么意思,为什么应该这么写,或许有些人还不是很懂,下面给咱们剖析,并对里边涉及到的C言语常识进行解说。

为了便于解说,这儿把上节课的程序同时给出:
例1 点亮榜首个发光二极管程序
(1)输入源程序(又称为程序修正)
#include//52系列单片机头文件
sbit D1=P1^0;//位界说单片机P1口的第1位
void main()//主函数
{
D1=0;//点亮榜首个发光二极管
}
1、头文件
程序的榜首句#include称为头文件,头文件便是C言语中的“文件包括的”的意思。所谓“文件包括”是指在一个文件内将别的一个文件的内容悉数包括进来。因为被包括的文件中的一些界说和指令运用的频率很高,简直每个程序中都或许要用到,为了进步编程功率,削减编程人员的重得劳作,将这些界说和指令独自组成一个文件,如reg52.h,然后用#include包括进来就能够了,这个就相当于工业上的规范零件,拿来直接用就能够了。
在程序中参加头文件一般有两种办法,分别是#include和#include“reg52.h”,留意头文件句末不需求加“;”否者编译器编译时会报错。加头文件时< >和“”两者是有差异的,首要如下:
当运用< >包括头文件时,程序编译时编译器会首先到keil软件的安装文件下进行寻觅,详细在keilC51INC这个文件下,假如没有找到,刚编译时会报错。
当运用“”包括头文件时,程序编译时编译器会首先到当时工程地点的文件夹下寻觅,假如没有找到,则马上到keil软件的安装文件下进行寻觅,假如都没有找到,则编译时会报错。因为在安装文件下,所以一般写成#include,就能够了。
现在咱们翻开reg52.h文件,看里边详细内容,能够直接在安装文件keilC51INC直接找到reg52.h文件,也能够在修正界面将鼠标箭头放在#include,然后右键再挑选
Open docment ,如图12所示。
图12 翻开头文件
此刻会呈现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
该头文件首要是对52单片机一切特别功用寄存器的地址进行声明。
sfr P1 = 0x90这句话表明:P1口所对应的特别功用寄存器P1在内存中的地址为0x80。换另一种说法便是咱们对0x80处的寄存器从头取名P0,今后咱们在程序中对P0进行操作,就相当于直接对0x80处的寄存器进行操作。
sfr表明特别功用寄存器的意思,它并非规范C言语的关键字,而是Keil为能直接拜访80C51中的SFR而供给了一个新的关键词,其用法是:sfr 特别功用寄存器名=地址值(留意关于头文件里“特别功用寄存器名”,用户实际上也能够修正的,如P1=0x80,也可改为A1=0x80,但sfr和地址值则不能更改,否者会编译犯错。)
以上是对寄存器地址和界说和声明作了解说,咱们需求牢牢记住:只要对寄存器进行声明地址后,咱们才干对其进行赋相关的值,keil软件才干编译通。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/kaiguan/317370.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部