打印
[PIC®/AVR®/dsPIC®产品]

发一个AVR点灯的程序

[复制链接]
619|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xuanhuanzi|  楼主 | 2019-10-17 15:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <avr/io.h>
#include <util/delay.h>

int main(void) {

#if defined (__AVR_ATmega128__)

        DDRA = 0xFF;

        while (1) {
                PORTA = 0x00;
                _delay_ms(1000);
                PORTA = 0xFF;
                _delay_ms(1000);
        }
#elif __AVR_ATmega328P__

        DDRB = 0xFF;

        while(1) {
                PORTB = 0x00;
                _delay_ms(1000);
                PORTB = 0xFF;
                _delay_ms(1000);
        }
#endif
        return 0;
}


使用特权

评论回复
沙发
xuanhuanzi|  楼主 | 2019-10-17 15:38 | 只看该作者
这是一个棒子写的,我看他这个方法挺不错,通过预编译指令区分不同的内核时候,采用不同的程序。

使用特权

评论回复
板凳
xuanhuanzi|  楼主 | 2019-10-17 15:39 | 只看该作者
#include <avr/io.h>
#include <util/delay.h>

//#define sbi(sfr, bit) _SFR_BYTE(sfr) |= _BV(bit)
//#define cbi(sfr, bit) _SFR_BYTE(sfr) &= ~_BV(bit)

int main(void) {
        sbi(DDRB, PB5);

        while (1) {
                sbi(PORTB, PB5);
                _delay_ms(1000);
                cbi(PORTB, PB5);
                _delay_ms(1000);
        }
        return 0;
}

使用特权

评论回复
地板
xuanhuanzi|  楼主 | 2019-10-17 15:39 | 只看该作者
#include <avr/io.h>
#include <util/delay.h>

int main(void) {
       

        DDRB |= 0x01;
       
        while (1) {
                 
                PORTB |= 0x01;

                _delay_ms(1000);

                PORTB &= ~0x01;
                _delay_ms(1000);
        }
        return 0;
}

使用特权

评论回复
5
wanduzi| | 2019-10-17 16:33 | 只看该作者
这方法可以,学习学习。

使用特权

评论回复
6
wiba| | 2019-11-13 12:57 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
7
zljiu| | 2019-11-13 13:05 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
8
coshi| | 2019-11-13 13:12 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
9
yuguangkuo| | 2019-11-14 12:57 | 只看该作者
Delay居然可以直接这样用,学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

171

主题

2169

帖子

3

粉丝