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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

[復制鏈接]
跳轉到指定樓層
樓主
學了這么久還是不知道每一行的C語言代碼什么意思,每次都要翻資料看意思(苦惱呀!要背一大堆的函數和格式,看別人的代碼寫的都不知道什么意思的你要怎么學好單片機呢?)



單片機仿真原理圖如下(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()                   //主函數                【正式語句】
  6. {
  7. while(1)           //大循環【正式語句】
  8. {
  9. led=0;                  //點亮第一個發光二極管   【正式語句】
  10. for(i=2;i>0;i--)                 //延時                【延時語句】  2*6000=12000
  11.   for(j=6000;j>0;j--);
  12. led=1;                                    //關閉第一個發光二極管   【正式語句】
  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)/*.....*/    /* 一杠與星號結合使用,這種寫法可以注釋任意行。其斜杠星號與星號斜杠之間的所有文字都作為注釋。
  22.   所有注釋都不參與程序編譯。在編譯過程中會自動刪去注釋,注釋的目是為了我們讀程序的方便。一般在編寫較大的程序時分段
  23. 加入注釋,這樣當回過頭來再次讀程序時,因為有注釋,其代碼的意義變一目了然了。若無注釋,是不是特別費力地將程序重新閱
  24. 讀一遍方可知道之后代碼含義。
  25. *********************************************************/

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

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

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

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

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

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


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

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产高清视频在线观看播放 | 18gay男同69亚洲网站 | 精品欧美一区二区三区精品久久 | 成人免费视频网站在线看 | 一级久久久久久 | 中文字幕日韩在线 | 日本人做爰大片免费观看一老师 | 亚洲高清视频在线 | 国内精品在线视频 | 九九九视频在线 | 国产精品99久久久久久久久 | 亚洲在线看 | 亚洲成人网在线 | 日韩视频精品在线 | 欧美理伦片在线播放 | 中文字幕国产精品 | sese视频在线观看 | 在线观看日本高清二区 | 色婷婷狠狠 | 熟女毛片 | 四虎在线观看 | 国产黄色在线观看 | 欧美黄色绿像 | 又爽又黄axxx片免费观看 | 亚洲精品91 | 日韩图区| 亚洲欧美日本在线 | 亚洲精品第一国产综合野 | 三级在线视频 | 欧美日韩中文在线观看 | 欧美日韩综合精品 | 中文字幕成人 | 久久69精品久久久久久久电影好 | 国产黄色在线观看 | 国产激情91久久精品导航 | 欧美一级免费黄色片 | 午夜ww | 三级视频在线观看 | 欧美一二三四成人免费视频 | 久久久久亚洲av毛片大全 | 亚洲精品在线看 |