单片机1使用手册nbc51v40_第1页
单片机1使用手册nbc51v40_第2页
单片机1使用手册nbc51v40_第3页
单片机1使用手册nbc51v40_第4页
单片机1使用手册nbc51v40_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、NBC51-V4.0 使用手册目录1、系统功能介绍31.1、主板介绍3板介绍41.22、NBC51-V4.0 供电系统63、基础知识73.1学习单片机必备的几个概念73.2认识电子元器件123.3 单片机 C 语言入门163.4KEIL 的安装和使用263.5STC 单片机/编程363.6“reg51.h”头文件详解444、SST 单片机实现.48北方蓝芯科技开发2NBC51-V4.0 使用手册1、系统功能介绍NBC51-V4.0 实验仪是由 NBC51C(8051板)和 NBC 单片机系列主板的二合一系统。1.1、主板介绍图 1.1主板结构图北方蓝芯科技开发3编号功能编号功能18 位发光二极

2、管161X5按键212864 点阵液晶接口17SD 卡接口3TFT 液晶接口18485 通信41602 液晶接口19EEPROM器58 位共阴数码管20红外光电开关616 位 IO 扩展21DS1302 实时时钟7步进和直流电机接口22DS18B20 温度传感器8蜂鸣器23红外接收9继电器24PS2 键盘鼠标接口10AD&DA 转换25串口 111NRF905 接口26纽扣电池12NRF24L01 接口27热敏和光敏电阻13无线模块接口28串口 2 母头14超声波接口29系统电源154X4 矩阵键盘30USB 供电和通口31板接口NBC51-V4.0 使用手册板介绍1.2图 1.2板结

3、构图功能描述:1、51板支持 DIP40 封装的 STC 系列单片机、AT89S5X 系列单片机。2、带 USB 转串口模块,能为 STC 系列单片机编程,能与 PC 进行串口通信。3、通过 P0 口的“5V”管脚供电(作为主板的板使用时),无需重复在板上对 USB 供电。4、提供 ISP接口,为 AT89S5X 系列单片机编程。图 1.3板电路原理图北方蓝芯科技开发4NBC51-V4.0 使用手册图 1.4板实物图51图 1.5主板与 51板二合一北方蓝芯科技开发5NBC51-V4.0 使用手册2、NBC51-V4.0 供电系统为了使开发板能正常工作,必须为开发板提供电源,开发板支持以下两种

4、供电方式:1、 通过 PC 机的 USB 口提供的+5V 电源统供电,如图 2.1 所示,即为通过 USB 为系2、 外部 7-12V(最好使用 9V)直流稳压电源适配器供电,通过电源接口 JP1 输入电源。通过手动开发板上的 K1 开关来打开和断开系统供电。当 K1 开关拨至“ON”位置,发光二极管点亮指示系统上电。图 2.1主板供电系统实物图图 2.2主板供电系统原理图系统电路原理图如图 2.2 所示,通过稳压器 LM7805 和 AMS1117 提供 5V 和 3.3V 电源,过过 J1可以选择系统电源电压 5V 或 3.3V,由于 NBC51-V4.0 系统将 J1 中的 VCC 和

5、5V 短接来选择系统电源为 5V。板上提供的为 5V 单片机,所以开发板上提供了 5V(J2 口),3.3V(J3 口),GND(J4 口)的扩展口,用来对外接模块供电。另外提供了 5V,3.3V,GND 测试点,方便调试使用。北方蓝芯科技开发6NBC51-V4.0 使用手册3、基础知识3.1 学习单片机必备的几个概念3.1.1 什么是单片机所谓单片机(Single Chip Microcomputer),是指在一块中集成有处理器(CPU)、器(RAM 和 ROM)、基本 I/O 接口以及定时器、计数器等部件,并具有指令系统的智能器件,即在一块上实现一台微型计算机的基本功能。单片机和我们的计算

6、机(电脑)差不多,大家都知道,下面我们来通过将电脑和单片机比对来了掌握单片机概念。计算机(电脑)里面有: 1)CPU2) 硬盘3) 内存4) 主板5) 等等图 3.1微机系统结构图对于单片机而言,CPU,硬盘,内存,主板等等东西要改个名字 1)“CPU”,它的名字没有改,还是叫 CPU(Central Processing Unit)。它是单片机的部件,包括运算器和器。运算器既是算术逻辑单元 ALU(Arithmetic logic Unit),其功能是进行算术运算和逻辑运算。器一般由指令寄存器、指令译码器、时序电路和电路组成。起作用是完成取指令、将指令译码形成各种微操作并执行指令,同时各个部

