微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > PIC单片机C语言程序设计(5)

PIC单片机C语言程序设计(5)

时间:02-05 来源:互联网 点击:

  九、C语言的运算符

  C语言提供了30多个运算符,范围很大,应用广。除了控制语句和输入、输出之外,几乎所有的基本操作,都是按照运算符来进行处理的,可见其在C语言中的重要性。

  1.C语言运算符的作用与分类

  C语言的运算符可以灵活地与运算对象组合成运算表达式。按其在表达式中的作用,运算符可分成基本运算符和其他运算符。基本运算符有8类,即算术运算符、关系运算符、逻辑运算符、自增运算符、自减运算符、字位运算符、赋值运算符、条件运算符、逗号运算符等。而其他运算符有指针运算符和杂项运算符等。每类运算符又包含了多种运算符。

  2.基本运算符

  (1)算术运算符及自增、自减运算符。

  表4列出了加、减、乘、除、取模5种算术运算符,以及自增、自减运算符的操作说明。其中,除法运算符又分两种情况,一是整除, 口两个整数相除,所得商舍尾数,仅取整数部分,如5/10等于0;二是实除,即两个实数相除,所得商也是实数,如5.0/10等于0.5。

表4 算术和自增自减运算符

  自增运算符++和白减运算符一一,是C语言中最具特色的单目(一个量)运算符,其操作对象必须是整型变量,而不能为常量或表达式,其功能分别是使变量增1或减1。自增运算符++和自减运算符一有前缀运算符和后缀运算符两种应用方式,两者产生的效果有些不同:前缀运算符,如++i或--j,在使用j之前,先使j的值+1或-1;后缀运算符j++或j-。

  在使用i之后,才使i的值加1或减1。

  例如,Y的原值等5,则:

  语句X=++y, 表示y先加1再运算, 得y=y+1.6,x=y=6;语句×=y++, 表示Y先运算再加1, 得x=y=5,y=y+1=6。

  在《电子制作》2009年第10期,《PIC单片机C语言程序(1)》的延时函数中,我们已用过后缀运算符i++,大家可以从中体会其用法。

  (2)逻辑运算符。

  逻辑运算符是基本运算符中的一种。逻辑运算符有:与“&&”、或“||" 、非“!”等3三种。

  逻辑运算符&&、||为双目(两个量)运算符,!为单目运算符。它们要求的操作对象是非0的整型值和整型0表示的逻辑量。其运算规则如下:

  1)若两个操作对象都为非0整型值(真),则相与的结果为1(真),否则为0(假);2)若两个操作对象都为整型值0(假),则相或结果为0(假),否则为1(真);3)若操作对象为非0整型值(真),求非的结果为0(假),否则为1(真)。

  这里补充一点,算术运算符中的加、减和乘,与大家熟悉的算术运算规则完全相同,而除运算符应按上述规范使用。

  C语言的运算符内容较多,限于篇幅,这里仅概况地加以介绍,希望读者在学习时,根据PIC单片机书籍,深入学习C语言的运算符,并通过编写C语言程序,掌握每个运算符的意义和使用规则。

  3.可预置起始时刻的时钟程序

  (1)硬件电路。

  利用《电子制作》2010年第1期《PIC单片机C语言程序(4)》一文中的4位LED数码管显示电路(图3),可以制成24小时或12小时循环显示的时钟电路。且该时钟可以由人工预置起始时刻,即电路插上电源后,可根据当时的实时时刻,如手机或电视屏上显示的时刻,进行人工校时,之后即可作时钟用;若不进行人工预置(校时),该电路就自动从00,O0开始,以分为单位起始计时,此时,该电路可作人工守候定时器。该时钟电路不显示秒,而是以分钟开始的显示。

  该电路仍采用PIC16F84A芯片,当写入本文下面给出的程序后,即可作24小时时钟用。其使用方法如下:

  插上电源,LED数码管显示OO.O0,按下图3中的K1键,数码管全灭,松开K1键,再按下K1键,数码管从0(分位)开始计数,到达指定的分钟显示时,放开K1键,又按K1键,时位显示,到达指定的时显示时,放开K1,时钟即按人工预置起始时刻工作,操作十分简单。

  注意:如果预置时间的时位是从00开始而仅有分钟的有效值时,当预置分钟指定值后,仍要再按下K1键,使时位从00递增又回到00,时钟即可工作,否则时钟电路不会工作。

  (2)24小时的时钟C程序。

  根据图3编写的24小时时钟电路的功能,可绘出相关流程图(限于篇幅,这里从略,若需要,可根据《PlC单片机C语言程序(4)》一文的图5,0~9999的计数流程图,加上下面的C程序中的注释,扩展绘出),再由流程图编写出24小时的时钟C程序。该程序命名为pic0.5.C,其清单如下:

  说明:1)上述C程序,经picc编译器编译。

  生成目标码。hex,即可用编程器将。hex程序烧写到pic16F84A芯片中,再用《PIC单片机C语言程序(4)》一文中图3电路即可制成24小时的时钟。该时钟与标准时间相比,仅慢1秒/周。略增、减本程序中的d值,可再校时。

  2)初学者仔细查看程序中的注释,即可理解本C程序的编写原理。

3

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top