完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一开始,我们还是用最简单的案例来最为入门练手,那就是我们嵌入式编程的注明LED闪灯和流水灯。闪灯和流水灯试验,最能够让初学者感受高电平和低电平在端口输出的效果。这里我还加了一个逻辑显示探针在LED灯前,以便初学的你能够感受更清晰。
效果如下图: 代码如下: #include #include #include #include #include #define uint unsigned int int main() { uint b=0; DDRD=0xFF; DDRB=0xFF; // Write your code here while (1) { PORTB=0x01< PORTD^=_BV(PD0); _delay_ms(150); if(++b==8) b=0; } return 0; } 这里要交代的是,我们必须首先配置好WINAVR编译器,这里我使用的是WINAVR2010版本,蛮好用的。 说明: 1、<< 左移位操作符号,如0x01<<1,翻译成二进制则为 0b00000001,执行一次则左移一次,变为0b00000010,再一次就是0b00000100,如此类推,8次就回到了原位了,实现了循环。我们这里采用的是在0x01的基础上直接移b个位,即b取值多少则移位多少位。 2、_BV PORTD^=_BV(PD0); 这句是用来控制PD0管脚上的LED闪烁的。_BV是通过宏定义来实现的,原型为#define _BV(n) 1< |
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2955 浏览 16 评论
3455 浏览 1 评论
8987 浏览 16 评论
4050 浏览 18 评论
1102浏览 3评论
570浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
568浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2301浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1857浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 06:34 , Processed in 1.215646 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号