當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]LED即發(fā)光二極管,具有單向?qū)щ娦?。電路圖如下,LED與1K電阻串聯(lián)在5V與0V之間,即可點(diǎn)亮LED,電阻起限流作用。現(xiàn)在我們來(lái)學(xué)習(xí)用單片機(jī)的IO(輸入輸出)引腳來(lái)點(diǎn)亮LED,用PC1引腳代替VCC,PC1輸出高電平點(diǎn)亮LED,輸出

LED即發(fā)光二極管,具有單向?qū)щ娦?。電路圖如下,LED與1K電阻串聯(lián)在5V與0V之間,即可點(diǎn)亮LED,電阻起限流作用?,F(xiàn)在我們來(lái)學(xué)習(xí)用單片機(jī)的IO(輸入輸出)引腳來(lái)點(diǎn)亮LED,用PC1引腳代替VCC,PC1輸出高電平點(diǎn)亮LED,輸出低電平熄滅LED。

IO即INPUT/OUTPUT,引腳作為輸入模式時(shí),可以采集外界高低電平值;作為輸出模式時(shí),引腳可以輸出高低電平。

一、庫(kù)函數(shù)

DAHUME MINI2017.11.2.rar:http://pan.baidu.com/s/1hsvjq1A

解壓DAHUME MINI2017.11.2.rar(2017.11.2指最后修改時(shí)間,不定期更新)到當(dāng)前文件夾。以后編寫(xiě)程序都用這個(gè)工程作為模板。編寫(xiě)一個(gè)新的工程,先解壓此工程,暫不使用實(shí)驗(yàn)2中創(chuàng)建工程的方法。

1、打開(kāi)DAHUME MINI.stw文件;

2、在STVD左側(cè)Workspace窗口Source Files目錄下找到main.c,雙擊打開(kāi),可以看到如下代碼;

#include "main.h"

void setup(void)

{

delay(10);

CLOCK(_16MHz);

pinMode(PC1, OUTPUT);

//_asm("rim");//rim為打開(kāi)總中斷,sim為關(guān)閉總中斷

}

main()

{

setup();

while (1)

{

digitalWrite(PC1, HIGH);

delay(500);

digitalWrite(PC1, LOW);

delay(500);

}

}

代碼第一行,main.c包含了main.h頭文件,這個(gè)頭文件又包含了很多其他頭文件??梢园咽髽?biāo)移動(dòng)到main.h處右擊選擇Open Document “main.h”選項(xiàng),也可以在Include Files目錄下找到main.h,雙擊打開(kāi),來(lái)查看總頭文件里包含了哪些子頭文件。這樣,我們就可以在main.c里調(diào)用包含頭文件里聲明過(guò)的所有的函數(shù)與變量。

函數(shù)與變量在***.c里定義,在源文件對(duì)應(yīng)的***.h里聲明,其它源文件包含了***.h之后,就可以調(diào)用***.h里聲明過(guò)的函數(shù)與變量。

第二段代碼是定義一個(gè)函數(shù)。

void setup(void)

{

******

}

第一個(gè)void是函數(shù)的類(lèi)型,調(diào)用函數(shù)是無(wú)返回值。void空格后的英文是函數(shù)名字,不能與變量名、參數(shù)名和其它函數(shù)名重復(fù)。后面括號(hào)里的void是調(diào)用函數(shù)時(shí),使用的參數(shù)類(lèi)型,void表示無(wú)類(lèi)型,調(diào)用函數(shù)時(shí)不使用參數(shù)。其它類(lèi)型如下表。

變量類(lèi)型

數(shù)值范圍


_Bool

0、1

布爾變量

char、unsigned char

0~255(0~2^8-1)

無(wú)符號(hào)8位(byte)

signed char

-128~127

有符號(hào)8位

unsigned int

0~65535

無(wú)符號(hào)16位(word)

int、signed int

-32768~32767

