3554|5

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

单片机设计流水灯 [复制链接]

刚刚学习单片机,老师留得作业使用ATmega16设计流水灯,A B C D 四口从低位向高位依次点亮,然后从高位向低位依次熄灭。如果只用一个口 PORTA 我会,但是不知道怎样写四个的

最新回复

具体主函数楼主参考我的代码自己修改下吧: #include #define uchar unsigned char #define uint  unsigned int void delay(uint ticks); void main() { init_devices(); while(1) {   PORTB^=0x02;//把IO口取反   delay(5000); } } void delay(uint ticks) { uchar i; while(ticks--)for(i=100;i!=0;i--);//约0.1mS }复制代码  详情 回复 发表于 2010-3-16 22:30
点赞 关注

回复
举报

78

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
按照PORTA的方式同样操作PORTB,PORTC,PORTD。
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
用个循环。里面依次执行ABCD口的单独流水灯不就行了嘛,随便问下,你们学校有学开avr的可啊?以前我都在只学了51的
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

4
 
回一楼:我觉得这样做挺长的,我们老师曾让我们看了下他的程序,很简单,没有那么多循环....不过我忘了他怎么做的
回二楼:我们直接学的ATmega128,没有学51
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

5
 
给你下代码吧,

  1. #include
  2. #include

  3. void port_init(void)
  4. {
  5. PORTA = 0x00;
  6. DDRA  = 0x00;
  7. PORTB = 0x00;
  8. DDRB  = 0x02;
  9. PORTC = 0x00; //m103 output only
  10. DDRC  = 0x00;
  11. PORTD = 0x00;
  12. DDRD  = 0x00;
  13. }

  14. //call this routine to initialize all peripherals
  15. void init_devices(void)
  16. {
  17. //stop errant interrupts until set up
  18. CLI(); //disable all interrupts
  19. port_init();

  20. MCUCR = 0x00;
  21. GICR  = 0x00;
  22. TIMSK = 0x00; //timer interrupt sources
  23. SEI(); //re-enable interrupts
  24. //all peripherals are now initialized
  25. }
复制代码


 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

6
 
具体主函数楼主参考我的代码自己修改下吧:

  1. #include
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. void delay(uint ticks);
  5. void main()
  6. {
  7. init_devices();
  8. while(1)
  9. {
  10.   PORTB^=0x02;//把IO口取反
  11.   delay(5000);
  12. }
  13. }

  14. void delay(uint ticks)
  15. {
  16. uchar i;
  17. while(ticks--)for(i=100;i!=0;i--);//约0.1mS
  18. }
复制代码
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表