7、件有条不紊地工作。计算机的2)“硬盘”,改了名字,叫程序器,也叫只读器。用 ROM(Read only memery)表示。其作用和硬盘差不多,用来存放用户程序。特点是:掉电后丢失数据。器。用 RAM(Random Access3)“内存”,也改了名字,在单片机里叫数据器,也叫随机Memery)表示。其作用是用于存放运算的中间结果,数据暂村和缓冲,标志位等。特点是: 掉电后会丢失数据。4)“主板”,也改了名字,叫做 I/O(输入输出设备)当然也包含了串行口,并行口,定时器,记时器等等。北方蓝芯科技开发7器内存输出设备运算器输入设备NBC51-V4.0 使用手册CPU单元CPU系统基本功能单元图

8、 3.2 单片机内部结构示意图3.1.2器器是单片机的一个重要组成部分, MCS-51 的器可分为四类:1)、程序器(CODE 区)用来存放可执行程序代码2)、内部数据器(DATA 区)数据器也称为随机存取数据器 RAM,数据器是既可读也可写的,用于存放运算的中间结果,进行数据暂存及数据缓冲等。3)、位地址空间(BIT 区)MCS-51 单片机的一个很大优点就是它具有一个功能很强大的位处理机。MCS-51 单片机内部共有 211 个可寻址位。4)、特殊功能寄存器(SFR)特殊功能寄存器(SFR)也称为寄存器,特殊功能寄存器反映了MCS-51 单片机的运行状态。很多功能也通过特殊功能寄存器来定义

9、和程序的执行。5)、外部数据器(XDATA 区)当 MCS-51 单片机内部数据器不够用时,可在片外扩展部数据器。3.1.3数制计算机只识别和处理数字信息,数字是以二进制数的形式表示的。常用数制1)十进制数:特点:有 09 十个不同的符号。逢十进一。一般用下脚标 D 表示,如 1985D ,或无下脚标。例: 1985 = 1000+900+80+5= 1×103+9×102+8×101+5×1002)二进制数:特点:有 0,1 两个不同的符号。逢二进一。二进制数的下脚标为 B 例: 1001B=1×23+0×22+0×21+

10、1×20 = 9D3)十六进制数:特点:有 09 ,A,B,C,D,E,F共十六个不同的符号。逢十六进位。用下脚标 “H” 表示十六进制数。例:327 H = 3×162+2×161+7×160 = 807D北方蓝芯科技开发8串行接口中断系统定时器/计数器总线器CPU时钟系统外部扩展单元特殊功能寄存器SFR输入/输出口I/O数据器RAM程序器ROMNBC51-V4.0 使用手册数制之间的转换3.1.4位、字节、字的概念位:就是一位的二进制数,其只能存放“1”或“0”,可以用来表示两种不同状态信息,如开关的“通”和“断”,电平的“高”和“。如 001 三位

11、字节( byte ):一个字节就是相邻的 8 位二进制数,即 D7 D6 D5 D4 D3 D2 D1 D0. 如 10110011 的 D4 是 1 , D6 是 0 。字( word ):在计算机中和信息处理系统中,在存贮、传送或操作时,作为一个单元的一组字符或一组二进制数。通常是 16 位一个字在计算机中用。3.1.5总线总线是用于传送信息的公共途径。总线可分为数据总线、地址总线、总线。单片机内的CPU、器、I/O 接口等单元部件都是通过总线连接到一起的。采用总线结构可以减少信息传输线的根数,提高系统可靠性,增强系统灵活性。AT89C51 单片机内部总线是单总线结构,即数据总线和地址总线

12、是公用的。3.1.6单片机最小系统单片机要想工作,还要加上一个复位电路和时钟电路来组成一个完整的最小系统。最小系统只是单片机能工作的最低要求,它不能对外完成任务,要进行对外还要进行一些输入、输出部件,作时还要执行部件。常见的输入部件有开关、按键盘,输出部件有指示灯、数码管、显示器等,执行部件有继电器、电磁阀等。图 3.3 单片机最小系统结构示意图在具体看单片机最小系统的原理图之前,我们先来看一下单片机引脚及其功能,89C51 有 40条引脚,与其他 51 系列单片机引脚是兼容的。这 40 条引脚可分为 I/O 端口线、电源线、外接晶体线四部分。其封装形式有两种:双列直插封装(DIP)形式和 L

