单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:4013|回复:1

AVR_点亮LED程序

[复制链接]
ID:80436发表于 2015-5-22 01:11|显示全部楼层
//++++++++++++++++++++++++++++++++++
很纠结的用ICC AVR写了个程序。调试通过,木有仿真下载线。貌似挺贵,
穷人家的孩子买不起。钻研下做个AVR ISP还是比较靠谱,加油!
+++++++++++++++++++++++++++++++++++//
#include< iom16v.h>
#include< macros.h>
#define  uchar unsigned char
#define  uint  unsigned int
void delay(uint ms)
{
   uint i,j;
for(i=0;i<ms;i++)
   {
   for(j=0;j<1141;j++);
     }
}
void main()
{
   uchar k;
   DDRA|=BIT(2);
   PORTA|=BIT(2);//我表示AVR的位操作比51单片机更加复杂,|运算是关键
  
   DDRB=0XFF;
   PORTB=0XFF;
   while(1)
   {
   for(k=0;k<8;k++) //for语句
   {
   PORTB&=~BIT(k);//取反操作
   delay(500);//延时500ms
  
   PORTB|=BIT(k);
   delay(500);
   }
   }
}//我靠!写完了。滚床睡觉,很晚了, 明天是该死的体育考试,oh my god

ID:80436发表于 2015-5-22 01:17|显示全部楼层
  1. #include< iom16.h>

  2. #include< macros.h>


  3. /* This seems to produce the right amount of delay for the LED to be

  4. * seen

  5. */

  6. void Delay()

  7. {

  8. unsigned char a, b;


  9. for (a = 1; a; a++)

  10. for (b = 1; b; b++)

  11. ;

  12. }


  13. void LED_On(int i)

  14. {

  15. PORTB = ~BIT(i);     /* low output to turn LED on */

  16. Delay();

  17. }


  18. void main()

  19. {

  20. int i;

  21. DDRB = 0xFF;     /* output */

  22. PORTB = 0xFF;     /* all off */


  23. while (1)

  24. {

  25. /* forward march */

  26. for (i = 0; i< 8; i++)

  27. LED_On(i);

  28. /* backward march */

  29. for (i = 8; i > 0; i--)

  30. LED_On(i);

  31. /* skip */

  32. for (i = 0; i< 8; i += 2)

  33. LED_On(i);

  34. for (i = 7; i > 0; i -= 2)

  35. LED_On(i);

  36. }

  37. }
复制代码


手机版|小黑屋|51黑电子论坛|51黑电子论坛6群QQ管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网