标题:
请问单片机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.51hei.com/bbs/)
Powered by Discuz! X3.1