13、QFP 贴片如下所示。线、北方蓝芯科技开发9时钟电路电源电路输入/输出复位电路单片机十六进制89abcdef二进制10001001101010111100110111101111十进制89101112131415十六进制01234567二进制00000001001000110100010101100111十进制01234567NBC51-V4.0 使用手册P1.6 P1.7 RST(RXD)P3.0(TXD)P3.1( 0)P3.2( 1)P3.3(T0)P3.4(T1)P3.5(WR)P3.6(RD)P3.7 XTAL2 XTAL1 GND78910111213 1617181920(1)双

14、列直插(1)、I/O 端口线1)、P0 口P0 口有八条端口线,命名为 P0.0P0.7,其中 P0.0 为低位,P0.7 为P1 口。2)、P1 口有八条端口线,命名为 P1.0P1.7 , 只作普通的 I/O 口使用,其功能与 P0 口的第能相同。P2 口P2 口有八条端口线,命名为 P2.0P2.7,它有两种使用功能:3)、一种是当系统不扩展外部器时,作普通 I/O 口使用,其功能和原理与 P0 口第能相同,只是作为输出口时不需外接上拉电阻;另一种是当系统外扩器时,P2 口作系统扩展的地址总线口使用,输出高 8 位的地址 A7A15,与 P0 口第二功能输出的低 8 位地址相配合,共同K

15、B) 。4)、P3 口外部程序或数据器(64P3 口有八条端口线,命名为 P3.0P3.7。P3 口是一个多用途的准双向口。第能是作普通 I/O 口使用,其功能和原理与 P1 口相同。第二功能是作条端口线所定义的功能各不相同,如表所示。表 P3 口各位的第二功能和特殊功能口使用,这时八(2)、电源线AT89C51 单片机的电源线有以下两种:北方蓝芯科技开发10NBC51-V4.0 使用手册1) 、2) 、IN40):+5 V 电源线。VGND(PIN20):接地线。(3)、外接晶体引脚AT89C51 单片机的外接晶体引脚有以下两种:1)、XTAL1:片内振荡器反相放大器的输入端和内部时钟工作的

16、输入端。采用内部振荡器时,它接外部石英晶体和微调电容的一个引脚。2)、XTAL2:片内振荡器反相放大器的输出端,接外部石英晶体和微调电容的另一端。采用外部振荡器时,该引脚悬空。单片机内各部件之间有条不紊的协调工作,其 信号是在一种基本节拍的指挥下按一定时间顺序发出的,这些 信号在时间上的相互关系就是 CPU 时序。而产生这种基本节拍的电路就是振荡器和时钟电路。引脚 XTAL1 为反相器输入端,XTAL2 为反相器输出端。当在这两个引脚上外接一个晶体(或陶瓷振荡器)和电容组成的并联谐振电路作为反馈元件时,便 一个自激振荡器。电路如下图所示:C2XTAL2C1XTAL1GND(4)、线AT89C5

17、1 单片机的(1)RST :线有以下几种:复位输入端,高电平有效。:地址锁存外部程序片外 ROM/编程线。器的读选通线。端/编程电源端(2) ALPE/ROG(3) PSEN(4) EA:/VPP:单片机在开机时或在工作中因干扰而使程序失控或工作中程序处于某种死循环状态等情况下都需要复位。复位的作用是使并从这个状态开始工作5。V处理器 CPU 以及其他功能部件都恢复到一个确定的初始状态,5VVCCC 10 mFC 10 mF1 kWRSTR8.2 kWR8.2 kW89C51VSS(a)(b)图 3.4 单片机复位电路图(a) 上电复位电路;(b) 手动复位电路3.1.7 单片机程序设计语言单

18、片机要完成一项基本的任务,就必须把任务分解为一些基本步骤,再要求它去执行每个步骤,还要向它下达命令。该命令在单片机术语中被称为“指令”。完成一项任务所需要的所有指令的有序集合称为“程序”,这些指令集要预先一条一条顺序地放在单片机的程序器中,单片机运行时,CPU 从程序器中一条一条地取出指令并执行。编写单片机程序可用汇编语言,也可以用 C 语言,下面分别简介 MCS-51 单片机汇编语言和 C 语言。北方蓝芯科技开发11VCCRST89C51VSSNBC51-V4.0 使用手册(1)、汇编语言计算机只能识别二进制数,所以计算机指令均由二进制代码组成。为了阅读和书写方便,常把它写成十六进制形式,通

19、常称这样的指令为指令。现在一般的计算机都有几十甚至几百种指令。显然用十六进制去书写和记忆不方便,为了便于记忆和书写,制造厂家对指令系统的每一条指令都给出了助记符。助记符是根据指令不同的功能和操作对象来描述指令的符号。由于助记符是用英文缩写来描述指令特征的,因此它便于记忆和分类。这种用助记符形式来表示指令叫做汇编语言3。汇编语言是最接近码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的 CPU,其汇编语言可能有所差异,所以不易移植(2)、C 语言由于不同的 CPU,其汇编语言可能有所差异,所以不易移植,而 C 语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种

