久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1845|回復: 0
打印 上一主題 下一主題
收起左側(cè)

C語言for語句學習 附詳細注釋單片機程序與Proteus仿真圖

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:815459 發(fā)表于 2022-4-30 17:56 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
學了這么久還是不知道每一行的C語言代碼什么意思,每次都要翻資料看意思(苦惱呀!要背一大堆的函數(shù)和格式,看別人的代碼寫的都不知道什么意思的你要怎么學好單片機呢?)



單片機仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機C語言源程序如下:
  1. #include <REGX52.H>           //頭文件                【正式語句】
  2. #define uint unsigned int      //宏定義 uint 【無符號整型(范圍:0~65535)】
  3. sbit led=P1^0;           // 聲明單片機P1口(led)  【正式語句】         在Pro仿真中:LED-YELLOW燈泡腳連接P1.0口
  4. uint i,j;                        //定義兩個(無符號整型)變量 ,分別為 i ,j
  5. void main()                   //主函數(shù)                【正式語句】
  6. {
  7. while(1)           //大循環(huán)【正式語句】
  8. {
  9. led=0;                  //點亮第一個發(fā)光二極管   【正式語句】
  10. for(i=2;i>0;i--)                 //延時                【延時語句】  2*6000=12000
  11.   for(j=6000;j>0;j--);
  12. led=1;                                    //關(guān)閉第一個發(fā)光二極管   【正式語句】
  13. for(i=6;i>0;i--)                 //延時                【延時語句】        6*126=756
  14.   for(j=126;j>0;j--);          
  15. }
  16. }
  17. /********************************************************
  18. 知識點: C語言中注釋寫法
  19.   在C語言中.注釋有兩種解法:
  20.    (1)//.....  兩個斜杠后面跟著的為注釋語句。這個寫法只能注釋一行, 當換行時,又必須在新行上重新寫兩個斜杠。
  21.    (2)/*.....*/    /* 一杠與星號結(jié)合使用,這種寫法可以注釋任意行。其斜杠星號與星號斜杠之間的所有文字都作為注釋。
  22.   所有注釋都不參與程序編譯。在編譯過程中會自動刪去注釋,注釋的目是為了我們讀程序的方便。一般在編寫較大的程序時分段
  23. 加入注釋,這樣當回過頭來再次讀程序時,因為有注釋,其代碼的意義變一目了然了。若無注釋,是不是特別費力地將程序重新閱
  24. 讀一遍方可知道之后代碼含義。
  25. *********************************************************/

  26. /*************************************************************************************************************
  27. 知識點:#define宏定義
  28. 格式:#define 新名稱 原來內(nèi)容
  29.    注意后面沒有分號,#define命令用它后面的第一個字母組合代替該字母組合后面的所有內(nèi)容,也就是相當于我們給“原內(nèi)容”
  30. 重新起一個比較簡單的“新名稱” 方便以后在程序中直接寫簡短的新名稱,而不必每次都寫繁瑣的原內(nèi)容。
  31.    上例中我們使用宏定義的目的就是將unsigned int用uint代替,在上面的程序中可以看到,當我們需要定義unsigned int型
  32. 變量時,并沒有寫“unsigned int i,j;”取而代之的是“uint i,j;在一個程序代碼中,只要宏定義過一次,若定義兩次,那么在整
  33. 個代碼中都可以直接使用它的“新名稱”。注意,對同一個內(nèi)容,宏定義只能定義一次,若定義兩次,將會出現(xiàn)重復定義的錯誤提示。
  34.   
  35.    這里使用while(1){}語句,因為while里的表達式是1,永遠為真,所以程序?qū)⒂肋h循環(huán)執(zhí)行這個大括號中的所有語句。單片機
  36. 在執(zhí)行指令的時候是按代碼從上向下順序執(zhí)行的,我們分析while大括號里的語句含義是“點亮燈 → 延時一會兒 → 關(guān)閉燈 → 再延時
  37. 一會兒 → 點亮燈 → 延時一會兒················”如此循環(huán)下去,當我們把程序下載到實驗板上便可看到小燈亮滅閃動的效果。
  38.    這個延時語句究竟是延長多少時間呢?到(工程 → 為目標’目標1‘設(shè)置選項)對話框,在【Target】標簽下的【Xtal(MHz):】后
  39. 面將原來的默認值修改為單片機實驗板上的晶振頻率值 11.0592MHz 。
  40.    編譯程序時,計算代碼執(zhí)行時間與該數(shù)值有關(guān),既然我們要模擬真實時間,那么軟件模擬運行速度就要與實際硬件一一對應(yīng)。
  41. *************************************************************************************************************/

  42. /**************************************************************************************************************
  43. 知識點:for語句【及簡單延時語句】
  44. 格式:for(表達式1;表達式2;表達式3)
  45.      {語句(內(nèi)部可為空)}
  46. 執(zhí)行過程:
  47. 第一步:求解一次表達式1.
  48. 第二步:求解一次表達式2.若其值為真(非0即為真),則執(zhí)行for中語句,然后執(zhí)行第三步;否則結(jié)束for語句,直接跳出,不再執(zhí)行第三步。
  49. 第三步:求解一次表達式3
  50. 第四步:跳到第二步重復執(zhí)行。
  51.   需要注意的是,三個表達式之間必須用分號隔開。
  52. 利用for語句和while語句寫簡單的延時語句,下面用for語句寫一個簡單的延時語句 ,并進一步了解for語句的用法。

  53.         unsigned char i;                //沒簡化的字符型變量(i)
  54.         for(i=2;i>0;i--);

  55. 上面這兩句,首先定義一個無符號字符型變量i ,然后執(zhí)行for語句,表達式1是給i賦一個初值2,表達式2是判斷i大于0是真還是假,表達
  56. 式3是i自減1,我們分析執(zhí)行過程:

  57. 第1步,給i賦初值2,此時i=2。
  58. 第2步,因為2>0條件成立,所以其值為真,那么執(zhí)行一次for中的語句,因為for內(nèi)部語句為空,即什么也不執(zhí)行。
  59. 第3步, i自減1,即i=2-1=1.
  60. 第4步, 跳到第2步,因為1>0條件成立所以其為真,那么執(zhí)行一次for中的語句,因為for內(nèi)部語句為空,即什么也不執(zhí)行。
  61. 第5步,i自減1,即i=1-1=0.
  62. 第6步,跳到第2步,因為0>0條件不成立,所以其值為假,那么結(jié)束for語句,直接跳出。
  63.    以上六步,這個for語句就執(zhí)行完了,單片機在執(zhí)行這個for語句的時候是需要時間的,上面i的初值較小,當給i賦的初值越大,它執(zhí)行所
  64. 需的時間就越長,因此就可以利用單片機執(zhí)行這個for語句的時間來作為一個簡單廷時語句。
  65.    要寫一個延時比較長的語句時,因為在這里i是一個字符型變量,它的最大值為255,當你給它賦一個比最大值都大的數(shù)時,編譯器自然就
  66. 出錯誤了,每次給變量賦初值時,都要首先考慮變量類型,然后根據(jù)變量類型賦一個合理的值。

  67.    怎樣才能寫出長時間的延時語句呢?就要用到for語句的嵌套。

  68.   unsigned char i,j;                   //沒簡化的字符型變量 定義:(i和j)
  69.          for(i=100;i>0;i--);
  70.            for(j=200;j>0;j--);

  71. 上面這個例子是for語句的兩層嵌套,第一個for后面沒有分號,那么編譯器默認第二個for語句就是第一個for語句的內(nèi)部語句,而第二個for語
  72. 句內(nèi)部語句為空,程序在執(zhí)行時,第一個for語句中的i每減一次,第二個for語句便執(zhí)行200次,因此上面這個例子便相當于共執(zhí)行了100X200次
  73. for語句。通過這種嵌套我們便可以寫出比較長時間的延時語句,我們還可以進行3層、4層嵌套來増加時間,或是改變變量類型,將變量初值再
  74. 增大也可以増加執(zhí)行時間。
  75. 這種for語句的延時時間到底有沒有精確算法呢?在c語句中這種延時語句不好算出它的精確時間,需要計算非常精確的延時時間,就要利用單
  76. 片機的內(nèi)部的定時器來延時,它的精度非常高,可以精確到微秒級。而一般簡單延時語句實際上并不需要太精確.


  77. **************************************************************************************************************/                                                                                  