有符號(hào)16位

unsigned long

0~16777215

無(wú)符號(hào)32位

long、signed long

-8388608~8388607

有符號(hào)32位

例如

void delay(unsigned int time_ms)

{

******

}

調(diào)用這個(gè)函數(shù)時(shí),參數(shù)是無(wú)符號(hào)16位數(shù)值或者變量。以上變量類(lèi)型是C語(yǔ)言關(guān)鍵字,也可作為函數(shù)類(lèi)型和定義變量,例如

char abc(void)

{

char i;

return i;

}

這是一個(gè)返回char類(lèi)型數(shù)值的函數(shù),函數(shù)內(nèi)部定義了一個(gè)char類(lèi)型的局部變量,之后返回了這個(gè)變量。調(diào)用abc函數(shù)時(shí),會(huì)返回i的數(shù)值。

下面我們來(lái)看setup函數(shù)內(nèi)部。第一行是

delay(10);

這是調(diào)用了延時(shí)函數(shù),作用是使單片機(jī)當(dāng)前狀態(tài)保持10ms。在這里加延時(shí)是給所有設(shè)備上電或者復(fù)位后準(zhǔn)備就行。

調(diào)用函數(shù)最后需要加分號(hào)。程序中大括號(hào)、中括號(hào)、小括號(hào)要成對(duì)出現(xiàn)。

CLOCK(_16MHz);

這個(gè)函數(shù)用來(lái)設(shè)置單片機(jī)的主頻率,主頻是16MHz,這個(gè)頻率的概念與用處將在后面實(shí)驗(yàn)作詳細(xì)講解。

pinMode(PC1, OUTPUT);

void pinMode(char pin, char mode);是引腳工作模式設(shè)置函數(shù)。第一個(gè)參數(shù)是引腳名,STM8S105K4單片機(jī)除了PA1、PA2,其他IO引腳都可在此作為參數(shù)。PA1、PA2接上了晶振,用來(lái)給單片機(jī)提供時(shí)鐘源,去掉晶振后還可以做IO引腳使用。第二個(gè)參數(shù)是引腳的工作模式??稍O(shè)置的工作模式如下表

參數(shù)

工作模式

INPUT

輸入模式

INPUT_IT

外部中斷輸入模式

OUTPUT

輸出模式

下面是一行//開(kāi)頭的代碼,雙斜杠的作用是注釋本行的內(nèi)容,在編譯器編譯程序時(shí),不編譯此行內(nèi)容,內(nèi)容中可以出現(xiàn)中文。

注釋多行內(nèi)容的方法如下

現(xiàn)在來(lái)看主函數(shù)main()。單片機(jī)上電和復(fù)位后運(yùn)行主函數(shù)。

首先調(diào)用了setup();函數(shù),接下來(lái)是while函數(shù)。while是C語(yǔ)言關(guān)鍵字,while是循環(huán)語(yǔ)句。小括號(hào)里為執(zhí)行條件,條件為真(成立)或者不等于0時(shí),循環(huán)執(zhí)行后面大括號(hào)里的代碼;條件為假(不成立)或者等于0時(shí),不執(zhí)行后面大括號(hào)里的代碼或者執(zhí)行最后一遍循環(huán)后跳出循環(huán)。所以while (1)是一個(gè)無(wú)限循環(huán)或者叫死循環(huán)。

digitalWrite(PC1, HIGH);

void digitalWrite(char pin, _Bool value);函數(shù)設(shè)置輸出模式的引腳輸出電平值,電平參數(shù)value為HIGH輸出高電平,為L(zhǎng)OW輸出低電平。

編寫(xiě)完程序,點(diǎn)擊Build編譯程序,若下方Build窗口出現(xiàn)紅字(錯(cuò)誤)如下圖,找到#error并雙擊,會(huì)跳轉(zhuǎn)到錯(cuò)誤代碼處。