20、计算机语言。缺点是占用较多,执行效率没有汇编高,C 语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。C 语言有功能丰富的库函数、运算速度快、编译效率高、有良好的可移植性,而且可以直接实现对系统硬件的。C 语言是一种结构化程序设计语言,它支持当前程序设计中广泛采用的由顶向下结构化程序设计技术。此外,C 语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了的保障。因此,使用 C 语言进行程序设计已成为软件开发的一个主流。用 C 语言来编写目标系统软件,会大大缩短开发周期, 且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完

21、备的系统,用C 语言进行单片机程序设计是单片机开发与应用的必然趋势。所以作为一个技术全面并涉足较大规模的软件系统开发的单片机开发最好能够掌握基本的 C 语言编程3.2 认识电子元器件1、 电阻电阻是所有电子电路中使用最多的元件。在物理学中,用电阻()来表示导体对电流阻碍作用的大小。导体的电阻越大,表示导体对电流的阻碍作用越大。主要职能就是阻碍电流流过 ,应用于限流、分流、降压、分压、负载与电容配合作滤波器及阻匹配等,数字电路能有上拉电阻和下拉电阻。电阻在电路中用“R”加数字表示,如:R1 表示编号为 1 的电阻。电阻在电路中的主要作用为分流、限流、分压、偏置等。1、参数识别:电阻的为欧姆( )

22、,倍率有:千欧(K ),兆欧(M )等。换算方法是:1 兆欧=1000 千欧=1000000 欧,电阻的参数标注方法有 3 种,即直标法、色标法和数标法。a、数标法主要用于贴片等小体积的电路,如:472 表示 47×100 (即 4.7K); 104 则表示 100K电位器是带滑动端的可变电阻,因常用来改变电位,故称电位器。电位器的种类很多, 但都有三个引出端:一个滑动端,两个固定端。北方蓝芯科技开发12NBC51-V4.0 使用手册2、 电容电容器通常简称其为电容,英文名称:capacitor,用字母 C 表示。定义:电容器,顾名思义,是“装电的容器”,是一种容纳电荷的器件。电容是

23、电子设备中大量使用的电子元件之一,广泛应用于隔直,耦合,旁路,滤波,调谐回路, 能量转换,电路等方面。数学计数法:如上图瓷介电容,标值 272,容量就是:27X100pf=2700pf.如果标值 473,即为 47X1000pf=后面的 2、3,都表示 10 的多少次方)。又如:332=33X100pf=3300pf。贴片钽电容极性3、 开关元件方法:带标志符的一端为正极。开关元件是指一个可以使电路开路、使电流中断或使其流到其他电路的电子元件。最常见的开关是让人操作的机电设备,其中有一个或数个电子接点。接点的“闭合”(closed)表电流流过;开关的“开路”( open)表示电子接点不导通形成

24、开路,示电子接点导通,不电流流过。4、 二极管二极管又称晶体二极管,简称二极管(diode);它只往一个方向传送电流的电子零件。它是一种具有 1 个零件号接合的 2 个端子的器件,具有按照外加电压的方向,使电流或不的性质。几乎在所有的电子电路中,都要用到半导体二极管,它在许多的电路中起着重要的作用,它是诞生最早的半导体器件之一,其应用也非常广泛。当用作开关元件时,二极管在正向电压作用下电阻很小,处于导通状态,相当于一只接通北方蓝芯科技开发13NBC51-V4.0 使用手册的开关;在反向电压作用下,电阻很大,处于截止状态,如同一只断开的开关。利用二极管的开关特性,可以组成各种逻辑电路。当用作限幅

25、元件时,二极管正向导通后,它的正向压降基本保持不变(硅管为 0.7V,锗管为 0.3V)。利用这一特性,在电路中作为限幅元件,可以把信号幅度限制在一定范围内。发光二极管简称为 LED。由镓(Ga)与砷(AS)、磷(P)的化合物制成的二极管,当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管,在电路及仪器中作为指示灯,或者组成文字或数字显示。磷砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极管发黄光。贴片二极管极性5、 三极管方法:带标志符的一端为负极。三极管,全称应为半导体三极管,也称双极型晶体管,晶体三极管,是一种电流半导体器件.其作用是把微弱信号放大成辐值较大的电信号, 也用作

