单片机C语言教程(五)

发布者:浊酒最新更新时间:2015-12-23 来源: eefocus关键字:单片机  C语言教程  常量 手机看文章 扫描二维码
随时随地手机看文章

  上一节我们学习了KEIL C51编译器所支持的数据类型。而这些数据类型又是怎么用在常量和变量的定

义中的呢?又有什么要注意的吗?下面就来看看吧。晕!你还区分不清楚什么是常量,什么是变量。常量

是在程序运行过程中不能改变值的量,而变量是可以在程序运行过程中不断变化的量。变量的定义可以使用

所有C51编译器支持的数据类型,而常量的数据类型只有整型、浮点型、字符型、字符串型和位标量。

这一节我们学习常量定义和用法,而下一节则学习变量。
常量的数据类型说明是这样的
  1.整型常量可以表示为十进制如123,0,-89等。十六进制则以0x开头如0x34,-0x3B等。长整

型就在数字后面加字母L,如104L,034L,0xF340等。
  2.浮点型常量可分为十进制和指数表示形式。十进制由数字和小数点组成,如0.888,3345.345,0.0等,

整数或小数部分为0,可以省略但必须有小数点。指数表示形式为[±]数字[.数字]e[±]数字,[]中的内容

为可选项,其中内容根据具体情况可有可无,但其余部分必须有,如125e3,7e9,-3.0e-3。
  3.字符型常量是单引号内的字符,如'a','d'等,不可以显示的控制字符,可以在该字符前面加

一个反斜杠""组成专用转义字符。常用转义字符表请看表5-1。
  4.字符串型常量由双引号内的字符组成,如"test","OK"等。当引号内的没有字符时,为空字符

串。在使用特殊字符时同样要使用转义字符如双引号。在C中字符串常量是做为字符类型数组来处理的,

在存储字符串时系统会在字符串尾部加上o转义字符以作为该字符串的结束符。字符串常量"A"和字符常

量'A'是不同的,前者在存储时多占用一个字节的字间。
  5.位标量,它的值是一个二进制。

转义字符

含义

ASCII码(16/10进制)

o

空字符(NULL)

00H/0

换行符(LF)

0AH/10

回车符(CR)

0DH/13

水平制表符(HT)

09H/9



退格符(BS)

08H/8

f

换页符(FF)

0CH/12

'

单引号

27H/39

"

双引号

22H/34

\

反斜杠

5CH/92

表5-1 常用转义字符表

  常量可用在不必改变值的场合,如固定的数据表,字库等。常量的定义方式有几种,下面来加以说明。
#difine False 0x0; //用预定义语句可以定义常量
#difine True 0x1; //这里定义False为0,True为1
         //在程序中用到False编译时自动用0替换,同理True替换为1
unsigned int code a=100; //这一句用code把a定义在程序存储器中并赋值
const unsigned int c=100; //用const定义c为无符号int常量并赋值
  以上两句它们的值都保存在程序存储器中,而程序存储器在运行中是不允许被修改的,所以如果在

这两句后面用了类似a=110,a++这样的赋值语句,编译时将会出错。
说了一通还不如写个程序来实验一下吧。写什么程序呢?跑马灯!对,就写这个简单易懂的吧,这个也好

说明典型的常量用法。先来看看电路图吧。它是在我们上一课的实验电路的基础上增加6个LED组成的,

也就是用P1口的全部引脚分别驱动一个LED,电路如图5-1所示。
  新建一个RunLED的项目,主程序如下:
#include //预处理文件里面定义了特殊寄存器的名称如P1口定义为P1
void main(void)
{
//定义花样数据
const unsigned char design[32]={0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,
0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,
0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x0,
0xE7,0xDB,0xBD,0x7E,0xFF};
unsigned int a; //定义循环用的变量
unsigned char b; //在C51编程中因内存有限尽可能注意变量类型的使用
//尽可能使用少字节的类型,在大型的程序中很受用
do{
for (b=0; b<32; b++)
{
for(a=0; a<30000; a++); //延时一段时间
P1 = design[b]; //读已定义的花样数据并写花样数据到P1口
}
}while(1);
}
  程序中的花样数据可以自以去定义,因这里我们的LED要AT89C51的P1引脚为低电平才会点亮,所以我们

要向P1口的各引脚写数据O对应连接的LED才会被点亮,P1口的八个引脚刚好对应P1口特殊寄存器的八个二

