單片機代碼編程時如何嵌入匯編語言?
Keil軟件設置Keil項目建立后,會混合設置項目的匯編語言。
軟件編寫51單片機12MHZ晶振延時1s為例匯編程序編寫
#雜注匯編
//編寫一條匯編語句
#實用主義
在...之間
程序效果:P1港8位流水燈,時間間隔1S。
#includeltreg51.hgt
#includeltintrins.hgtt
voidmain()
{
無符號字符i0xfe
while(1)
{
P1i
i_crol_(i,1)
#雜注匯編
D:MOVR7,#10
D:MOVR6,#200
D:MOVR5,#248
DJNZR5,美元
DJNZR6,D
控制51流水燈的間隔時間,比如每隔一秒或者間隔200ms,delay函數里的for循環具體數字是怎樣取的?
這個時間可以簡單,也可以復雜。
簡單,不太準確。
你可以給10000,然后用手機或者電腦上的計時軟件看看是多少秒,然后就可以大致確定每秒或者每200ms的循環次數。
它既復雜又準確。
你需要使用KeilC51軟件,在建立的項目中設置使用的51芯片和51的時鐘頻率,輸入代碼,編譯通過調試。
您可以在左側的框中看到延遲功能的詳細執行時間。從進入函數前的值中減去退出函數后的值,就是函數的確切執行時間。注意51的正確型號和時鐘頻率。
怎樣用STM32點亮LED燈?怎樣用STM32讓LED閃爍?
對于單片機編程,點亮LED是單片機編程的入門操作。
對于STM32,我習慣寄存器操作,所以本文將以KEIL4.12為開發環境,寄存器操作測試為編程思路。
首先,創建一個名為LED_Project的項目。在keil右側的項目窗口中,選擇項目,用鼠標右鍵點擊,如下圖所示。
選擇設備項目,選擇相應的型號,
在項目中添加相應寄存器版本的支持文件,因為只需要LED相關的寄存器操作,只需要RCC和GPIO的固件庫文件。
創建main.c文件并包含#includ:
#defineLED_ONGPIOA-GTOdr|(1ltlt4)
#defineLED_OFFGPIOA-gtODRamp~(1ltlt4)
定義LED的GPIO初始化函數,
如上圖所示,
RCC-gtAPB2:功能如下。
設置LED燈的關燈時間梯度,功能如下圖所示。
如上圖所示,函數中使用for循環,從最快10ms的間隔開始完成一個led的閃爍頻率,逐漸增加時間,最后1S閃爍一次,然后逐漸減少間隔時間,加快閃爍頻率。
LED閃爍的實現效果也可以設計,每個人都可以自由發揮代碼的魅力和能力。
以上是對問題的粗略回答,難免會有疏漏。
希望大家可以留言,喜歡,轉發,關注。