[Atmel] 用AtmelStudio6.2跑mega16例程(36)T0控制环型流水灯

[复制链接]
 楼主| ddllxxrr 发表于 2014-10-20 21:55 | 显示全部楼层 |阅读模式
本帖最后由 ddllxxrr 于 2014-10-21 08:17 编辑

本例是通过查询方式来实现循环显示,while循环检测定时/计数器中断标志寄存器TIFR的最低位TOV0是否为1,在溢出时TOV0被置位,通过写1可将其清零.
PROTEUS仿真:

Studio6.2截图:


程序:
  1. /*
  2. * GccApplication22.c
  3. *
  4. * Created: 2014-10-20 21:27:55
  5. *  Author: Administrator
  6. */
  7. #define F_CPU 4000000UL
  8. #include <avr/io.h>
  9. #include <stdint.h>

  10. uint16_t Pattern = 0xFFFE;

  11. int main(void)
  12. {
  13.     DDRC = 0xFF;DDRD = 0xFF;
  14.         PORTC = 0xFF;PORTD = 0xFF;
  15.         TCCR0 = 0x05;  //预分频1024
  16.         TCNT0 = 256 - F_CPU/1024.0*0.05; //晶振4MHz,0.05 s
  17.         
  18.         while(1)
  19.     {
  20.         while(!(TIFR&_BV(TOV0)));
  21.                 TIFR = _BV(TOV0);  //通过对TOV0写1实现软件清零
  22.                
  23.                 TCNT0 = 256 - F_CPU/1024.0*0.05;
  24.                
  25.                 PORTC = (uint8_t)Pattern;
  26.                 PORTD = (uint8_t)(Pattern>>8);
  27.                
  28.                 Pattern = Pattern << 1 | 0x001;
  29.                 if(Pattern == 0xFFFF) Pattern = 0xFFFE;
  30.     }
  31. }


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
yklstudent 发表于 2014-10-21 09:14 | 显示全部楼层
版主真是用心良苦,这么卖力的宣传AVR与GCC。
只可惜好久不高AVR了,不过还是挺喜欢使用AVRGCC编译器的
 楼主| ddllxxrr 发表于 2014-10-21 12:12 | 显示全部楼层
yklstudent 发表于 2014-10-21 09:14
版主真是用心良苦,这么卖力的宣传AVR与GCC。
只可惜好久不高AVR了,不过还是挺喜欢使用AVRGCC编译器的
...

恩,楼上用PIC????
yklstudent 发表于 2014-10-21 12:16 | 显示全部楼层
ddllxxrr 发表于 2014-10-21 12:12
恩,楼上用PIC????

恩,目前一直主要使用PIC
 楼主| ddllxxrr 发表于 2014-10-21 14:09 | 显示全部楼层
yklstudent 发表于 2014-10-21 12:16
恩,目前一直主要使用PIC

:handshake
车彦锋 发表于 2014-10-21 14:22 | 显示全部楼层
qinjunfa 发表于 2014-10-21 16:16 | 显示全部楼层
我们用Atmel8的
 楼主| ddllxxrr 发表于 2014-10-21 21:24 | 显示全部楼层
qinjunfa 发表于 2014-10-21 16:16
我们用Atmel8的

差不多一样地,只不过FLASH小些
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2403

主题

6994

帖子

68

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