进位,如向P1口定数据0xFE,转成二进制就是11111110,最低位D0为0这里P1.0引脚输出低电平,LED1被点亮。

如此类推,大家不难算出自己想要做的效果了。大家编译烧写看看,效果就出来,显示的速度您可以根据需

要调整延时a的值,不要超过变量类型的值域就很行了。哦,您还没有实验板?那如何可以知道程序运行的

结果呢?呵,不用急,这就来说说用KEIL uVision2的软件仿真来调试IO口输出输入程序。
单片机C语言教程(五)


图5-1 八路跑马灯电路

  编译运行上面的程序,然后按外部设备菜单Peripherals-I/O Ports-Port1就打开Port1的调试窗口了,

如图5-3中的2。这时程序运行了,但我们并不能在Port1调试窗口上看到有会什么效果,这时我们可以用鼠

标左击图5-3中1旁边绿色的方条,点一下就有一个小红方格在点一下又没有了,哪一句语句前有小方格程

序运行到那一句时就停止了,就是设置调试断点,同样图5-2中的1也是同样功能,分别是增加/移除断点、

移除所有断点、允许/禁止断点、禁止所有断点,菜单也有一样的功能,另外菜单中还有Breakpoints可打

开断点设置窗口它的功能更强大,不过我们这里先不用它。我们在P1 = design[b];"这一句设置一个断点这

时程序运行到这里就停住了,再留意一下Port1调试窗口,再按图5-2中的2的运行键,程序又运行到设置断

点的地方停住了,这时Port1调试窗口的状态又不同了。也就是说Port1调试窗口模拟了P1口的电平状态,

打勾为高电平,不打勾则为低电平,窗口中P1为P1寄存器的状态,Pins为引脚的状态,注意的是如果

是读引脚值必须把引脚对应的寄存器置1才能正确读取。图5-2中2旁边的{}样的按钮分别为单步入,

步越,步出和执行到当前行。图中3为显示下一句将要执行的语句。图5-3中的3是Watches窗口可查看各

变量的当前值,数组和字串是显示其头一个地址,如本例中的design数组是保存在code存储区的首地址为

D:0x08,可以在图中4 Memory存储器查看窗口中的Address地址中打入D:0x08就可以查看到design各数据和

存放地址了。如果你的uVision2没有显示这些窗口,可以在View菜单中打开在图5-2中3后面一栏的查看

窗口快捷栏中打开。
单片机C语言教程(五)


图5-2 调试用快捷菜单栏
单片机C语言教程(五)
图5-3 各调试窗口
关键字:单片机  C语言教程  常量 引用地址:单片机C语言教程(五)

上一篇:单片机C语言教程(六)
下一篇:单片机C语言教程(四)

推荐阅读最新更新时间:2024-03-16 14:41

NEC 8位MCU降低180度马达设计门槛
电机是社会上各领域广泛使用的且耗能巨大一种产品,如何提高电机效率,降低电机能耗成了电机发展的方向。直流无刷电机以其效率高,噪声小等优点,在各个领域都获得了广泛的使用。本文主要介绍了NEC专为变频控制应用推出的8位MCU系列的特点以及使用uPD78F0712设计的永磁同步电机(PMSM)180°控制器解决方案。该方案具有低成本、高效率和低噪声等优点,已经应用在了国内一些知名的空调厂商的空调室外风机上 I 180°控制的应用场合及特点 在一些应用场合,要求马达以不同的速度连续的运转,因此要求低成本电机驱动具有调速和节能或者低噪声等特点,例如水泵、空调风机等。类似的这些场合不适合使用变频器驱动的交流异步电机,而适合使用小功率无刷直流电机
[工业控制]
NEC 8位<font color='red'>MCU</font>降低180度马达设计门槛
51单片机入门教程(4)——按键控制
单片机与外界的信息交互主要有两大类,输入信息和输出信息。 之前的博客介绍了通过单片机控制LED灯和数码管向外界输出信息,该教程介绍单片机常用的输入设备——独立按键和矩阵键盘。 一、独立按键 1.1 独立按键的原理 独立按键一共有四个针脚,两个短针脚之间默认不导通,两个长针脚之间默认导通。实物图如图: 1.2 独立按键的仿真电路 在Proteus中对按键进行了简化,只有两个接线针脚。按键的一端接到单片机的IO口上,另一端与GND连接。当按键按下时,单片机的IO口与GND连接,端口电平被拉低。因此通过读取端口电平即可获知按键状态。 仿真电路如图: 1.3 按键消抖 关于按键抖动: 通常的按键所用开关为机械弹性开关,
[单片机]
51<font color='red'>单片机</font>入门<font color='red'>教程</font>(4)——按键控制
单片机各大分类与详解
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。从上世纪80年代,由当时的4位、 8位单片机 ,发展到现在的32位300M的高速单片机。 单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit) 单片机芯片常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算
[单片机]
<font color='red'>单片机</font>各大分类与详解
基于SOC单片机的pH值检测与控制
  0 引言   随着科技的进步和工农业生产的发展,水产养殖这一传统的行业也在向工厂化和智能化方向发展。水质监控仪器的设计是实现工厂化水产养殖的关键设备。其中pH 值就是多因子水环境中一个重要的因子,本文设计了基于SOC 单片机C8051F020 的pH 值的检测电路,并通过控制算法实现了对多因子水环境中pH 值的控制调节。   1 硬件电路设计和pH 测量原理   本设计采用高速SOC 单片机C8051F020 既能提高仪表可靠性又能提高系统性能。C8051F020是集成的混合信号片上系统,具有与MCS-51内核及指令集完全兼容的微控制器,除了具有标准8051 的数字外设部件之外,片内还集成了数据采集和控制系统中常用的模拟
