熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2022-12-6 17:35
正文摘要:如下程序,在STC8H1K17 -TSSOP-20上運(yùn)行正常,移植到STC8H1K28-LQFP-28上任何按鍵就不能控制端口輸出高低電平了。根據(jù)端口設(shè)置我也重新定義和配置了。查了規(guī)格書(shū)也沒(méi)有查出來(lái)什么問(wèn)題,特此請(qǐng)教各位大師!望不吝賜教 ... |
yzwzfyz 發(fā)表于 2022-12-8 08:55 感謝大師的鼓勵(lì),一定會(huì)好好看規(guī)格書(shū)并學(xué)以致用!謝謝! |
你不菜,只是未找到學(xué)習(xí)的方法。 學(xué)單片機(jī),最重要的是讀通CPU手冊(cè)。 你想啊,你要做A,如果對(duì)A不了解,如果做得精,做得好。 記住永遠(yuǎn)的法則:要控制什么,就必須先了解什么。! 所以,只有讀通手冊(cè),才能精通單片機(jī)。 當(dāng)你了解了CPU之后,寫(xiě)程序的目的,措施就明確了,對(duì)他人的經(jīng)典的程序也就能理解了,寫(xiě)程序也就不難了。 勸君,花個(gè)把月,讀通CPU。不會(huì)的可以與我討論。我就喜歡讀各式各樣的器件手冊(cè)。只要是PCB板上有的東東,手冊(cè)都找來(lái)讀。 |
Y_G_G 發(fā)表于 2022-12-7 17:10 是的,后來(lái)我就嘗試著在其它端口去測(cè)試看看代碼能不能正常允許然后再去找問(wèn)題點(diǎn),結(jié)果發(fā)現(xiàn)是忘記加定時(shí)函數(shù)了。謝謝解答! |
yzwzfyz 發(fā)表于 2022-12-7 15:31 嗯,還是怪自己學(xué)藝不精,太菜了。還沒(méi)有搞懂這其中的原理,后來(lái)我又仔細(xì)的看了一遍原先的STC8H1K17的代碼已經(jīng)規(guī)格書(shū),發(fā)現(xiàn)既然把定時(shí)函數(shù)忘記了。謝謝解答! |
我經(jīng)常犯這種錯(cuò)誤:一段代碼運(yùn)行多次之后,只要結(jié)果是符合我的要求了,我就認(rèn)為我這段代碼沒(méi)有問(wèn)題了 但是,當(dāng)我把這段代碼用到別的地方了,才發(fā)現(xiàn):我之前的代碼根本是錯(cuò)誤的,能正常運(yùn)行可能是誤打誤撞的 你這代碼本就不多,自己用排除法就行 1:把按鍵什么的代碼都不要了,只要幾行代碼,端口初始化,再把一個(gè)端口拉高,燒錄看一下,問(wèn)題就能找到了 如果端口沒(méi)有高電平,那么,不是端口配置不正確就是硬件的問(wèn)題 如果端口一切正常,那就去檢查一下按鍵部分的代碼 |
再讀一讀IO的手冊(cè)部分。對(duì)照一下,程序是如何處理IO口的。 |
mcuhui 發(fā)表于 2022-12-7 11:04 給你寫(xiě)一個(gè)適合STC8系列的長(zhǎng)短按程序示例,基本通用于STC所有1T單片機(jī)。
|
wulin 發(fā)表于 2022-12-7 10:54 我也發(fā)現(xiàn)了這個(gè)問(wèn)題,把void去掉就不會(huì)有編譯警告。但是還是不能控制高低電平輸出。知道自己幾斤幾兩的水平,但是沒(méi)辦法就這點(diǎn)能力,大師見(jiàn)笑啦 |
mcuhui 發(fā)表于 2022-12-7 09:08 沙發(fā)已經(jīng)指出錯(cuò)誤,而且這個(gè)錯(cuò)誤會(huì)導(dǎo)致按鍵程序不能正常運(yùn)行。去掉void關(guān)鍵詞試試。 while(1) { key_pos(); } 樓主這段原代碼寫(xiě)的實(shí)在有點(diǎn)...... |
188610329 發(fā)表于 2022-12-7 08:59 還請(qǐng)大師賜教,就是菜鳥(niǎo)一個(gè)不懂啊。看著HEX文件是有生成的。所以不知道為何會(huì)有這個(gè)警告,也不知這個(gè)警告該如何解決? |
張?zhí)鞄?發(fā)表于 2022-12-7 08:52 大師,改過(guò)試過(guò)呢,P2M0 = 0xb8;這就是P2.0口配置為雙向IO口 |
mcuhui 發(fā)表于 2022-12-7 08:08 你理解一下這個(gè)警告的意思,想一想,出了這個(gè)警告之后,編譯通過(guò)沒(méi)通過(guò),有區(qū)別么? |
P2M0 = 0xb8; //修改P27;P20端口為推挽輸出 把SW--P2.0改為弱上拉準(zhǔn)雙向口。! |
我懷疑沒(méi)配置好, 你貼出電路圖,比較相對(duì)應(yīng)的IO管腳上,功能是否一樣? 畢竟一個(gè)20PIN ,一個(gè)28PIN |
coody_sz 發(fā)表于 2022-12-6 21:58 只是有警告但是還是能通過(guò)的。 |
while(1) { void key_pos(); } 這樣寫(xiě)編譯能通過(guò)嗎? |
Powered by 單片機(jī)教程網(wǎng)