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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2012|回復: 16
收起左側

STC8G1K08單片機main無法調用封裝函數

[復制鏈接]
ID:1107733 發表于 2024-1-3 11:38 | 顯示全部樓層 |閱讀模式
各位大佬好,我正在學習單片機,使用單片機型號為STC8G1K08。在學習過程中遇到一些困難,希望各位大佬指點迷津。在程序中,我將代碼封裝在函數中,然后在main函數中調用,程序可以正常編譯,也能下載到單片機中,但是無法執行函數功能。
這只是個簡單的IO功能測試,不但定時器功能無法啟動,甚至普通的IO也無法使用。

  1. #include <STC8G.H>
  2. #include <Delay.h>

  3. void Time0()
  4. {
  5.        
  6.     TMOD = 0x00;
  7.     TL0 = 0x00;                                
  8.     TH0 = 0x00;
  9.     TR0 = 1;                                    //啟動定時器
  10.     ET0 = 1;  

  11. }

  12. void TM0_Isr() interrupt 1
  13. {
  14.   P33=!P33;
  15. }
  16. void main()
  17. {
  18.           
  19.     P3M0 &= 0x0C;
  20.     P3M1 &= 0x00;
  21.     P5M0 &= 0x00;
  22.     P5M1 &= 0x10;               

  23.        
  24. //    TMOD = 0x00;
  25. //    TL0 = 0x00;                                
  26. //    TH0 = 0x00;
  27. //    TR0 = 1;                                    //啟動定時器
  28. //    ET0 = 1;  


  29.                 Timer0();                                                
  30.     EA = 1;                                                                                                                                                         //使能定時器中斷

  31.     while (1)
  32.                 {
  33.                         P55=1;
  34.                         P30=0;
  35.                         P31=0;
  36.                         P32=0;
  37.                         DelayMs(500);
  38.                         P55=0;
  39.                         P30=1;
  40.                         P31=1;
  41.                         P32=1;
  42.                         DelayMs(500);
  43.                 }

  44. }
復制代碼
但我將代碼直接寫在main函數中,程序功能可以正常執行。
  1. #include <STC8G.H>
  2. #include <Delay.h>
  3.   

  4. void Time0()
  5. {
  6.        
  7.     TMOD = 0x00;
  8.     TL0 = 0x00;                                
  9.     TH0 = 0x00;
  10.     TR0 = 1;                                    //啟動定時器
  11.     ET0 = 1;  

  12. }

  13. void TM0_Isr() interrupt 1
  14. {
  15.   P33=!P33;
  16. }
  17. void main()
  18. {
  19.           
  20.     P3M0 &= 0x0C;
  21.     P3M1 &= 0x00;
  22.     P5M0 &= 0x00;
  23.     P5M1 &= 0x10;               

  24.        
  25.     TMOD = 0x00;
  26.     TL0 = 0x00;                                
  27.     TH0 = 0x00;
  28.     TR0 = 1;                                    //啟動定時器
  29.     ET0 = 1;  


  30. //                Timer0();                                                
  31.     EA = 1;                                                                                                                                                         //使能定時器中斷

  32.     while (1)
  33.                 {
  34.                         P55=1;
  35.                         P30=0;
  36.                         P31=0;
  37.                         P32=0;
  38.                         DelayMs(500);
  39.                         P55=0;
  40.                         P30=1;
  41.                         P31=1;
  42.                         P32=1;
  43.                         DelayMs(500);
  44.                 }

  45. }
復制代碼
我的知識儲備對這種情況百思不得其解,希望得到各位的幫助。




回復

使用道具 舉報

ID:1057978 發表于 2024-1-3 16:51 | 顯示全部樓層
TL0 = 0x00;                                
TH0 = 0x00;
這是定時幾秒進中斷呢,還是不停的進中斷呢
回復

使用道具 舉報

ID:1107733 發表于 2024-1-3 17:37 | 顯示全部樓層
wangxiangtan 發表于 2024-1-3 16:51
TL0 = 0x00;                                
TH0 = 0x00;
這是定時幾秒進中斷呢,還是不停的進中斷呢

是不停進中斷翻轉電平
回復

使用道具 舉報

ID:1107733 發表于 2024-1-3 17:41 | 顯示全部樓層
我使用的單片機是STC8G1K08-8Pin的,但只有這一個型號,不知道這個問題是只針對這個型號,還是其他型號的也會遇到這種問題。
回復

使用道具 舉報

ID:1006638 發表于 2024-1-3 19:57 | 顯示全部樓層
請問你是怎么檢測定時器啟動沒?假如你設定主頻12M定時器就5MS進一次。看?萬用表?示波器?
回復

使用道具 舉報

ID:1010435 發表于 2024-1-3 20:21 | 顯示全部樓層
123.JPG
Timer沒有拼寫對
回復

使用道具 舉報