[单片机]
基于SOC<font color='red'>单片机</font>的pH值检测与控制
at90s8515单片机驱动t6963c lcd 24064 程序
at90s8515 单片机 驱动t6963c LCD 24064 程序 ;************************************************************************ ;连线图:  液晶屏分为8行*15列汉字,使用模拟接口方式。            * ;*DB0-----PA0*      *DB4-----PA4*       *Rd ------PC2*      *Cd ------PC0*    * ;*DB1-----PA1*      *DB5-----PA5*       *Wr ------PC1*      *CE ------GND*    * ;*D
[单片机]
89c51单片机控制两个步进电机正反转加减速
序有详细注释。 仿真原理图如下 单片机源程序如下: /******************************************************************************* * 实 验 名: 步进电机实验 * 使用的IO: 电机用P1口,键盘使用P2.0、P2.1、P2.2、P2.3、P2.4、P2.5 * 按键功能:K1;正转 K2;反转 K3;低速转动 K4;高速转动 K5:电机切换 K6;停止 * 实验效果: 按下K1键,顺时针转,按下K2键,逆时针转,按下K3键,低速,按下K4键,高速。 按下K5键,转动的电机停止,并切换到控制另一个电机 按下K6键,转动的电机停止
[单片机]
89c51<font color='red'>单片机</font>控制两个步进电机正反转加减速
浅谈STM32单片机命名规则和体系架构
STM32单片机命名规则 对于很多刚刚开始接触STM32系列单片机的人来说,可能会对这一系列的单片机感到茫然,不知道这突然之间出现的这么多的单片机他们之间到底是怎么去区分的,话不多说,直接上图: 注解: (1)STM32指的是ST(意法半导体)公司生产的32bit的MCU(微控制器) (2)F---指的是产品类型为通用类型 (3)1xx指的是产品的子系列 (4)封装指的是对应芯片引脚的封装格式 stm32的体系架构 一。首先说说STM32F10x芯片由丝印所体现出的共同点和区别。 先简单说说命名规则: 101基本型,102USB基本型,103增强型,105或107互联型。 T:36脚,C:48脚,R:64脚,V:100脚,Z:
[单片机]
浅谈STM32<font color='red'>单片机</font>命名规则和体系架构
MCS-51系列基本型单片机
MCS是Intel公司生产的单片机的系列符号,例如,Intel公司的MCS-48、MCS-51、MCS-96系列单片机。MCS-51系列单片机是Intel公司在MCS-48系列的基础上于20世纪80年代初发展起来的,是最早进入我国并在我国得到广泛应用的单片机主流品种。      MCS-51系列单片机主要包括基本型产品8031/8051/8751(对应的低功耗型80C31/80C51/87C51)和增强型产品8032/805218752。虽然它们是8位的单片机,但是具有品种全、兼容性强、性能价格比高等特点,且软硬件应用设计资料丰富齐全,已为我国广大工程技术人员所熟悉和掌握。在20世纪80年代和90年代,MCS-51系列单片机
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved