開(kāi)發(fā)環(huán)境搭建指南:Keil C51與STC-ISP配置詳解)
1. 從零開(kāi)始的51單片機(jī)之旅為什么環(huán)境搭建是第一個(gè)“坑”如果你剛拿到一塊51單片機(jī)開(kāi)發(fā)板看著一堆杜邦線和閃爍的LED燈第一反應(yīng)是不是立刻想寫(xiě)個(gè)“Hello World”讓燈閃起來(lái)但現(xiàn)實(shí)往往是你興沖沖地打開(kāi)電腦卻發(fā)現(xiàn)連個(gè)寫(xiě)程序、下載程序的地方都沒(méi)有。這就是我們常說(shuō)的“萬(wàn)事開(kāi)頭難”而玩轉(zhuǎn)51單片機(jī)的第一步就是把這個(gè)“難”給踏平——搭建一個(gè)穩(wěn)定、可用的開(kāi)發(fā)環(huán)境。這不僅僅是安裝幾個(gè)軟件那么簡(jiǎn)單它決定了你后續(xù)所有實(shí)驗(yàn)的效率和心情。一個(gè)配置不當(dāng)?shù)沫h(huán)境可能會(huì)讓你在“程序明明沒(méi)錯(cuò)為什么下載不進(jìn)去”、“頭文件怎么又報(bào)錯(cuò)了”這類(lèi)問(wèn)題上浪費(fèi)一整天。今天要聊的環(huán)境搭建核心就是兩件套Keil C51和STC-ISP。Keil是你的“代碼編輯器編譯器”負(fù)責(zé)把你看得懂的C語(yǔ)言變成單片機(jī)看得懂的機(jī)器碼HEX文件。而STC-ISP則是你的“快遞員”負(fù)責(zé)把這個(gè)HEX文件“燒錄”到單片機(jī)的Flash存儲(chǔ)器里。聽(tīng)起來(lái)簡(jiǎn)單但新手最容易在這里栽跟頭比如Keil沒(méi)破解導(dǎo)致代碼限制、驅(qū)動(dòng)沒(méi)裝好電腦不認(rèn)識(shí)單片機(jī)、STC-ISP型號(hào)選錯(cuò)下載失敗等等。網(wǎng)上教程很多但往往只告訴你怎么點(diǎn)“下一步”卻不告訴你“為什么這一步很重要”以及“點(diǎn)錯(cuò)了會(huì)怎樣”。這篇內(nèi)容我就結(jié)合自己帶學(xué)生和實(shí)際開(kāi)發(fā)中遇到的各種“坑”把這兩個(gè)工具的安裝、配置、關(guān)聯(lián)以及背后的原理掰開(kāi)揉碎講清楚目標(biāo)是讓你一次配置成功少走彎路。2. Keil C51的安裝與破解不僅僅是點(diǎn)擊下一步Keil現(xiàn)在屬于Arm公司是單片機(jī)開(kāi)發(fā)領(lǐng)域的“老炮兒”了對(duì)于51內(nèi)核的單片機(jī)我們需要專(zhuān)門(mén)的Keil C51版本而不是用于ARM的Keil MDK。很多新手在這里第一步就下錯(cuò)了軟件。2.1 獲取與安裝注意版本與路徑首先建議從STC官網(wǎng)www.stcai.com的“下載”欄目獲取Keil C51的安裝包。STC作為國(guó)內(nèi)主流的51單片機(jī)廠商其提供的版本通常與自家芯片兼容性最好也常會(huì)附帶芯片型號(hào)數(shù)據(jù)庫(kù)。當(dāng)然你也可以從Keil官網(wǎng)或其它可靠渠道獲取。安裝過(guò)程有幾個(gè)關(guān)鍵點(diǎn)以管理員身份運(yùn)行安裝程序這可以避免一些因權(quán)限不足導(dǎo)致的注冊(cè)表寫(xiě)入失敗問(wèn)題。安裝路徑請(qǐng)勿包含中文或空格這是軟件開(kāi)發(fā)領(lǐng)域的一個(gè)黃金法則。像C:\Program Files\Keil_v5這樣的純英文路徑是最穩(wěn)妥的。有些奇怪的編譯錯(cuò)誤或插件加載失敗根源就是路徑里有中文。關(guān)于版本選擇對(duì)于初學(xué)者不必追求最新版。較新的版本如Keil uVision5界面更友好但核心的C51編譯器變化不大。選擇一個(gè)穩(wěn)定版本如V9.00以上即可。安裝時(shí)組件選擇默認(rèn)的全選就行特別是“C51 Compiler”和“uVision IDE”必須勾選。安裝完成后桌面會(huì)出現(xiàn)“Keil uVision5”的圖標(biāo)。第一次打開(kāi)軟件會(huì)提示你選擇“Pack Installer”或進(jìn)入IDE直接關(guān)掉那個(gè)Pack安裝界面那是給ARM芯片裝支持包的我們暫時(shí)用不到。2.2 軟件授權(quán)管理破解的原理與正確操作未注冊(cè)的Keil C51有代碼大小限制通常為2KB而稍微復(fù)雜點(diǎn)的程序很容易超過(guò)這個(gè)限制導(dǎo)致編譯失敗。因此我們需要進(jìn)行“破解”更準(zhǔn)確地說(shuō)是添加一個(gè)合法的許可證License。這里需要用到所謂的“注冊(cè)機(jī)”Keygen。它的工作原理是模擬Keil的授權(quán)驗(yàn)證機(jī)制生成一個(gè)對(duì)應(yīng)你電腦CIDComputer ID的許可證密鑰。操作步驟如下以管理員身份再次運(yùn)行Keil uVision5。點(diǎn)擊菜單欄File-License Management會(huì)彈出許可證管理窗口。復(fù)制右上角的CID碼。關(guān)閉Keil軟件這一步很重要確保注冊(cè)機(jī)工作時(shí)Keil進(jìn)程完全退出。以管理員身份運(yùn)行注冊(cè)機(jī)程序。在注冊(cè)機(jī)界面將CID粘貼到相應(yīng)位置Target選擇C51然后點(diǎn)擊Generate生成許可證密鑰。將生成的密鑰復(fù)制重新打開(kāi)Keil再次進(jìn)入License Management將密鑰粘貼到New License ID Code (LIC)輸入框中點(diǎn)擊Add LIC。如果成功下方License區(qū)域會(huì)顯示Supported和到期時(shí)間通常會(huì)顯示到2032年之類(lèi)的未來(lái)日期。注意注冊(cè)機(jī)可能被Windows Defender或殺毒軟件報(bào)毒并隔離。這是因?yàn)槠湫袨槟J筋?lèi)似于木馬修改系統(tǒng)授權(quán)信息。在操作前可以臨時(shí)關(guān)閉實(shí)時(shí)防護(hù)操作完成后再打開(kāi)或者將注冊(cè)機(jī)文件加入殺毒軟件的白名單。務(wù)必從可信渠道獲取注冊(cè)機(jī)文件。2.3 基礎(chǔ)配置與第一個(gè)工程框架破解成功后我們進(jìn)行必要的基礎(chǔ)配置并建立第一個(gè)工程模板以后的新項(xiàng)目都可以在此基礎(chǔ)上復(fù)制修改能極大提高效率。新建工程Project-New uVision Project...選擇一個(gè)純英文路徑的文件夾為工程起名例如test。選擇芯片型號(hào)這會(huì)彈出設(shè)備選擇窗口。STC的51單片機(jī)大多基于Intel 8051內(nèi)核但Keil自帶數(shù)據(jù)庫(kù)里可能沒(méi)有STC的型號(hào)。這里有個(gè)常見(jiàn)坑點(diǎn)如果你找不到你的具體型號(hào)如STC89C52RC可以選擇一個(gè)通用的AT89C51或AT89C52作為替代。因?yàn)閮?nèi)核相同只是內(nèi)存大小、外設(shè)地址等有細(xì)微差別這些差別我們可以在代碼中通過(guò)頭文件來(lái)指定。當(dāng)然更推薦的做法是去STC官網(wǎng)下載其芯片型號(hào)數(shù)據(jù)庫(kù).PACK文件雙擊安裝后Keil里就能直接選擇STC的芯片了。添加啟動(dòng)文件在接下來(lái)彈出的“Copy Standard 8051 Startup Code to Project Folder?”對(duì)話框中選擇“是”。這個(gè)STARTUP.A51文件非常重要它包含了單片機(jī)復(fù)位后在運(yùn)行你的main函數(shù)之前需要做的一些初始化工作比如清理內(nèi)存數(shù)據(jù)段。初學(xué)者可以不用深究其內(nèi)容但必須包含在工程里。新建源文件在左側(cè)Project窗口的Source Group 1上右鍵選擇Add New Item to Group Source Group 1...選擇C File (.c)命名為main.c。編寫(xiě)測(cè)試代碼在main.c中輸入一段最簡(jiǎn)單的代碼#include REGX52.H // 包含STC89C52的頭文件如果你選的是AT89C51這里可能是AT89X51.H void main() { while(1) { // 一個(gè)空的循環(huán)程序在這里持續(xù)運(yùn)行 } }配置輸出HEX文件這是連接Keil和STC-ISP的關(guān)鍵一步。點(diǎn)擊工具欄的魔法棒圖標(biāo)Options for Target在彈出的窗口中在Target標(biāo)簽頁(yè)可以確認(rèn)芯片型號(hào)和晶振頻率默認(rèn)11.0592MHz常用且與串口波特率計(jì)算兼容性好。在Output標(biāo)簽頁(yè)勾選Create HEX File。這樣編譯后才會(huì)生成可供下載的.hex文件。在C51標(biāo)簽頁(yè)初學(xué)者可以暫時(shí)不管優(yōu)化等級(jí)保持默認(rèn)。編譯點(diǎn)擊工具欄的Build或按F7按鈕。如果下方Build Output窗口顯示test - 0 Error(s), 0 Warning(s)并且生成了test.hex文件那么Keil環(huán)境就算基本搭建成功了。3. STC-ISP下載工具連接電腦與單片機(jī)的橋梁STC-ISP是STC官方提供的免費(fèi)下載編程軟件它通過(guò)電腦的串口通常是USB轉(zhuǎn)串口與單片機(jī)通信完成程序的燒錄。它的安裝相對(duì)簡(jiǎn)單但配置和使用上的細(xì)節(jié)決定了下載的成功率。3.1 驅(qū)動(dòng)安裝讓電腦認(rèn)識(shí)你的開(kāi)發(fā)板現(xiàn)在的51單片機(jī)開(kāi)發(fā)板絕大多數(shù)都使用一顆CH340或CP2102這類(lèi)USB轉(zhuǎn)串口芯片來(lái)在電腦上虛擬出一個(gè)COM口串行通信端口。當(dāng)你用USB線連接開(kāi)發(fā)板到電腦時(shí)第一步就是安裝這個(gè)芯片的驅(qū)動(dòng)程序?,F(xiàn)象插上板子電腦提示“正在安裝設(shè)備驅(qū)動(dòng)”最后可能成功也可能失敗提示“未知設(shè)備”。解決方案去芯片廠商官網(wǎng)下載最穩(wěn)定的驅(qū)動(dòng)。對(duì)于CH340可以去南京沁恒官網(wǎng)CP2102可以去Silicon Labs官網(wǎng)。STC-ISP的安裝包通常也自帶常用驅(qū)動(dòng)。在設(shè)備管理器右鍵“此電腦”-“管理”-“設(shè)備管理器”中查看。如果驅(qū)動(dòng)安裝成功會(huì)在“端口COM和LPT”下看到類(lèi)似“USB-SERIAL CH340 (COM3)”的設(shè)備記住這個(gè)COM3數(shù)字可能不同這就是你的單片機(jī)在電腦上的“門(mén)牌號(hào)”。如果顯示黃色嘆號(hào)右鍵選擇“更新驅(qū)動(dòng)程序軟件”手動(dòng)指向你下載的驅(qū)動(dòng)文件夾。特別注意Win10/Win11系統(tǒng)有時(shí)會(huì)自動(dòng)安裝一個(gè)微軟簽名但版本較舊的驅(qū)動(dòng)可能導(dǎo)致不穩(wěn)定。如果遇到下載時(shí)斷時(shí)續(xù)可以嘗試卸載設(shè)備并勾選“刪除此設(shè)備的驅(qū)動(dòng)程序軟件”然后重新安裝官網(wǎng)驅(qū)動(dòng)。3.2 STC-ISP界面詳解與關(guān)鍵配置打開(kāi)STC-ISP軟件界面看似復(fù)雜但我們需要關(guān)注的只有幾個(gè)核心區(qū)域。單片機(jī)型號(hào)選擇在軟件右側(cè)準(zhǔn)確選擇你開(kāi)發(fā)板上的單片機(jī)型號(hào)例如STC89C52RC。選錯(cuò)型號(hào)會(huì)導(dǎo)致下載失敗甚至可能損壞芯片雖然概率極低。串口號(hào)選擇選擇你在設(shè)備管理器中看到的那個(gè)COM口如COM3。打開(kāi)程序文件點(diǎn)擊“打開(kāi)程序文件”按鈕找到你Keil工程目錄下生成的.hex文件。下載/編程這是最核心的按鈕。但點(diǎn)擊之前通常需要先給單片機(jī)上電。3.3 “冷啟動(dòng)”下載流程與故障排查STC單片機(jī)的程序下載采用了一種叫做“冷啟動(dòng)”或“ISP下載”的方式。其原理是單片機(jī)內(nèi)部有一小塊出廠時(shí)就寫(xiě)好的、不可更改的引導(dǎo)程序Bootloader。當(dāng)單片機(jī)斷電后重新上電的瞬間這個(gè)引導(dǎo)程序會(huì)先運(yùn)行它會(huì)短暫地幾毫秒到幾百毫秒檢測(cè)串口是否有合法的下載命令。如果有就進(jìn)入下載模式如果沒(méi)有就跳轉(zhuǎn)到用戶程序即你之前燒錄的程序開(kāi)始執(zhí)行。因此標(biāo)準(zhǔn)的下載操作流程是STC-ISP軟件配置好型號(hào)、COM口加載好HEX文件。點(diǎn)擊軟件上的“下載/編程”按鈕。此時(shí)軟件會(huì)提示“正在檢測(cè)目標(biāo)單片機(jī)...”并等待。給單片機(jī)開(kāi)發(fā)板斷電然后重新上電。這個(gè)“重新上電”的動(dòng)作就是觸發(fā)內(nèi)部引導(dǎo)程序工作的關(guān)鍵。如果一切正常軟件會(huì)立即檢測(cè)到單片機(jī)并開(kāi)始擦除、編程、校驗(yàn)最后顯示“操作成功”。常見(jiàn)下載失敗原因排查提示“正在檢測(cè)目標(biāo)單片機(jī)...”然后超時(shí)檢查1串口和驅(qū)動(dòng)。COM口選對(duì)了嗎驅(qū)動(dòng)安裝好了嗎可以換一個(gè)USB口試試。檢查2冷啟動(dòng)操作。你是否在點(diǎn)擊“下載”后才給單片機(jī)上電順序不能錯(cuò)。有些開(kāi)發(fā)板設(shè)計(jì)了“自動(dòng)冷啟動(dòng)”電路但大部分需要手動(dòng)開(kāi)關(guān)電源。檢查3串口線連接。確保開(kāi)發(fā)板的串口P3.0/RXD, P3.1/TXD沒(méi)有接其他設(shè)備且USB線是數(shù)據(jù)線而非僅充電線。檢查4單片機(jī)型號(hào)。型號(hào)是否選錯(cuò)特別是STC89C52和STC89C52RC是同一個(gè)東西但STC89C51和52的內(nèi)存大小不同。提示“檢查ISP模式失敗”或“握手失敗”這通常出現(xiàn)在一些較新的STC單片機(jī)如STC8系列或特定操作中。除了上述檢查外可以嘗試降低下載時(shí)的最高波特率在STC-ISP的“掃描波特率”或相關(guān)設(shè)置里調(diào)低。確保單片機(jī)供電充足USB口供電不足時(shí)尤其容易發(fā)生。檢查開(kāi)發(fā)板上是否有復(fù)位電路復(fù)位引腳RST是否被意外拉高或拉低。提示“編程失敗”可能是芯片F(xiàn)lash損壞罕見(jiàn)或者HEX文件本身有問(wèn)題?;氐終eil重新編譯一次確保編譯0錯(cuò)誤0警告。4. 第一個(gè)實(shí)戰(zhàn)項(xiàng)目讓LED燈閃爍起來(lái)環(huán)境搭好了工具會(huì)用了現(xiàn)在我們來(lái)完成一個(gè)真正的、看得見(jiàn)摸得著的項(xiàng)目——點(diǎn)亮并閃爍一個(gè)LED燈。這個(gè)項(xiàng)目雖小但涵蓋了單片機(jī)開(kāi)發(fā)的完整閉環(huán)硬件連接、軟件編寫(xiě)、編譯下載、現(xiàn)象觀察。4.1 硬件原理與連接大多數(shù)51單片機(jī)開(kāi)發(fā)板都已經(jīng)集成了LED電路。我們以最常見(jiàn)的連接方式為例LED的陽(yáng)極長(zhǎng)腳通過(guò)一個(gè)限流電阻通常220Ω-1kΩ接到電源VCC5V陰極短腳接到單片機(jī)的一個(gè)IO口例如P1.0。這種接法稱(chēng)為“共陽(yáng)極”接法。當(dāng)單片機(jī)對(duì)應(yīng)的IO口P1.0輸出低電平0V時(shí)LED兩端形成電壓差電流流過(guò)LED點(diǎn)亮。當(dāng)IO口輸出高電平5V時(shí)LED兩端電壓相等沒(méi)有電流LED熄滅。所以我們的硬件任務(wù)就是找到開(kāi)發(fā)板上連接著LED的IO口。查看開(kāi)發(fā)板原理圖或說(shuō)明書(shū)確認(rèn)LED1連接的是哪個(gè)引腳比如P1.0。4.2 軟件編程延時(shí)與IO控制在Keil中打開(kāi)我們之前建立的工程修改main.c文件#include REGX52.H #include INTRINS.H // 用于調(diào)用_nop_()空操作指令 /** * brief 軟件延時(shí)函數(shù)粗略延時(shí)不精確 * param ms: 需要延時(shí)的毫秒數(shù)粗略值 * retval 無(wú) */ void Delayms(unsigned int ms) { unsigned int i, j; // 這個(gè)雙重循環(huán)的數(shù)值需要根據(jù)實(shí)際單片機(jī)主頻調(diào)整 // 此處針對(duì)11.0592MHz晶振進(jìn)行粗略估算 for(ims; i0; i--) for(j110; j0; j--); } void main() { while(1) { P1_0 0; // 將P1.0引腳置為低電平LED點(diǎn)亮 Delayms(500); // 延時(shí)約500毫秒 P1_0 1; // 將P1.0引腳置為高電平LED熄滅 Delayms(500); // 延時(shí)約500毫秒 } }代碼解析與注意事項(xiàng)P1_0這是Keil C51編譯器為P1口第0位定義的一個(gè)位變量sbit直接對(duì)其賦值就能控制該引腳的輸出電平。你也可以通過(guò)操作整個(gè)端口P1 0xFE;二進(jìn)制11111110來(lái)達(dá)到同樣效果但位操作更直觀。Delayms函數(shù)這是一個(gè)非常簡(jiǎn)陋的軟件延時(shí)。原理是讓CPU執(zhí)行大量無(wú)意義的空循環(huán)來(lái)消耗時(shí)間。它的延時(shí)時(shí)間不精確且會(huì)受編譯器優(yōu)化等級(jí)影響。但對(duì)于LED閃爍這種對(duì)時(shí)間精度要求不高的場(chǎng)景完全夠用。在后續(xù)學(xué)習(xí)中我們會(huì)用定時(shí)器來(lái)實(shí)現(xiàn)精確延時(shí)。頭文件REGX52.H定義了STC89C52系列單片機(jī)的所有特殊功能寄存器SFR地址。INTRINS.H包含了一些內(nèi)部函數(shù)雖然本例未直接使用_nop_()但包含它是一個(gè)好習(xí)慣。4.3 編譯、下載與驗(yàn)證在Keil中點(diǎn)擊Build(F7)確保0錯(cuò)誤0警告并生成了HEX文件。打開(kāi)STC-ISP選擇正確型號(hào)和COM口加載剛生成的HEX文件。點(diǎn)擊“下載/編程”然后給開(kāi)發(fā)板重新上電。等待下載完成。如果成功你應(yīng)該能看到開(kāi)發(fā)板上的一個(gè)LED燈以大約1秒的周期亮500ms滅500ms在閃爍。恭喜你至此你已經(jīng)完成了從環(huán)境搭建到第一個(gè)可運(yùn)行程序的完整流程。這個(gè)閃爍的LED就是你與單片機(jī)世界對(duì)話的第一個(gè)“Hello World”。5. 環(huán)境搭建后的進(jìn)階準(zhǔn)備與避坑指南成功點(diǎn)亮LED只是開(kāi)始。一個(gè)穩(wěn)健的開(kāi)發(fā)環(huán)境還需要一些額外的配置和知識(shí)儲(chǔ)備來(lái)應(yīng)對(duì)未來(lái)更復(fù)雜的項(xiàng)目。5.1 Keil工程模板化與頭文件管理每次新建工程都重復(fù)配置很麻煩。我們可以創(chuàng)建一個(gè)“工程模板”文件夾里面包含配置好輸出HEX選項(xiàng)的.uvproj工程文件。一個(gè)寫(xiě)好的STARTUP.A51。一個(gè)包含基本框架的main.c。一個(gè)Library文件夾用于存放未來(lái)自己編寫(xiě)的驅(qū)動(dòng)文件如LED.cDelay.c等和對(duì)應(yīng)的頭文件.h。在Keil工程選項(xiàng)中將Library文件夾的路徑添加到C51標(biāo)簽頁(yè)下的Include Paths中。這樣你在任何源文件中都可以用#include “LED.h”來(lái)調(diào)用自己的庫(kù)了避免出現(xiàn)“檢測(cè)到include錯(cuò)誤請(qǐng)更新includepath”這類(lèi)問(wèn)題。5.2 STC-ISP的附加功能串口助手與范例程序STC-ISP不僅僅是個(gè)下載器它內(nèi)置的“串口助手”功能非常實(shí)用。當(dāng)你的程序里使用了單片機(jī)的串口UART進(jìn)行通信比如打印調(diào)試信息到電腦就可以用這個(gè)工具來(lái)接收和發(fā)送數(shù)據(jù)。配置好相同的波特率、數(shù)據(jù)位、停止位等參數(shù)就能實(shí)現(xiàn)單片機(jī)與電腦的數(shù)據(jù)交互是調(diào)試程序的利器。此外STC-ISP軟件里通常還包含了大量“范例程序”。對(duì)于初學(xué)者直接打開(kāi)、編譯、下載這些例子是快速學(xué)習(xí)單片機(jī)各種功能如定時(shí)器、中斷、ADC、PWM的絕佳途徑。比單純看文檔要直觀得多。5.3 常見(jiàn)編譯與下載錯(cuò)誤深度排查Keil編譯錯(cuò)誤 “Target not created”通常是因?yàn)榫幾g過(guò)程中有錯(cuò)誤。請(qǐng)查看下方的Build Output窗口里面有具體的錯(cuò)誤信息。常見(jiàn)的有語(yǔ)法錯(cuò)誤、未定義的標(biāo)識(shí)符等。Keil警告 “UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS”表示你定義了一個(gè)函數(shù)但從未調(diào)用它。編譯器在優(yōu)化時(shí)會(huì)忽略它。這通常不是錯(cuò)誤但如果你確信函數(shù)應(yīng)該被調(diào)用那就檢查一下函數(shù)名拼寫(xiě)或調(diào)用邏輯。STC-ISP下載時(shí)單片機(jī)型號(hào)列表為空說(shuō)明Keil的芯片數(shù)據(jù)庫(kù)沒(méi)有正確識(shí)別STC-ISP的路徑或者STC-ISP版本太舊。去STC官網(wǎng)下載最新版的STC-ISP并確保在Keil的安裝目錄下安裝了STC的芯片支持包。程序下載成功但LED不閃或行為異常檢查硬件LED是否接反限流電阻是否過(guò)大或過(guò)小用萬(wàn)用表測(cè)量一下IO口在程序運(yùn)行時(shí)的電壓變化。檢查軟件延時(shí)函數(shù)的時(shí)間常數(shù)是否太大或太小主頻設(shè)置是否正確如果開(kāi)發(fā)板用的是12MHz晶振但你的延時(shí)函數(shù)是按11.0592MHz寫(xiě)的那實(shí)際延時(shí)時(shí)間會(huì)有偏差。使用調(diào)試方法可以嘗試寫(xiě)一個(gè)更簡(jiǎn)單的程序比如P1 0x00;全部點(diǎn)亮和P1 0xFF;全部熄滅來(lái)排除是IO口控制問(wèn)題還是延時(shí)邏輯問(wèn)題。環(huán)境搭建就像蓋房子的地基看起來(lái)都是水泥沙子不起眼但決定了上層建筑是否穩(wěn)固?;c(diǎn)時(shí)間把Keil和STC-ISP摸透理解每一個(gè)配置項(xiàng)的意義掌握下載失敗的排查方法會(huì)在后續(xù)的學(xué)習(xí)中為你節(jié)省大量糾結(jié)和沮喪的時(shí)間。當(dāng)環(huán)境不再是障礙你才能把全部精力投入到單片機(jī)編程本身的樂(lè)趣和挑戰(zhàn)中去。