PIC單片機(jī)C語言程序設(shè)計(5)
九、C語言的運(yùn)算符
C語言提供了30多個運(yùn)算符,范圍很大,應(yīng)用廣。除了控制語句和輸入、輸出之外,幾乎所有的基本操作,都是按照運(yùn)算符來進(jìn)行處理的,可見其在C語言中的重要性。
1.C語言運(yùn)算符的作用與分類
C語言的運(yùn)算符可以靈活地與運(yùn)算對象組合成運(yùn)算表達(dá)式。按其在表達(dá)式中的作用,運(yùn)算符可分成基本運(yùn)算符和其他運(yùn)算符。基本運(yùn)算符有8類,即算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、自增運(yùn)算符、自減運(yùn)算符、字位運(yùn)算符、賦值運(yùn)算符、條件運(yùn)算符、逗號運(yùn)算符等。而其他運(yùn)算符有指針運(yùn)算符和雜項運(yùn)算符等。每類運(yùn)算符又包含了多種運(yùn)算符。
2.基本運(yùn)算符
(1)算術(shù)運(yùn)算符及自增、自減運(yùn)算符。
表4列出了加、減、乘、除、取模5種算術(shù)運(yùn)算符,以及自增、自減運(yùn)算符的操作說明。其中,除法運(yùn)算符又分兩種情況,一是整除, 口兩個整數(shù)相除,所得商舍尾數(shù),僅取整數(shù)部分,如5/10等于0;二是實除,即兩個實數(shù)相除,所得商也是實數(shù),如5.0/10等于0.5。
表4 算術(shù)和自增自減運(yùn)算符
自增運(yùn)算符++和白減運(yùn)算符一一,是C語言中最具特色的單目(一個量)運(yùn)算符,其操作對象必須是整型變量,而不能為常量或表達(dá)式,其功能分別是使變量增1或減1。自增運(yùn)算符++和自減運(yùn)算符一有前綴運(yùn)算符和后綴運(yùn)算符兩種應(yīng)用方式,兩者產(chǎn)生的效果有些不同:前綴運(yùn)算符,如++i或--j,在使用j之前,先使j的值+1或-1;后綴運(yùn)算符j++或j-。
在使用i之后,才使i的值加1或減1。
例如,Y的原值等5,則:
語句X=++y, 表示y先加1再運(yùn)算, 得y=y+1.6,x=y=6;語句×=y++, 表示Y先運(yùn)算再加1, 得x=y=5,y=y+1=6。
在《電子制作》2009年第10期,《PIC單片機(jī)C語言程序(1)》的延時函數(shù)中,我們已用過后綴運(yùn)算符i++,大家可以從中體會其用法。
?。?)邏輯運(yùn)算符。
邏輯運(yùn)算符是基本運(yùn)算符中的一種。邏輯運(yùn)算符有:與“&&”、或“||" 、非“!”等3三種。
邏輯運(yùn)算符&&、||為雙目(兩個量)運(yùn)算符,!為單目運(yùn)算符。它們要求的操作對象是非0的整型值和整型0表示的邏輯量。其運(yùn)算規(guī)則如下:
1)若兩個操作對象都為非0整型值(真),則相與的結(jié)果為1(真),否則為0(假);2)若兩個操作對象都為整型值0(假),則相或結(jié)果為0(假),否則為1(真);3)若操作對象為非0整型值(真),求非的結(jié)果為0(假),否則為1(真)。
這里補(bǔ)充一點,算術(shù)運(yùn)算符中的加、減和乘,與大家熟悉的算術(shù)運(yùn)算規(guī)則完全相同,而除運(yùn)算符應(yīng)按上述規(guī)范使用。
C語言的運(yùn)算符內(nèi)容較多,限于篇幅,這里僅概況地加以介紹,希望讀者在學(xué)習(xí)時,根據(jù)PIC單片機(jī)書籍,深入學(xué)習(xí)C語言的運(yùn)算符,并通過編寫C語言程序,掌握每個運(yùn)算符的意義和使用規(guī)則。
3.可預(yù)置起始時刻的時鐘程序
?。?)硬件電路。
利用《電子制作》2010年第1期《PIC單片機(jī)C語言程序(4)》一文中的4位LED數(shù)碼管顯示電路(圖3),可以制成24小時或12小時循環(huán)顯示的時鐘電路。且該時鐘可以由人工預(yù)置起始時刻,即電路插上電源后,可根據(jù)當(dāng)時的實時時刻,如手機(jī)或電視屏上顯示的時刻,進(jìn)行人工校時,之后即可作時鐘用;若不進(jìn)行人工預(yù)置(校時),該電路就自動從00,O0開始,以分為單位起始計時,此時,該電路可作人工守候定時器。該時鐘電路不顯示秒,而是以分鐘開始的顯示。
該電路仍采用PIC16F84A芯片,當(dāng)寫入本文下面給出的程序后,即可作24小時時鐘用。其使用方法如下:
插上電源,LED數(shù)碼管顯示OO.O0,按下圖3中的K1鍵,數(shù)碼管全滅,松開K1鍵,再按下K1鍵,數(shù)碼管從0(分位)開始計數(shù),到達(dá)指定的分鐘顯示時,放開K1鍵,又按K1鍵,時位顯示,到達(dá)指定的時顯示時,放開K1,時鐘即按人工預(yù)置起始時刻工作,操作十分簡單。
注意:如果預(yù)置時間的時位是從00開始而僅有分鐘的有效值時,當(dāng)預(yù)置分鐘指定值后,仍要再按下K1鍵,使時位從00遞增又回到00,時鐘即可工作,否則時鐘電路不會工作。
(2)24小時的時鐘C程序。
根據(jù)圖3編寫的24小時時鐘電路的功能,可繪出相關(guān)流程圖(限于篇幅,這里從略,若需要,可根據(jù)《PlC單片機(jī)C語言程序(4)》一文的圖5,0~9999的計數(shù)流程圖,加上下面的C程序中的注釋,擴(kuò)展繪出),再由流程圖編寫出24小時的時鐘C程序。該程序命名為pic0.5.C,其清單如下:
c語言相關(guān)文章:c語言教程
單片機(jī)相關(guān)文章:單片機(jī)教程
單片機(jī)相關(guān)文章:單片機(jī)視頻教程
單片機(jī)相關(guān)文章:單片機(jī)工作原理
評論