26、无触点开关。6、 集成电路电流的集成电路(integrated circuit,港台称之为积体电路)是一种微型电子器件或部件。采用一定的工艺,把一个电路中所需的晶体管、二极管、电阻、电容和电感等元件及布线互连一起,制作在一小块或几小块半导体晶片或介质基片上,然后封装在一个管壳内,成为具有所需电路功能的微型结构;其中所有元件在结构上已组成一个整体,这样,整个电路的体积大大缩小,且引出线和焊接点的数目也大为减少,从而使电子元件向着微小型化、低功耗和高可靠性方面迈进了一大步。集成电路具有体积小,重量轻,引出线和焊接点少,长,可靠性高,性能好等优点,同时成本低,便于大规模生产。它不仅在工、民用电子设备

27、如收录机、电视机、计算机等方面得到广泛的应用,同时在军事、通讯、等方面也得到广泛的应用。用集成电路来装配电子设备,其装配密度比晶体管可提高几十倍至几千倍,设备的稳定工作时间也可大大提高。它在电路中用字母“IC”(也有用文字符号“N”等)表示。7、 1602 液晶工业字符型液晶,能够同时显示 16x02 即 32 个字符。(16 列 2 行)北方蓝芯科技开发14NBC51-V4.0 使用手册1602 液晶模块内部的字符发生器(CGROM)已经了 160 个不同的点阵字符图形,这些字符有:数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码

28、是 01000001B(41H),显示时模块把地址 41H 中的点阵字符图形,我们就能看到字母“A”。因为 1602 识别的是 ASCII 码,试验可以用 ASCII 码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如'A。8、 蜂鸣器蜂鸣器的作用,蜂鸣器是一种于计算机、打印机、复印机、结构的电子讯响器,采用直流电压供电,广泛应用器、电子玩具、设备、机、定时器等电子产品中作9、 晶振器件。晶体振荡器,简称晶振,其作用在于产生原始的时钟频率,这个频率经过频率发生器的倍频或分频后就成了电脑中各种不同的总线频率。以声卡为例,要实现对模拟信号 44.1kHz 或 48kHz 的采样,频

29、率发生器就必须提供一个 44.1kHz 或 48kHz 的时钟频率。10、红外对管红外对管是红外线发射管与光敏接收管,或者红外线接收管,或者红外线接收头配合在一起使用时候的总称,红外发射管就是发射红外线的二极管。北方蓝芯科技开发NBC51-V4.0 使用手册11、数码管数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为 1 位、2 位、4 位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极 C

30、OM 接到+5V,当某一字段发光二极管的阴极为低电,相应字段就点亮。当某一字段的阴极为高电,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(C OM)的数码管。共阴数码管在应用时应将公共极 COM 接到地线 GND 上,当某一字段发光二极管的阳极为高电,相应字段就点亮。当某一字段的阳极为低电,相应字段就不亮。12、继电器继电器是一种电子器件,它具有系统(又称输入回路)和被系统(又称较大电流的一输出回路),通常应用于自动电路中,它实际上是用较小的电流去种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用3.3 单片机 C 语言入门C 语言是一种功能强大、应用

31、广泛、具有发展前途的计算机语言。它既可用于系统软件的设计,北方蓝芯科技开发16NBC51-V4.0 使用手册也可用于应用软件的开发。许多著名的系统软件都是由 C 语言编写的。建议初学者读谭浩强的C 程序设计,非常适合初学者自学用的一本书。1、 C51 的数据类型1)、字符型 char有 signed char 和 unsigned char 之分,默认为 signed char。它们的长度均为一个字节,用于存放一个单字节的数据。对于 signed char,它用于定义带符号字节数据,其字节的最为符号位,“0”表示正数,“1”表示负数,补码表示,所能表示的数值范围是-128+127;对于 uns

32、igned char,它用于定义无符号字节数据或字符,可以存放一个字节的无符号数,其取值范围为 0255。unsigned char 可以用来存放无符号数,也可以存放西文字符,一个西文字符占一个字节,在计算机内部用ASCII 码存放。2)、int 整型分 singed int 和unsigned int。默认为 signed int。它们的长度均为两个字节,用于存放一个双字节数据。对于 signed int,用于存放两字节带符号数,补码表示,数的范畴为-32768 unsigned int,用于存放两字节无符号数,数的范围为 065535。3)、long 长整型。对于分 singed long

33、 和 unsigned long。默认为 signed long。它们的长度均为四个字节,用于存放一个四字节数据。对于 signed long ,用于存放四字节带符号数,补码表示,数的范畴为 7 。对于 unsigned long , 用于存放四字节无符号数, 数的范围为-21474836480。4)、float 浮点型float 型数据的长度为四个字节,格式符合 IEEE-754 标准的单精度浮点型数据,包含指数和尾数两部分,最为符号位,“1”表示负数,“0”表示正数,其次的 8 位为阶码,最后的 23 位为尾数的有效数位,由于尾数的整数部分隐含为“1”,所以尾数的精度为 24 位。5)、*