復制代碼
Keil代碼與Proteus仿真下載:
for語句入門2.rar (69.44 KB, 下載次數(shù): 21)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产激情小视频 | 青青草这里只有精品 | 91天堂网| 欧美激情综合五月色丁香小说 | 日韩成人高清 | 综合亚洲视频 | 久久精品av | 欧美视频 | 日韩精品1区2区3区 爱爱综合网 | 精品熟人一区二区三区四区 | 色爱综合网 | 亚洲狠狠丁香婷婷综合久久久 | 日本人麻豆 | 在线免费观看黄色 | 久久久亚洲精品视频 | 国产清纯白嫩初高生在线播放视频 | 视频在线h | 亚洲中午字幕 | 亚洲精品在线免费观看视频 | 福利视频三区 | 欧美三区 | 免费国产一区 | 欧美成年黄网站色视频 | 国产av毛片 | av中文字幕在线观看 | 一区二区三区亚洲视频 | 欧美a在线 | 亚洲精品1区 | 国产成人在线看 | 欧美综合久久 | 亚洲97| 操操网站 | 91精品久久久久久久久久小网站 | 97视频免费 | 午夜看片网站 | 97超碰人人 | 亚洲第一中文字幕 | 91高清在线观看 | 欧美一级片中文字幕 | 免费一级黄色录像 | 国产精品亚洲综合 |