標題:
請問單片機C語言位變量不能取反嗎?
[打印本頁]
作者:
mtt661
時間:
2023-4-2 22:48
標題:
請問單片機C語言位變量不能取反嗎?
P33接了個燈,低電平亮,然后用定時器0,每秒P33接口反轉一次,單片機STC8G1K
單片機C語言源程序如下:
bit flag;
void Timer0_Init(void) //1毫秒@12.000MHz
{
AUXR |= 0x80; //定時器時鐘1T模式
TMOD &= 0xF0; //設置定時器模式
TL0 = 0x20; //設置定時初始值
TH0 = 0xD1; //設置定時初始值
TF0 = 0; //清除TF0標志
TR0 = 1; //定時器0開始計時
ET0=1;
EA=1;
}
void TM0_Isr() interrupt 1
{
static unsigned int T0Count;
T0Count++;
if(T0Count>=1000)
{
T0Count=0;
P33 = !P33;
}
}
void main()
{
IO_int();
Timer0_Init();
while (1);
{
// P33=flag;
}
}
復制代碼
上面這樣寫是沒有問題的,然而我用一個flag標志以下,中斷函數和while函數改成以下
void TM0_Isr() interrupt 1
{
static unsigned int T0Count;
T0Count++;
if(T0Count>=1000)
{
T0Count=0;
flag = !flag;//改這里
}
}
void main()
{
IO_int();
Timer0_Init();
while (1);
{
P33=flag;//改這里
}
}
復制代碼
為啥就不行了?燈不亮,位變量不能取反嗎?
作者:
zoyou
時間:
2023-4-2 23:16
flag沒賦初始值
作者:
188610329
時間:
2023-4-2 23:20
while(1) 后面的 分號 去掉
作者:
lkc8210
時間:
2023-4-2 23:36
2023-04-02_233556.png
(16.61 KB, 下載次數: 19)
下載附件
2023-4-2 23:36 上傳
作者:
32小廢物
時間:
2023-4-3 00:23
去反符號是~不是!
作者:
csmyldl
時間:
2023-4-3 00:52
肯定可以取反的,問題不是出在位變量取反上
作者:
cnos
時間:
2023-4-3 08:57
我估計是你沒有初始化IO口,IO口的模式不能驅動LED。
作者:
雪糕yya
時間:
2023-4-3 15:22
while(1) 后面不該有;吧
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1