C51單片機延時程序原始碼

2021-01-08 電子產品世界

C51單片機(STC11L32/48/60XE)的延時程序

void delay_us(U8 us)

{

do

{

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

us--;

}

while(us);

}

void delay_ms(U8 ms)

{

do

{

delay_us(250);

delay_us(250);

delay_us(250);

delay_us(250);

ms--;

}

while(ms);

}

void delay_s(U8 s)

{

do

{

delay_ms(250);

delay_ms(250);

delay_ms(250);

delay_ms(250);

s--;

}

while(s);

}

其中_nop_()定義在intrins.h頭文件中,並且intrins.h是一個庫函數,直接#include「intrins.h」包含即可。


相關焦點

  • 【單片機筆記】keil c51編譯環境不能跳轉函數的解決辦法
    keil c51 不能使用:Go to Definition of....的解決方法最近使用keil c51 開發usb固件,當向vc一樣使用Go to Definition of....時,出現警告對話框:no browse information available in'工程目錄'check
  • 用C51編寫單片機延時函數
    參考了51單片機 Keil C 延時程序的簡單研究,自己也親身測試和計算了一些已有的延時函數。這裡假定單片機是時鐘頻率為12MHz,則一個機器周期為:1us.
  • 單片機c語言教程:C51數據類型
    每寫一個程序,總離不開數據的應用,在學習 c51 語言的過程中掌握理解數據類型也是 很關鍵的。先看表 3-1,表中列出了 KEIL uVision2 單片機c語言編譯器所支持的數據類型。在標準C語言中基本的數據類型為 char,int,short,long,float 和 double,而在c51編譯器中int 和 short 相同,float 和 double 相同,這裡就不列出說明了。
  • 單片機驅動蜂鳴器C51程序
    uchar unsigned char#define uint unsigned intsbit k1=P1^4; //按鈕1sbit k2=P1^5; //按鈕2sbit beep=P3^7; //接蜂鳴器/*********************************************************本程序出自
  • PIC單片機C語言程序實例
    這就出現了精通51單片機彙編語言的人不能直接編寫PIC或其他單片機的彙編語言源程序,反之亦然的現象,以及產品升級換代和不同單片機問程序移植難的問題。而且,由於彙編語言是採用助記符的低級語言,可讀性較差,當源程序功能多、程序長時,即使加了注釋,閱讀自己編寫的程序也會感到困難,更不用說修改程序和增加功能了。
  • 單片機延時程序解析
    我們已經知道,程序中的符號R7、R6是代表了一個個的RAM單元,是用來放一些數據的,下面我們再來看一下其它符號的含義。javascript:resizepic(this) border=0>〈單片機延時程序〉本文引用地址:http://www.eepw.com.cn/article/172331.htm MOV
  • 51單片機C語言延時函數
    C程序中可使用不同類型的變量來進行延時設計。經實驗測試,使用unsigned char類型具有比unsigned int更優化的代碼,在使用時應該使用unsigned char作為延時變量。
  • 單片機延時程序圖解分析
    我們已經知道,程序中的符號R7、R6是代表了一個個的RAM單元,是用來放一些數據的,下面我們再來看一下其它符號的含義。〈單片機延時程序〉 MOV:這是一條指令,意思是傳遞數據。
  • 單片機音樂程序設計(含源程序)
    隨便找一個仿真機或者什麼單片機實驗板,只要能工作的就行,將程序輸入,運行,然後找個音箱(你計算機旁邊應當就有一對吧)撥出插頭,插頭的前端接在P1。0上,後面部分找根線接單片機的地,就應當有聲了,然後怎麼改進硬體連接就是你的事了。。。。
  • 單片機延時程序經驗
    但在單片機的C語言編程中,經常需要用幾個空指令產生短延時的效果。這在彙編語言中很容易實現,寫幾個nop就行了。在keil C51中,直接調用庫函數:#include // 聲明了void _nop_(void);_nop_(); // 產生一條NOP指令作用:對於延時很短的,要求在us級的,採用「_nop_」函數,這個函數相當彙編NOP指令,延時幾微秒。NOP指令為單周期指令,可由晶振頻率算出延時時間,對於12M晶振,延時1uS。
  • 單片機原理|C51程序設計基礎複習題
    A、源程序 B、彙編程序 C、目標程序 D、編譯程序12 C51編譯器提供了一組宏定義來對code、data、pdata和xdata空間進行絕對尋址,其定義的頭文件為( B)。A、reg52.h B、absacc.h C、io.h D、string.h13 C51語言提供的合法的數據類型關鍵字是(B )。
  • 單片機電子琴電路圖及源程序代碼
    實驗仿真圖本文引用地址:http://www.eepw.com.cn/article/201611/321258.htm源程序代碼:(彈奏部分代碼暫時去掉,見諒,需要的留言,轉載請註明出處,謝謝!) ;復位地址 LJMP MAIN ;跳轉到主程序
  • 單片機提高C語言代碼效率的方法
    單片機的ROM和RAM的空間都很有限,當您編程時遇到單片機的ROM和RAM的不夠用的時候,或者您的程序要求較高的執行速度時,我們就得面對解決代碼效率問題了。如何提高代碼效率?現筆者以一個LED閃爍的程序為例與您探討。
  • Keil C51程序設計中幾種精確延時方法
    實際的單片機應用系統開發過程中,由於程序功能的需要,經常編寫各種延時程序,延時時間從數微秒到數秒不等,對於許多C51開發者特別是初學者編制非常精確的延時程序有一定難度。
  • 第7節:程序開發的方法以及代碼備份管理技巧
    從業十年,教你單片機入門 第7講:是不是每做一個新項目都要新建一個工程?在同一個項目中,是不是每修改一次原始碼都要新建一個工程?很多情況下都不用。這節介紹如何重複利用現有工程模板進行程序開發的方法以及代碼備份管理技巧。
  • 簡單的單片機的流水燈程序
    ACALL  DELAY      ;調用延時子程序    SETB  P1.0       ;P1.0輸出高電平,使LED1熄滅    CLR   P1.1       ;P1.1輸出低電平,使LED2點亮    ACALL  DELAY      ;調用延時子程序    SETB  P1.1       ;P1.1輸出高電平,使LED2熄滅    CLR
  • PIC單片機C語言程序設計(2)
    當條件表達式為零時,退出循環;若表達式一開始就為0,其while語句一次也不執行;若條件表達式恆為1,則程序在while體內一直循環。  (3)程序實例2  1)硬體電路和功能硬體電路同《PIC單片機C語言程序設計(1)》一文的圖1(見《電子製作》2009年第10期)。圖中的RA0口外接的微動開關KO,作為程序的起動開關。KO未按下時。
  • 圖形化編程玩51單片機(十八)-電子廣告顯示屏
    * 【程序功能】:模擬廣告牌的字體流動顯示 帶有滾動字幕的廣告效果,要遠遠大於靜態顯示的廣告效果。動態顯示的廣告更容易吸引人的注意,中間插入一點花式流水燈,是為了讓人不會感覺視力疲勞。實驗步驟:1,首先打開上次收藏的「c51代碼生成器」在線編譯器網頁。只要按照圖一裡面的步驟搭建就都可以完成(不清楚的可以後臺留言諮詢)。
  • 51單片機按鍵電平讀取程序
    👉【點我做相冊】按鍵電平的讀取通常我們都是通過延時函數或者循環延時來降低抖動時間1S LED = 1; //關閉LED小燈 } } 以上程序對於簡單試驗還使用,但對於稍微複雜一點的程序就顯得太浪費單片機資源了。
  • 單片機keil 常見問題
    一、混合編程1、模塊內接口:使用如下標誌符:#pragma asm彙編語句#pragma endasm注意:如果在c51程序中使用了彙編語言