输出毫秒_自学单片机第十三篇上:单点输出
關注一下,更多精彩等著你!
打開之前的工程,當然新建也可以,具體步驟看之前的文章就行。因為是學習,所以也用不著總是新建工程,起名起一大堆,接下來,除非要用兩個執行文件,只要是單獨的程序,我們就用這個工程就好了。
打開工程,上回是測試了軟件和硬件,都沒有問題。我們不用開發板,自學從簡單入手,不用考慮譯碼器和功率放大。對于已經入門的,可能有點簡單,但我想對于初來乍到的伙伴,還是慢慢來,別急。技術這碗飯,不論是不是為了掙錢,都要穩扎穩打。越快越難學會。
之前的程序頭文件留著。如果想明白,為什么非要用頭文件,不寫行不行?我會再寫一篇文章,講一下原因。包括程序中的一些關鍵字。
這回咱來試一個控制單個IO口的操作。我們僅操作一個IO口,其它的不變。這里選擇P1.0這個口。
程序還是我們首次測試的程序,之前運行過一次,這回我們對它作些改動,讓它進行自動變換。
這就要用到一個延時函數了。咱說的延時不是定時器,就是讓程序作一定時間的等待。
我們先說下芯片是如何運行的。晶振是芯片的心跳,由于芯片做出來后,工藝原因,程序運行的最小時間是12個心跳,就是一個機器周期。相當于精確振12下,程序動一下,而一個程序語句,要想完成運算,就平均要4個機器周期,當然也有一個周期的,咱不細看。研究基礎結構留給以后學的上路了再說。
1/(12Mhz/12)=1/1M=10∧-6秒。
1秒=10∧3毫秒=10∧6微秒
由上推算看出,1個機器周期就是1微秒,所以完成一個運算是4微秒。我們假設要延時0.5秒,就要有:
0.5*10∧6/4=12500。
也就是大約1萬步,我們寫個1萬,讓它一直減到0,就是1萬步。減的過程就相當于延時了,因為程序光在那兒算數了,啥也干不了,算完才能干其它的。這個算的過程就是延時的過程。
原理有了,接下來寫程序,首先我們測試時的程序不動,僅需要添加延時部分就可以了。
延時程序代碼如下,寫完后記得編譯一下,如果是語法錯誤,程序會幫你找到。我們要做到0錯誤,0警告。這樣程序輸出時才不會出現不必要的問題。減少自己調試的時間。
然后,由于是延時,我們可以通過keil的仿真分步運行,查看一下我們運行的時間是否合適。首先單擊第三行那個小錘子一樣的圖標,進入設置,然后點開仿真選項,我們把晶振頻率修改就可以了,改為11.05692.
修改完成后,我們單擊右側的紅色的debug按鍵,進入調試模式。
進入后,在LED程序前,單擊左鍵,設置斷點。出現小紅點就是設置成功。
接著先單擊復位按鍵,然后再單擊運行按鍵,單擊一下就可以了,它會運行到第一個斷點停下等待。
出現的兩個小三角就是說明程序此時等待在這里,左側的列表顯示的是內部數據,我們看下倒數第二行sec,這是時間。程序從開始到第一個語句的輸出,用時0.00048秒。我們再次單擊運行按鍵,觀察時間變化。
此時運行到了第二個語句,我們查看時間從0.00048變成了0.087,說明一個延時用了0.087秒,這個跟我們假想的0.5秒有點遠啊,我們簡單計算下頻率1/0.087=11赫茲,先不管,我們用軟件仿真一下試試。仿真發現,閃爍一下就沒了,我們用示波器看下什么情況。
這個豎著一格是100毫秒,也就是0.1秒,我們從上圖中可以看出,每兩個黃色的豎線之間的間隔大致就是一格如果細看,0.8格也是差不多的。就相當于0.08秒。跟我們的程序仿真基本一致,說明我們的延時函數延時時間不夠,為什么會出現這種情況?
因為程序在計算加減法的時間是速度比較快的,也就是說,他算加減根本不用四個機器周期。我們不管幾個周期了。現在是0.08秒,那么,需要0.5秒,就是說需要大致六倍,程序中需要60000。咱們更改后再次仿真試下。
需記得,更改程序需要退出仿真,還是單擊紅色的debug就可退出了,更改后,需要先編譯,再進入debug,不然程序雖然更改了,但是可執行文件還是原來的舊的,就運行不出更改后的效果。
這次就是0.5秒了吧。
通過軟件仿真也說明了情況
示波器上也是5格一個脈沖,基本可以了。但是此時我們發現,燈并沒有預想中的亮起,依然一閃而逝。我們看下示波器,發現,高電位也是一根根 的細線,幾乎沒有時間,什么情況呢?這就是很多同學學習初期經常會發生的,在程序中,我們的賦值是在最前邊,單片機是順序運行的,當他運行完第一個延時語句時,i已經從60000減為0了,這時再運行下一個延時語句時,就會直接判斷等于0,跳出函數。所以就是一閃而逝。或者看不到發光。如何解決?
我們需要增加一個變量或者使用另一種循環體。簡單的先增加一個變量j,讓他也等于60000。再仿真一下。
仿真后,波形就變成了0.5秒為5V,0.5秒為0V,這是可以看到,LED0.5秒亮,0.5秒滅。跟我們預期的一致了。
至此,程序調整結束了如果想查看視頻的可以后臺回復電氣,關注后在單片機選項中點擊視頻觀看。
還有硬件仿真運行,大家自己可以動手試試。問題出現不要氣餒,因為我們不是什么都會,出現錯誤是肯定的,更改的過程才是學習,如果一帆風順,那最終只會是一知半解。
如果有不懂或者問題可以留言或私信。
更多多內容,歡迎關注百家號:小亮談電氣。微信公眾號:電氣學苑。
總結
以上是生活随笔為你收集整理的输出毫秒_自学单片机第十三篇上:单点输出的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样安装python在桌面_在Windo
- 下一篇: python pdf 图片_第一节:py