編譯無(wú)錯(cuò)誤,將下載器與單片機(jī)下載接口正確連接,點(diǎn)擊Debug仿真程序。菜單欄第三行有如下幾個(gè)按鈕,第一個(gè)是Run(開(kāi)始運(yùn)行程序),第四個(gè)是Continue(繼續(xù)運(yùn)行程序),第五個(gè)是Stop Program(停止運(yùn)行程序)。點(diǎn)擊Run按鈕,可以看到程序運(yùn)行效果。

開(kāi)發(fā)板上PC1引腳的排針與LED1陽(yáng)極的排針通過(guò)跳線帽連接。本例程所實(shí)現(xiàn)效果是PC1所接的LED1循環(huán)亮0.5秒滅0.5秒。

退出仿真,程序自動(dòng)運(yùn)行。若無(wú)法運(yùn)行,硬件(按鍵)復(fù)位也無(wú)效,請(qǐng)將單片機(jī)重新上電。

二、寄存器

pinMode(PC1, OUTPUT);

用寄存器寫(xiě)即

PC_DDR_1 = 1;

PC_CR1_1 = 1;

或者

PC_DDR = PC_DDR | 0b00000010;

PC_CR1 = PC_CR1 | 0b00000010;

或者

PC_DDR |= 0b00000010;

PC_CR1 |= 0b00000010;

PC即Port C,C端口,PC1至PC7合稱(chēng)C端口,STM8S105K4有A、B、C、D、E、F端口,每個(gè)端口有不同個(gè)數(shù)的引腳,總共25個(gè)IO引腳。DDR即data direction register,數(shù)據(jù)方向寄存器,用于設(shè)置IO引腳輸入輸出模式。CR1即control register 1,控制寄存器1。IO引腳作為輸出模式,配置模式如下。本實(shí)驗(yàn)PC1引腳作為推挽輸出模式。

IO口配置表

配置模式

DDR位

CR1位

CR2位

配置模式

P-Buffer

輸出

1

0

0

開(kāi)漏輸出

OFF

1

1

0

推挽輸出

ON

1

X

1

輸出(最快速度10MHZ)

CR1位決定

X

X

X

真正的開(kāi)漏輸出(特定引腳)

未采用

0b是二進(jìn)制數(shù)前綴,0x是十六進(jìn)制數(shù)前綴。以上寄存器用二進(jìn)制表示,有8位,最左為最高位(第7位),最右為最低位(第0位)。以PC_DDR寄存器為例,寄存器第x位決定PCx引腳的輸入輸出工作模式。

=用于賦值,將等號(hào)右邊的值賦值給等號(hào)左邊。

|用于二進(jìn)制按位或運(yùn)算。&用于二進(jìn)制按位與運(yùn)算。按位運(yùn)算無(wú)需進(jìn)位。

運(yùn)算表達(dá)式

運(yùn)算結(jié)果


運(yùn)算表達(dá)式

運(yùn)算結(jié)果

0 | 0

0

0 & 0

0

0 | 1

1

0 & 1

0

1 | 0

1

1 & 0

0

1 | 1

1

1 & 1

1

digitalWrite(PC1, LOW);

digitalWrite(PC1, HIGH);

用寄存器寫(xiě)即

PC_ODR_1 = 0;

PC_ODR_1 = 1;

或者

PC_ODR = PC_ODR & 0b11111101;

PC_ODR = PC_ODR | 0b00000010;

或者

PC_ODR &= 0b11111101;

PC_ODR |= 0b00000010;

ODR即output data register,輸出數(shù)據(jù)寄存器,用于設(shè)置輸出引腳輸出電平值。

三、練習(xí)

1、循環(huán)以下步驟:

1)LED1、LED2亮1秒;

2)LED2、LED3亮1秒;

3)LED1、LED2、LED3亮1秒;

4)三個(gè)燈全滅2秒。

提示:使用IO引腳先設(shè)置工作模式;


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