34、 指针型指针型本身就是一个变量,在这个变量中存放的指向另一个数据的地址。这个指针变量要占用一定的内存单元,对不同的处理器其长度不一样,在 C51 中它的长度一般为 13 个字节。KEIL C51 编译器能够识别的基本数据类型如表示:2、 C51 的运算符和表达式1)、赋值运算符赋值运算符“=”,在 C51 中,它的功能是将一个数据的值赋给一个变量,如 x=10。利用赋值运算符将一个变量与一个表达式连接起来的式子称为赋值表达式,在赋值表达式的后面加一个分号“;”就了赋值语句,一个赋值语句的格式如下:北方蓝芯科技开发17基本数据类型长度取值范围unsigned char1 字节0255signed

35、 char1 字节-128+127unsigned int2 字节065535signed int2 字节-32768unsigned long4 字节0signed long4 字节-21474836487float4 字节±1.175494E-38±3.402823E+38bit1 位0 或 1sbit1 位0 或 1sfr1 字节0255sfr162 字节065535NBC51-V4.0 使用手册变量=表达式;执行时先计算出右边表达式的值,然后赋给左边的变量。例如:x=8+9; x=y=5;/*将 8+9 的值赋绐变量 x*/*将常数 5 同时赋给变量 x 和 y*/

36、在 C51 中,在一个语句中同时给多个变量赋值,赋值顺序自右向左。2)、算术运算符在 C 语言中,参加运算的对象个数称为运算符的“目”。单目运算符是指参加运算的对象只有一个,如+10,67,x+。双目运算符是指参加运算的对象有两个,如 2+3,7%3。相同运算符连续出现时,有的运算符是从左至右进行运算,有的运算符是从右至左进行运算,C 语言中,将运算符的这种特性称为结合性。加法(+)、减法()、乘法(*)与数学中的算术运算相同。例如:3.5+4.7 结果是 8.2;3.5 4.7结果是0.8;3.5*4.7 结果是 16.45。除法运算(/)与数学中的除法全相同,它与参加运算的对象的数据类型相

37、关。当参加运算的两个对象均为整型数据时,其运算结果为数算结果的整数部分。如 7/4 结果为 1,而不是1.75。若参加运算的两个对象有一个是实型或两个都是实型,那么运算结果为实际运算的值,如7/5.0 的运算结果为 1.4。模运算的运算对象必须为整型,结果是相除后的余数,如 7%5 结果为 2。增 1 减 1 运算符都是单目运算符,用来对整型、实型、字符型、指针型变量或数组元素等变量进行加 1 或减 1 运算,运算的结果仍是原类型。3)、关系运算符C51 中有 6 种关系运算符:>大于<小于>=大于等于<=小于等于= =等于!=不等于关系运算用于比较两个数的大小,用关系

38、运算符将两个表达式连接起来形成的式子称为关系表达式。关系表达式通常用来作为判别条件构造分支或循环程序。关系表达式的一般形式如下:表达式 1关系运算符表达式 2北方蓝芯科技开发18运算对象个数名称运算符运 算 规 则运算对象数据类型结合性单目正+取原值整型或实型自右向左负取负值双目加+加法运算自左向右减减法运算乘*乘法运算除/除法运算模%整除取余整型单目增 1(前缀)+先加 1,后使用整型、字符型、指针型变量或数组元素、实型自右向左增 1(后缀)+先使用,后加 1减 1(前缀) 先减 1,后使用减 1(后缀) 先使用,后减 1NBC51-V4.0 使用手册关系运算的结果为逻辑量,成立为真(1),

39、不成立为假(0)。其结果可以作为一个逻辑量参与逻辑运算。例如:5>3,结果为真(1),而 10= =100,结果为假(0)。注意:关系运算符等于“= =”是由两个“=”组成。4)、逻辑运算符C51 有 3 种逻辑运算符:逻辑或逻辑与逻辑非|&&!关系运算符用于反映两个表达式之间的大小关系,逻辑运算符则用于求条件式的逻辑值,用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。逻辑与,格式:条件式 1 && 条件式 2当条件式 1 与条件式 2 都为真时结果为真(非 0 值),否则为假(0 值)。逻辑或,格式:条件式 1 | 条件式 2当条件式 1

