亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標(biāo)題: 初學(xué)51單片機(jī)之點(diǎn)燈程序詳解 [打印本頁(yè)]

作者: 明日之星8    時(shí)間: 2024-2-15 21:52
標(biāo)題: 初學(xué)51單片機(jī)之點(diǎn)燈程序詳解
  對(duì)于單片機(jī)的學(xué)習(xí),很多人都是從點(diǎn)燈程序開(kāi)始的,這里我找到
了一個(gè)之前做實(shí)驗(yàn)的小板子,MCU是STC8H1K08,P54引腳接了一個(gè)
發(fā)光管經(jīng)過(guò)電阻到地。由于P54引腳要拉高才能點(diǎn)亮發(fā)光管,所以端
口模式要設(shè)置成推挽模式,因此最最最簡(jiǎn)單的C語(yǔ)言點(diǎn)燈程序是下面的
樣子:


  看起來(lái)是不是很簡(jiǎn)單?全部加起來(lái)包括花括號(hào)只有7行代碼,其中第一
行是文件包含偽指令,它把STC公司提供的對(duì)應(yīng)“頭文件”包含到此程序
中來(lái),下面六行是一個(gè)C語(yǔ)言函數(shù)的標(biāo)準(zhǔn)寫(xiě)法,只是名為“main”的函
數(shù)很特殊,它是必須的,不能被別的函數(shù)調(diào)用,所以沒(méi)有返回值,也不
需要參數(shù)。“void”是C語(yǔ)言中“無(wú)類(lèi)型”關(guān)鍵字,“main”左邊的
“void”代表“main”函數(shù)的返回值是“無(wú)類(lèi)型”。“main”右邊的
小括號(hào)中的“void”是它的參數(shù)的類(lèi)型。緊跟著的一對(duì)“花括號(hào)”中間
裝的是“main”函數(shù)的具體內(nèi)容,它里面有三個(gè)分號(hào),C語(yǔ)言語(yǔ)句以分
號(hào)結(jié)尾,前兩句用于設(shè)置P54端口為推挽模式,第三句才是拉高P54引腳
真正實(shí)現(xiàn)點(diǎn)亮發(fā)光管的語(yǔ)句,當(dāng)然也可以在前兩句中把端口設(shè)置為準(zhǔn)雙
向口模式也是可以點(diǎn)亮的,但是沒(méi)有前兩句的話則是不能點(diǎn)亮的。經(jīng)過(guò)編
譯,上圖中可以看到生成了24字節(jié)的代碼,沒(méi)有錯(cuò)誤和警告,下載到實(shí)驗(yàn)
板上實(shí)測(cè)能點(diǎn)亮發(fā)光管。
  再來(lái)看這三句C語(yǔ)言語(yǔ)句,中間都有“等號(hào)”,它可不是我們生活中
的“等于”的意思。“等號(hào)”右邊就是數(shù)字,只是它的寫(xiě)法不常見(jiàn),“等號(hào)”
左邊是STC8H1K08這個(gè)芯片中寄存器的名字,它們都是在“頭文件”中定
義的,大家可以用記事本或其它程序打開(kāi)“頭文件”仔細(xì)研究研究。什么是
寄存器?我們可以很形象的打個(gè)比方,說(shuō)墻上有很多燈開(kāi)關(guān),其中一個(gè)叫
“P54”,我們?cè)诔绦蛑邪褦?shù)字“1”寫(xiě)進(jìn)“P54”這個(gè)開(kāi)關(guān)中,然后燈這亮了,
也可以把數(shù)字“0”寫(xiě)進(jìn)“P54”中,然后燈就滅了,所以這三個(gè)語(yǔ)句都是
把“等號(hào)”右邊的數(shù)字寫(xiě)進(jìn)左邊的寄存器中,從而實(shí)現(xiàn)我們想要的結(jié)果。
  除了頭文件外,單片機(jī)的制造商還會(huì)提供對(duì)應(yīng)單片機(jī)的參考手冊(cè)和數(shù)據(jù)
手冊(cè),STC則很獨(dú)特的把這兩個(gè)文件外加例程都寫(xiě)進(jìn)了一個(gè)PDF文件中,目前
這個(gè)“STC8H技術(shù)參考手冊(cè)”達(dá)到了1640頁(yè)。想要學(xué)好用好這個(gè)單片機(jī)就要
認(rèn)真閱讀此手冊(cè)。
  再來(lái)看一看“0x10”這個(gè)數(shù)字,其前綴“0x”代表它是16進(jìn)制的數(shù)字,
翻譯成常見(jiàn)的十進(jìn)制的寫(xiě)法是“16”這個(gè)數(shù)字,同樣的“0x00”就是十進(jìn)制
的“0”,寫(xiě)成那樣有強(qiáng)調(diào)它是一個(gè)8位數(shù)的意思,因?yàn)椤暗忍?hào)”左邊的
“P5M1”寄存器有8個(gè)位,語(yǔ)句的結(jié)果是要把8個(gè)位都寫(xiě)成“0”,而實(shí)際上
只需要把它的“4位”寫(xiě)成“0”就行了,其它的7個(gè)位最好是“保持原樣”,
但是很遺憾,“等號(hào)”這種直接賦值的方式不能使其左邊寄存器內(nèi)的其它位
“保持原樣”,必須得換一種寫(xiě)法才行,雖然“P54”可以直接賦值而不影響
其它“位”,但為了適應(yīng)其它不支持“位操作”的單片機(jī),我盡量少用這種
“位操作”的寫(xiě)法。同樣的程序我改成了如下的樣子:

#include  "STC8Hxx.h"
#define    BIT4    (0x10)//定義“4位”,注意這句沒(méi)有分號(hào)!!
void  main(void)
{
P5M1  &=~(BIT4);//拉低復(fù)位
P5M0    |=  BIT4;//拉高置位
P5         |=  BIT4;//P54拉高置位
}
 
  其中“BIT4”對(duì)于單片機(jī)來(lái)說(shuō)就是數(shù)字“0x10”,但是我們?cè)谧x這個(gè)程
序的時(shí)候一眼就能看出是要對(duì)寄存器的哪一位做怎樣的處理而不需要特別注明
語(yǔ)句的具體含義。我們要特別的記住“|=”是拉高某位(或某幾位)而其它位保
持原樣,“&=~”則是拉低某位(或某幾位同時(shí)拉低的話要加圓括號(hào)括起來(lái))而
其它位保持原樣。
  當(dāng)然,實(shí)際的程序不可能只是這么簡(jiǎn)單,比如“#define”這樣的位定義就
有8行(或更多),
#define    BIT0    (0x01)
#define    BIT1    (0x02)
#define    BIT2    (0x04)
#define    BIT3    (0x08)
#define    BIT4    (0x10)
#define    BIT5    (0x20)
#define    BIT6    (0x40)
#define    BIT7    (0x80)
  我們可把這些(或更多的內(nèi)容)寫(xiě)進(jìn)我們自己的“Ext.h”這樣一個(gè)頭文件中,
然后包含進(jìn)程序中,當(dāng)然還要加上傳說(shuō)中的“大循環(huán)”:

#include  "STC8Hxx.h"
#include  "Ext.h"
void  main(void)//程序從主函數(shù)開(kāi)始執(zhí)行
{
P5M1  &=~(BIT4);//只運(yùn)行一次的程序
P5M0    |=  BIT4;  //寫(xiě)這這里,
P5         |=  BIT4;  //比如初始化程序
while(1)//大循環(huán)
    {
    ;//要循環(huán)運(yùn)行的語(yǔ)句寫(xiě)這里
    }
}//主程序結(jié)束
//中斷函數(shù)可以寫(xiě)在下面

  今天就聊到這里,不足之處,歡迎指正。




作者: Graves    時(shí)間: 2024-2-23 18:26
這種沒(méi)有while循環(huán)的結(jié)束main后不知MCU處在什么狀態(tài)?運(yùn)行的什么語(yǔ)句呢?
作者: 明日之星8    時(shí)間: 2024-2-24 21:50
qq475878026 發(fā)表于 2024-2-23 18:26
這種沒(méi)有while循環(huán)的結(jié)束main后不知MCU處在什么狀態(tài)?運(yùn)行的什么語(yǔ)句呢?

為幫助初學(xué)習(xí)者理解而省略了大循環(huán)的一個(gè)鮒程而已,
實(shí)際情況是它能編譯通過(guò)并下載到單片機(jī)運(yùn)行,也能成
功點(diǎn)亮發(fā)光管。我所知道的沒(méi)有例外的都有大循環(huán)在主
函數(shù)中使程序“永遠(yuǎn)”運(yùn)行下去。
也許,單片機(jī)的生產(chǎn)廠家能回答這樣的問(wèn)題,但這個(gè)問(wèn)
題的答案對(duì)于我這樣一般的單片機(jī)使用者來(lái)說(shuō)好象沒(méi)有
什么用處。
作者: STC莊偉    時(shí)間: 2024-3-28 09:47
初學(xué)應(yīng)該學(xué)STC8H8K64U啊   有硬件USB,直接仿真啊
作者: kkkkah    時(shí)間: 2024-4-8 19:03
請(qǐng)問(wèn)一下初學(xué)單片機(jī)應(yīng)該如何入手?

作者: ltqinghua    時(shí)間: 2024-4-14 16:28
不錯(cuò)降低了很多
作者: mkbk110    時(shí)間: 2024-4-19 16:10
對(duì)新人非常友好
作者: fan523709338    時(shí)間: 2024-4-26 17:17
如果學(xué)單片機(jī)直接,案列對(duì)著程序?qū)W習(xí)這樣會(huì)不會(huì)學(xué)的快點(diǎn)
作者: dcxx    時(shí)間: 2024-4-27 15:33
學(xué)習(xí)了,感謝分享。
作者: 白水大蝦2016    時(shí)間: 2024-5-7 13:38
fan523709338 發(fā)表于 2024-4-26 17:17
如果學(xué)單片機(jī)直接,案列對(duì)著程序?qū)W習(xí)這樣會(huì)不會(huì)學(xué)的快點(diǎn)

同感,同樣的任務(wù)語(yǔ)句卻也不同,有些迷糊。
作者: liaoxliang    時(shí)間: 2024-5-14 22:51
我能點(diǎn)亮的是單片機(jī)本體,算不算單片機(jī)點(diǎn)燈大師,
作者: kinglucifun    時(shí)間: 2024-5-19 21:54
這是STC最基礎(chǔ)的單片機(jī)么
作者: 2042582764    時(shí)間: 2024-5-31 15:09
之前做的led循環(huán),用的是while(1)循環(huán),led流水燈的實(shí)驗(yàn),你的這篇文章確實(shí)給我很大啟發(fā)
作者: blindman    時(shí)間: 2024-6-4 00:42
對(duì)新人非常友好
作者: hrzwan    時(shí)間: 2024-6-24 11:51
學(xué)習(xí)了,摸索中,
作者: 浪人情歌    時(shí)間: 2024-7-2 10:27
學(xué)習(xí)了,感謝
作者: easymfk    時(shí)間: 2024-9-4 19:41
你們有沒(méi)有買(mǎi)開(kāi)發(fā)板呢?

作者: zyscxr    時(shí)間: 2024-9-22 17:56
萬(wàn)千的程序,目的只有一個(gè),點(diǎn)燈,第一步,哪種最簡(jiǎn)潔,最容易掌握和理解就是最好的
作者: zyscxr    時(shí)間: 2024-9-22 17:57
發(fā)表于 2024-9-4 19:41
你們有沒(méi)有買(mǎi)開(kāi)發(fā)板呢?

我買(mǎi)了,能直觀一些吧
作者: dyc2024    時(shí)間: 2024-9-28 10:57
相當(dāng)?shù)牟诲e(cuò)!
作者: w110223    時(shí)間: 2024-10-24 13:43

初學(xué)應(yīng)該學(xué)STC8H8K64U
作者: JoyHuan    時(shí)間: 2024-10-31 12:32
非常棒的文章,解決了我的問(wèn)題
作者: qaz256    時(shí)間: 2024-11-1 23:10
對(duì)初學(xué)者有一點(diǎn)幫助
作者: Mango22    時(shí)間: 2024-11-23 03:31
Graves 發(fā)表于 2024-2-23 18:26
這種沒(méi)有while循環(huán)的結(jié)束main后不知MCU處在什么狀態(tài)?運(yùn)行的什么語(yǔ)句呢?

同問(wèn)~~~~~~~~~~~
作者: 人人學(xué)會(huì)單片機(jī)    時(shí)間: 2024-12-4 13:59
發(fā)表于 2024-4-8 19:03
請(qǐng)問(wèn)一下初學(xué)單片機(jī)應(yīng)該如何入手?

去B站 直接搜索《人人學(xué)會(huì)單片機(jī)》,直接看這套課程學(xué)習(xí)就行了,PCB已經(jīng)開(kāi)源,你可以自己做WQX開(kāi)發(fā)板。千萬(wàn)不要花冤枉錢(qián)去買(mǎi)那些老掉牙的開(kāi)發(fā)板。
作者: man1234567    時(shí)間: 2025-11-11 16:48
人人學(xué)會(huì)單片機(jī) 發(fā)表于 2024-12-4 13:59
去B站 直接搜索《人人學(xué)會(huì)單片機(jī)》,直接看這套課程學(xué)習(xí)就行了,PCB已經(jīng)開(kāi)源,你可以自己做WQX開(kāi)發(fā)板。千 ...

51是不是都老掉牙了呢
作者: wwb1988    時(shí)間: 2026-5-8 15:36
感謝分享,不錯(cuò)。




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1