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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3331|回復: 22
收起左側

為何這個單片機程序得寫多一行?

  [復制鏈接]
ID:995903 發表于 2021-12-28 20:59 | 顯示全部樓層 |閱讀模式
這是一個7段數碼管循環顯示數字的程序
  1. #include "reg52.h"
  2. #include "intrins.h"
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define out P0
  6. uchar code seg[]={0xc0,0xa4,0x99,0x82,0x80,0xf9,0xb0,0x92,0xf8,0x90,0x01};                                 
  7. void delayms(uint);                                 
  8. void main(void)
  9. {        
  10. uchar i;
  11. while(1)
  12.         {        
  13.         out=seg[i];
  14.         delayms(900);
  15.         i++;
  16.         if(seg[i]==0x01)i=0;  
  17.         }
  18. }
  19. void delayms(uint j)                                
  20. {
  21. uchar i;
  22. for(;j>0;j--)
  23.           {        
  24.                 i=250;
  25.                     while(--i);
  26.                     i=249;
  27.                     while(--i);
  28.            }
  29. }
復制代碼


為啥在main函數前面要多寫一行void delayms(uint);不寫這一行編譯就會出錯



回復

使用道具 舉報

ID:883242 發表于 2021-12-28 21:40 | 顯示全部樓層
如果第7行不存在,第14行main引用到delayms的時候不知道delayms是個什么東西,自然無法編譯成匯編。

不想寫第7行也可以,把19行到29行的delayms代碼放到第8行前面,這樣main引用delayms的時候已經知道這東西是個什么玩意兒了。
回復

使用道具 舉報

ID:573999 發表于 2021-12-28 22:11 | 顯示全部樓層
函數聲明,基礎的C語言問題
回復

使用道具 舉報

ID:424598 發表于 2021-12-28 23:28 來自觸屏版 | 顯示全部樓層
程序加載的順序問題
回復

使用道具 舉報

ID:908826 發表于 2021-12-29 08:09 | 顯示全部樓層
函數聲明,main函數之前要保證你main函數里面要調用的函數存在,你也可以不生命,只要把那個子函數的定義寫在main函數前面即可。
回復

使用道具 舉報

ID:232791 發表于 2021-12-29 08:43 | 顯示全部樓層
你不寫delayms,main怎么知道delayms(900)。可以吧下面的void delayms(uint j) 放到main前面。
回復

使用道具 舉報

ID:426861 發表于 2021-12-29 08:48 | 顯示全部樓層
這是C語言方面的問題,函數在調用前必須先聲明
回復

使用道具 舉報

ID:486279 發表于 2021-12-29 08:57 | 顯示全部樓層
要先聲明啊 ,程序是從上往下執行,你不先告訴編譯器有這個函數,等執行到這個函數的時候,編譯器認不出來
回復

使用道具 舉報

ID:995903 發表于 2021-12-29 10:59 | 顯示全部樓層
Hephaestus 發表于 2021-12-28 21:40
如果第7行不存在,第14行main引用到delayms的時候不知道delayms是個什么東西,自然無法編譯成匯編。

不 ...

明白了,謝謝各位大佬
回復

使用道具 舉報

ID:893997 發表于 2021-12-29 15:36 | 顯示全部樓層
C語言從main函數開始,然后讀到delayms就會從main之前去找,如果不加聲明就找不到就會報錯
回復

使用道具 舉報

ID:998236 發表于 2021-12-29 16:04 | 顯示全部樓層
c語言的規則,調用前,必須先聲明函數;或者把19行之后的內容(void delayms(uint j)    )挪到main()函數之前
回復

使用道具 舉報

ID:998268 發表于 2021-12-29 17:23 | 顯示全部樓層
函數聲明,c語言的基礎規則,沒有聲明的話就會報錯
回復

使用道具 舉報

ID:998126 發表于 2021-12-30 12:13 來自觸屏版 | 顯示全部樓層
C語言從main函數開始,如果不加聲明就找不到就會報錯
回復

使用道具 舉報

ID:824490 發表于 2021-12-30 15:10 | 顯示全部樓層
函數調用前要聲明,如同生了孩紙要起名,不然,上學后老師點名,都叫仔仔,不就亂套了?
回復

使用道具 舉報

ID:999177 發表于 2022-1-2 12:36 | 顯示全部樓層
聲明這個函數,不然無法調用
回復

使用道具 舉報

ID:691185 發表于 2022-1-16 17:41 | 顯示全部樓層
申明啊如果不申明的話編譯的時候不知道你這個延時函數是什么東西,如果你不申明的話就把延時函數寫到main函數的前面
回復

使用道具 舉報

ID:104472 發表于 2022-1-16 20:33 | 顯示全部樓層
聲明調用,要不,無法找到這個函數,不寫可以,main函數寫道最后,所有子函數,寫道他前面,就不需要聲明了。
回復

使用道具 舉報

ID:207421 發表于 2022-1-16 22:55 | 顯示全部樓層

把函數寫在main前面就無需聲明
回復

使用道具 舉報

ID:280000 發表于 2022-1-17 10:48 | 顯示全部樓層
函數聲明
回復

使用道具 舉報

ID:382454 發表于 2022-1-18 11:21 | 顯示全部樓層
void delayms(uint);    這是聲明,因為你把函數放在主函數main下面了,你把這個函數放在main上面,就可用這個聲明了。
回復

使用道具 舉報

ID:453974 發表于 2022-1-18 17:30 | 顯示全部樓層
就比如你跟人借東西一樣,拿走之前得先和人家打聲招呼吧?
回復

使用道具 舉報

ID:981034 發表于 2022-1-23 08:54 | 顯示全部樓層
你盡量將子程序放在主程序之前
回復

使用道具 舉報

ID:883031 發表于 2022-1-23 10:37 | 顯示全部樓層
delayms(900)放到main前面就不需要寫這一行了。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日日日日日日bbbbb视频 | 国产在视频一区二区三区吞精 | 亚洲高清中文字幕 | 天天干狠狠干 | 久久精品久久久久久 | 久热中文字幕 | 国产一区二区三区在线 | www狠狠爱com | 亚洲一区二区三区免费 | 国产欧美精品一区二区色综合朱莉 | 天天宗合网 | 91中文在线观看 | 二区在线视频 | 亚洲人va欧美va人人爽 | 国产乱码精品1区2区3区 | 成人欧美一区二区三区白人 | 亚洲国产成人精品久久久国产成人一区 | 国产精品久久久久久久久久久久久 | 成人aaa视频 | 国产一区二区三区在线 | 久久中文高清 | 日韩av免费在线电影 | 国产精品极品美女在线观看免费 | 亚洲精品免费观看 | 日韩福利视频 | 欧美久久免费观看 | av免费在线播放 | 精品久久久久久久人人人人传媒 | 青青久久久 | 久久婷婷国产麻豆91 | 中文字幕视频在线观看 | 9999在线视频| 亚洲激情av| 岛国在线免费观看 | 国产精品久久久乱弄 | aaa天堂 | 91在线精品秘密一区二区 | 久草99| 一区二区影院 | 97精品一区二区 | 日韩欧美一区二区三区在线播放 |