40、与条件式 2 都为假时结果为假(0 值),否则为真(非 0 值)。逻辑非,格式:!条件式当条件式原来为真(非 0 值),逻辑非后结果为假(0 值)。当条件式原来为假(0 值),逻辑非后结果为真(非 0 值)。例如:若 a=8,b=3,c=0,则!a 为假,a && b 为真,b && c 为假。5)、位运算符C51 语言能对运算对象按位进行操作,它与汇编语言使用一样方便。位运算是按位对变量进行运算,但并不改变参与运算的变量的值。如果要求按位改变变量的值,则要利用相应的赋值运算。C51 中位运算符只能对整数进行操作,不能对浮点数进行操作。C51 中的位运算符有:&

41、amp;按位与|按位或按位异或按位取反<<左移>>右移【例】设 a=0x45=01010100B,b=0x3b=00111011B,则 a&b、a|b、ab、a、a<<2、b>>2 分别为多少?由01010100& 0011101100010000得a&b=00010000b=0x10。下面同解a|b=01111111B=0x7f。ab=01101111B=0x6f。北方蓝芯科技开发19NBC51-V4.0 使用手册a=10101011B=0xab。a<<2=01010000B=0x50。b>>2=

42、00001110B=0x0e。6)、复合赋值运算符C51 语言中支持在赋值运算符“=”的前面加上其它运算符,组成复合赋值运算符。下面是 C51中支持的复合赋值运算符-+/= &=>>=+=加法赋值*=乘法赋值%=取模赋值|=逻辑或赋值=逻辑非赋值<<=左移位赋值复合赋值运算的一般格式如下:减法赋值 除法赋值 逻辑与赋值逻辑异或赋值右移位赋值变量 复合运算赋值符表达式它的处理过程:先把变量与后面的表达式进行某种运算,然后将运算的结果赋给前面的变量。其实这是 C51 语言中简化程序的法,大多数二目运算都可以用复合赋值运算符简化表示。例如:a+=6 相当于 a=a+6

43、;a*=5 相当于 a=a*5;b&=0x55 相当于 b=b&0x55;x>>=2 相当于 x=x>>2。3、 数据类型转换规则对数据进行运算时,要求参与运算的对象的数据类型相同(运算得到的运算结果的类型与运算对象也相同)。因此,在运算过程中常常需要对变量或常量的数据类型进行转换,转换的方法有两种,一种是系统自动转换(又称为隐式转换);另一种是在程序中强制转换(又称为显式转换)。 1)、自动转换规则在不同类型数据的混合运算中,由系统自动实现转换。转换规则如下:(1) 若参与运算的数据的类型不同,则应先转换成同一类型,然后进行运算。(2) 将低类型数据转

44、换成高类型数据后进行运算。如 int 型和 long 型运算时,先把 int 型转换成long型后再进行运算。类型的高低是根据其所占空间的字节数按从小到大的顺序排列的,顺序如下:char,int,long,float,double。(3) 所有的浮点运算都是按照双精度进行运算的,即使仅含 float 型单精度量运算的表达式,也要先转换成 double 型,再作运算。(4) char 型和 short 型参与运算时,必须先转换成 int 型。例如,设有:float PI=3.14;int s,r=7; s=r*r*PI;因为 PI 为单精度型,s 和 r 为整型,在执行 s=r*r*PI 语句时

45、,r 和 PI 都转换成 double 型后再进行计算,运算结果也为 double 型,右边的运算结果为 153.86,但由于 s 为整型,故应将赋值号右边的运算结果转换成整型(舍去小数部分),因此 s 的值为 153。2)、强制类型转换强制类型转换是通过类型转换运算来实现的,其语法格式如下:(类型说明符)(表达式)北方蓝芯科技开发20NBC51-V4.0 使用手册其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。例如: (float) a 把 a 转换为实型;(int)(x+y) 把 x+y 的结果转换为整型;而(int)x+y 则只将 x 转换为整型。在使用强制类型转换时应注意以

46、下问题:(1) 类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y 则只是把 x 转换成 int 型之后再与 y 相加。(2) 对于被转换的单个变量而言,无论是强制转换还是自动转换,都只是为了本次运算的需要而对变量的数据长度进行临时性转换,而例如,设有:改变变量定义时所的类型。float f = 5.75;int x;x= (int)f;将 f 强制转换成整数5,因此 x = 5,而 f 本身的类型并未改变且其值仍为5.75。4、 程序结构1)、主函数结构每一个 C 源程序都是一系列函数的集合。其中,必须有且只能有一个主函数,其函数名为 mai