ID:471636 發表于 2024-1-3 22:02 | 顯示全部樓層
//                Timer0();

這個函數已經被你用“//”注釋掉了!
回復

使用道具 舉報

ID:213173 發表于 2024-1-3 22:17 | 顯示全部樓層
你封裝的函數名稱與調用的函數名稱不一致當然無效。void Time0()   Timer0();  難道編譯時沒有警告???
回復

使用道具 舉報

ID:1006638 發表于 2024-1-4 07:56 | 顯示全部樓層
還是6樓心細 啊,看幾遍 我都沒發現
回復

使用道具 舉報

ID:1107733 發表于 2024-1-4 09:04 | 顯示全部樓層
感謝大佬,確實是我自己粗心導致的,編譯報了警告沒報錯所以給忽略掉了
回復

使用道具 舉報

ID:883242 發表于 2024-1-4 09:06 | 顯示全部樓層
wulin 發表于 2024-1-3 22:17
你封裝的函數名稱與調用的函數名稱不一致當然無效。void Time0()   Timer0();  難道編譯時沒有警告???

樓主同時說“程序可以正常編譯”怎么解釋?
回復

使用道具 舉報

ID:1107733 發表于 2024-1-4 09:18 | 顯示全部樓層
Hephaestus 發表于 2024-1-4 09:06
樓主同時說“程序可以正常編譯”怎么解釋?

編譯報警告,但是沒報錯,我給忽略了
回復

使用道具 舉報

ID:1107733 發表于 2024-1-4 09:23 | 顯示全部樓層
這也是之前學習過程中沒有注意到的問題,從來不注意警告信息,只要程序沒報錯就認為沒問題,感謝各位的幫助
回復

使用道具 舉報

ID:883242 發表于 2024-1-4 09:41 | 顯示全部樓層
dnxbdnxb01 發表于 2024-1-4 09:18
編譯報警告,但是沒報錯,我給忽略了

不會這么簡單,你肯定有更多的隱瞞之處。
回復

使用道具 舉報

ID:1107733 發表于 2024-1-4 09:59 | 顯示全部樓層
Hephaestus 發表于 2024-1-4 09:41
不會這么簡單,你肯定有更多的隱瞞之處。

它的警告信息如下:
  1. Rebuild target 'Target 1'
  2. assembling STARTUP.A51...
  3. compiling stc01.c...
  4. stc01.c(34): warning C206: 'Timer0': missing function-prototype
  5. linking...
  6. *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
  7.     SEGMENT: ?PR?TIME0?STC01
  8. *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
  9.     SYMBOL:  TIMER0
  10.     MODULE:  stc01.obj (STC01)
  11. *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
  12.     SYMBOL:  TIMER0
  13.     MODULE:  stc01.obj (STC01)
  14.     ADDRESS: 001BH
  15. Program Size: data=9.0 xdata=0 code=68
  16. creating hex file from "stc801"...
  17. "stc801" - 0 Error(s), 4 Warning(s).
復制代碼

我只注意到錯誤數為零,就沒有關注警告信息。
回復

使用道具 舉報

ID:1107733 發表于 2024-1-4 10:02 | 顯示全部樓層
Hephaestus 發表于 2024-1-4 09:41
不會這么簡單,你肯定有更多的隱瞞之處。

在我印象中,也覺得如果調用了沒有定義的函數會報錯,因此沒有注意到函數名錯誤
回復

使用道具 舉報

ID:1107733 發表于 2024-1-4 10:02 | 顯示全部樓層
大IGBT 發表于 2024-1-3 19:57
請問你是怎么檢測定時器啟動沒?假如你設定主頻12M定時器就5MS進一次。看?萬用表?示波器?

我使用的led燈
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级黄色片网站 | 欧美亚洲国产精品 | 成av人片一区二区三区久久 | 亚洲三级在线观看 | 天天爱综合 | 欧美大片91 | 色妞色视频一区二区三区四区 | 国产美女毛片 | 国产精品视频免费看 | 亚洲天堂影院 | 亚洲综合区 | 久久精品一区二区三区四区五区 | 久久久久一 | 免费在线小视频 | 国产麻豆一区二区 | 超碰在线中文字幕 | 国内自拍偷拍视频 | 免费av一区二区 | 久久免费影院 | 亚洲成人免费在线观看 | 久久av资源 | 中文字幕在线不卡 | 欧美高清视频在线观看mv | 97青青草 | 国产成人精品一区二区三区在线 | 欧美午夜精品一区二区三区 | 亚洲伊人av| 日本国产欧美 | 欧美三级 欧美一级 | 国产精品国产精品国产专区不片 | 日韩欧美综合 | 一级片在线观看视频 | 亚洲国产一区在线 | 成人av一区二区三区在线观看 | 精品少妇v888av | 草草在线视频 | 亚洲精品一二 | 免费看成人片 | 涩涩久久 | 日韩色黄大片 | 国产麻豆精品视频 |