找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2007|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

請問單片機(jī)C語言位變量不能取反嗎?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1010435 發(fā)表于 2023-4-2 22:48 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
P33接了個燈,低電平亮,然后用定時器0,每秒P33接口反轉(zhuǎn)一次,單片機(jī)STC8G1K

單片機(jī)C語言源程序如下:
  1. bit flag;

  2. void Timer0_Init(void)                //1毫秒@12.000MHz
  3. {
  4.         AUXR |= 0x80;                        //定時器時鐘1T模式
  5.         TMOD &= 0xF0;                        //設(shè)置定時器模式
  6.         TL0 = 0x20;                                //設(shè)置定時初始值
  7.         TH0 = 0xD1;                                //設(shè)置定時初始值
  8.         TF0 = 0;                                //清除TF0標(biāo)志
  9.         TR0 = 1;                                //定時器0開始計時
  10.         ET0=1;
  11.         EA=1;
  12. }


  13. void TM0_Isr() interrupt 1
  14. {
  15.         static unsigned int T0Count;
  16.         T0Count++;
  17.         if(T0Count>=1000)
  18.         {
  19.                 T0Count=0;
  20.     P33 = !P33;
  21.         }
  22. }

  23. void main()
  24. {
  25.         IO_int();
  26.         Timer0_Init();
  27.     while (1);
  28.         {
  29. //        P33=flag;
  30.         }
  31. }
復(fù)制代碼
上面這樣寫是沒有問題的,然而我用一個flag標(biāo)志以下,中斷函數(shù)和while函數(shù)改成以下

  1. void TM0_Isr() interrupt 1
  2. {
  3.         static unsigned int T0Count;
  4.         T0Count++;
  5.         if(T0Count>=1000)
  6.         {
  7.                 T0Count=0;
  8.     flag = !flag;//改這里
  9.         }
  10. }

  11. void main()
  12. {
  13.         IO_int();
  14.         Timer0_Init();
  15.     while (1);
  16.         {
  17.         P33=flag;//改這里
  18.         }
  19. }
復(fù)制代碼
為啥就不行了?燈不亮,位變量不能取反嗎?




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

使用道具 舉報

沙發(fā)
ID:1069585 發(fā)表于 2023-4-2 23:16 | 只看該作者
flag沒賦初始值
回復(fù)

使用道具 舉報

板凳
ID:624769 發(fā)表于 2023-4-2 23:20 | 只看該作者
while(1)  后面的  分號 去掉
回復(fù)

使用道具 舉報

地板
ID:161164 發(fā)表于 2023-4-2 23:36 | 只看該作者

回復(fù)

使用道具 舉報

5#
ID:1069548 發(fā)表于 2023-4-3 00:23 來自觸屏版 | 只看該作者
去反符號是~不是!
回復(fù)

使用道具 舉報

6#
ID:235200 發(fā)表于 2023-4-3 00:52 | 只看該作者
肯定可以取反的,問題不是出在位變量取反上
回復(fù)

使用道具 舉報

7#
ID:688692 發(fā)表于 2023-4-3 08:57 | 只看該作者
我估計是你沒有初始化IO口,IO口的模式不能驅(qū)動LED。
回復(fù)

使用道具 舉報

8#
ID:1069659 發(fā)表于 2023-4-3 15:22 | 只看該作者
while(1)  后面不該有;吧
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表