47、n,其结构如下:void main(void)其中,voidmain(void) 称为函数说明部分(又称函数头),而称为函数体,函数体中的每个语句行末尾都必须用分号结束。2)、 文件包含命令C 语言系统提供了许多库函数,并将这些函数根据其功能分成了若干组,每组都有一个组名。如数学类函数组的组名为 math。在 C 语言系统所安装文件夹的下级文件夹中有一个与其相对应的文件 math.h,这些扩展名为.h 的文件称为头文件。include 称为文件包含命令,当用户在程序中使用到系统的标准库函数中的函数时,需要在程序中(一般在程序的首部)增加一条预处理语句如#include<stdio.h&g

48、t;,以便告知系统需要使用某个头文件中的函数。例如我们在学习单片机过程中,会常用到#include<reg51.h>这个头文件包含的是 51 单片机寄存器的全部定义。3)、 C 语言程序基本结构一个完整的 C 语言源程序由如下 5 个部分:北方蓝芯科技开发21NBC51-V4.0 使用手册(1) 预处理命令;(2) 全局变量说明;(3) 函数原型说明;(4) 其他子函数;(5) 主函数。一个简单的 C 语言源程序只需要(1)和(5)两个部分,其中“预处理命令”一般是一系列文件包含命令,即 include 命令。关于程序结构,应当注意以下几方面的问题:(1)、C 程序是由函数的,一个

49、 C 源程序至少包括一个函数,一个 C 源程序有且只有一个名为 main()的函数,也可能包含其它函数,因此,函数是 C 程序的基本。主程序通过直接书写语句和调用其它函数来实现有关功能,这些其它函数可以是由 C 语言本身提供给我们的(如例 3 中的_nop_()函数) ,这样的函数称之为库函数,也可以是用户编写的(如 Delay()函数),这样的函数称之为用户自定义函数。那么库函数和用户自定义函数有什么区别呢?简单地说,任何使用 Keil C 语言的人,都可以直接调用 C 的库函数而不需要为这个函数写任何代码,只需要包含具有该函数说明的相应的头文件即可;而自定义函数则是完全个性化的,是用户根据

50、库函数供我们直接使用。需要而编写的。Keil C 提供了 100 多个(2)、一个 C 语言程序,总是从 main 函数开始执行的,而不管物理位置上这个 main()放在什么地方。一般其放在最后,事实上这往往是最常用的式。(3) 、主程序中的 Delay 如果写成 delay 就会编译出错,即 C 语言区分大小写,这一点往往让初学者非常困惑,尤其是学过一门其它语言的人,有人喜欢,有人不喜欢,但不管怎样,你得遵守这一规定。(4) 、函数的书写格式很灵活,在一行中可以书写多个语句(每个语句和资料定义的最后必须有一个分号,分号是 C 语句的必要组成部份),一个语句也可以写在多行中。在程序的任何地方都

51、可以空格或回车符。(5)、可以用/*.*/的形式为 C 程序的任何一部份作注释,在“/*”开始后,一直到 “*/”为止的中间的任何内容都被认为是注释,所以在书写特别是修改源程序时特别要注意,有时无意之中删掉一个“*/” ,结果,从这里开始一直要遇到下一个“*/”中的全部内容都被为是注释了。原本好好的一个程序,编译已过通过了,稍作修改,一下出现了几十甚至上百个错误,初学 C 的人往往对此深感头痛,这时就要检查一下,是不是有这样的情况, 如果有的话,赶紧把这个“*/”补上。特别地,Keil C 也支持 C+风格的注释,就是用“/”引导的后面的语句是注释,例: P1_0=!P1_0;/取反 P1.0

52、这种风格的注释,只对本行有效,所以出现上面的问题,而且书写比较方便,所以在只需要一行注释的时候,我们往往采用这种格式。(6)、主函数可以调用任何子函数但不能调用它但是子函数不能调用主函数。,任何子函数之间也可以相用,5、 单片机 C 语言中常用的语句(1)、if 语句if 语句是用来判定所给定的条件是否满足根据判定的结果(真或假)决定执行给出的两种操作之一。 C 语言提供了三种形式的 if 语句(1)、if(条件表达式)执行语句;北方蓝芯科技开发22NBC51-V4.0 使用手册如果表达式的结果为真,则执行语句,否则不执行(2)、if(条件表达式)语句 1;else语句 2;如果表达式的结果为真,则执行语句(3)、if(表达式 1)语句 1;else if(表达式 2)语句 2;else if(表达式 m)语句 m;else语句 n1,否则执行语句2(2)、swich 语句当程序中有多个分支时,可以使用if 嵌套实现,但是当分支较多时,则嵌套的if 语层数多,程序冗长而且

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论