Atmel Studio中LED点亮代码昨日正常今日报错求助(附代码)
Atmel Studio中C语言LED程序报错求助
我是编程新手,昨天用C语言编写了一个简单的LED点亮程序,在Atmel Studio中能正常运行,但今天出现了报错。报错内容如下:
错误:从'int'转换为'uint8_t'可能会改变结果的符号
PORTB |= 0b0000100;
^
我的代码:
#define F_CPU 1600000UL #include <avr/io.h> #include <util/delay.h> int main(void) { DDRB=0xFF; while (1) { PORTB |= 0b0000100; } }
我在网上找了很久都没找到解决办法,恳请各位帮忙,谢谢。
解决办法
- 将代码中的
0b0000100替换为0x04(十六进制无符号8位整数),或者显式转换为uint8_t类型:(uint8_t)0b0000100,即可消除编译器的类型转换报错。 - 额外提示:当前代码没有延时逻辑,LED会保持常亮状态。如果需要实现闪烁效果,可在
PORTB |= 0x04;后添加_delay_ms(500);,再添加PORTB &= ~0x04;和_delay_ms(500);。
内容的提问来源于stack exchange,提问作者Darren
相关产品推荐
相关产品推荐

