资源描述:
《单片机的c 语言轻松入门》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、单片机的C语言轻松入门单片机的C语言轻松入门随着单片机开发技术的不断发展,目前已有越来越多的人从普遍使用汇编语言到逐渐使用高级语言开发,其中主要是以C语言为主,市场上几种常见的单片机均有其C语言开发环境。这里以最为流行的80C51单片机为例来学习单片机的C语言编程技术。第1章C语言概述及其开发环境的建立学习一种编程语言,最重要的是建立一个练习环境,边学边练才能学好。Keil软件是目前最流行开发80C51系列单片机的软件,Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案
2、,通过一个集成开发环境(μVision)将这些部份组合在一起。在学会使用汇编语言后,学习C语言编程是一件比较容易的事,我们将通过一系列的实例介绍C语言编程的方法。图1-1所示电路图使用89S52单片机作为主芯片,这种单片机性属于80C51系列,其内部有8K的FLASHROM,可以反复擦写,并有ISP功能,支持在线下载,非常适于做实验。89S52的P1引脚上接8个发光二极管,P3.2~P3.4引脚上接4个按钮开关,我们的任务是让接在P1引脚上的发光二极管按要求发光。1.1简单的C程序介绍例1-1:让接在P1.0引脚上
3、的LED发光。/*************************************************平凡单片机工作室////0>.Copyright2003pingfan'smcustudioAllrightsReserved作者:周坚dddl.c单灯点亮程序*************************************************/图1-1接有LED的单片机基本电路P1.0EA/VPPVCCXTAL2XTAL1GNDRST+5V+5V+R1E110K10U27PCY27PPZ
4、11KD8D189×××#include“reg51.h”sbitP1_0P1^0;voidmainP1_10;这个程序的作用是让接在P1.0引脚上的LED点亮。下面来分析一下这个C语言程序包含了哪些信息。1)“文件包含”处理。程序的第一行是一个“文件包含”处理。所谓“文件包含”是指一个文件将另外一个文件的内容全部包含进来,所以这里的程序虽然只有4行,但C编译器在处理的时候却要处理几十或几百行。这里程序中包含REG51.h文件的目的是为了要使用P1这个符号,即通知C编译器,程序中所写的P1是指80C51单片机的P1
5、端口而不是其它变量。这是如何做到的呢?打开reg51.h可以看到这样的一些内容:/*REG51.HHeaderfileforgeneric80C51and80C31microcontrollerCopyrightc1988-2001KeilElektronikGmbHandKeilSoftware,IncAllrightsreserved/*BYTERegister*/sfrP00x80;sfrP10x90;sfrP20xA0;sfrP30xB0;sfrPSW0xD0;sfrACC0xE0;sfrB0xF0;sfr
6、SP0x81;sfrDPL0x82;sfrDPH0x83;sfrPCON0x87;sfrTCON0x88;sfrTMOD0x89;sfrTL00x8A;sfrTL10x8B;sfrTH00x8C;sfrTH10x8D;sfrIE0xA8;sfrIP0xB8;sfrSCON0x98;sfrSBUF0x99;/*BITRegister*//*PSW*/sbitCY0xD7;sbitAC0xD6;sbitF00xD5;sbitRS10xD4;sbitRS00xD3;sbitOV0xD2;sbitP0xD0;/*TCON*
7、/sbitTF10x8F;sbitTR10x8E;sbitTF00x8D;sbitTR00x8C;sbitIE10x8B;sbitIT10x8A;sbitIE00x89;sbitIT00x88;/*IE*/sbitEA0xAF;sbitES0xAC;sbitET10xAB;sbitEX10xAA;sbitET00xA9;sbitEX00xA8;/*IP*/sbitPS0xBC;sbitPT10xBB;sbitPX10xBA;sbitPT00xB9;sbitPX00xB8;/*P3*/sbitRD0xB7;sbitW
8、R0xB6;sbitT10xB5;sbitT00xB4;sbitINT10xB3;sbitINT00xB2;sbitTXD0xB1;sbitRXD0xB0;/*SCON*/sbitSM00x9F;sbitSM10x9E;sbitSM20x9D;sbitREN0x9C;sbitTB80x9B;sbitRB80x9A;sbitTI0x99;sbitRI0x98;