[PIC®/AVR®/dsPIC®产品] 发一个AVR点灯的程序

[复制链接]
810|8
 楼主| xuanhuanzi 发表于 2019-10-17 15:38 | 显示全部楼层 |阅读模式
  1. #include <avr/io.h>
  2. #include <util/delay.h>

  3. int main(void) {

  4. #if defined (__AVR_ATmega128__)

  5.         DDRA = 0xFF;

  6.         while (1) {
  7.                 PORTA = 0x00;
  8.                 _delay_ms(1000);
  9.                 PORTA = 0xFF;
  10.                 _delay_ms(1000);
  11.         }
  12. #elif __AVR_ATmega328P__

  13.         DDRB = 0xFF;

  14.         while(1) {
  15.                 PORTB = 0x00;
  16.                 _delay_ms(1000);
  17.                 PORTB = 0xFF;
  18.                 _delay_ms(1000);
  19.         }
  20. #endif
  21.         return 0;
  22. }


 楼主| xuanhuanzi 发表于 2019-10-17 15:38 | 显示全部楼层
这是一个棒子写的,我看他这个方法挺不错,通过预编译指令区分不同的内核时候,采用不同的程序。
 楼主| xuanhuanzi 发表于 2019-10-17 15:39 | 显示全部楼层
  1. #include <avr/io.h>
  2. #include <util/delay.h>

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

  5. int main(void) {
  6.         sbi(DDRB, PB5);

  7.         while (1) {
  8.                 sbi(PORTB, PB5);
  9.                 _delay_ms(1000);
  10.                 cbi(PORTB, PB5);
  11.                 _delay_ms(1000);
  12.         }
  13.         return 0;
  14. }
 楼主| xuanhuanzi 发表于 2019-10-17 15:39 | 显示全部楼层
  1. #include <avr/io.h>
  2. #include <util/delay.h>

  3. int main(void) {
  4.        

  5.         DDRB |= 0x01;
  6.        
  7.         while (1) {
  8.                  
  9.                 PORTB |= 0x01;

  10.                 _delay_ms(1000);

  11.                 PORTB &= ~0x01;
  12.                 _delay_ms(1000);
  13.         }
  14.         return 0;
  15. }
wanduzi 发表于 2019-10-17 16:33 | 显示全部楼层
这方法可以,学习学习。
wiba 发表于 2019-11-13 12:57 | 显示全部楼层
非常感谢楼主分享
zljiu 发表于 2019-11-13 13:05 | 显示全部楼层
非常感谢楼主分享
coshi 发表于 2019-11-13 13:12 | 显示全部楼层
非常感谢楼主分享
yuguangkuo 发表于 2019-11-14 12:57 | 显示全部楼层
Delay居然可以直接这样用,学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

183

主题

2331

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部