4149|8

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于c51的时间问题! [复制链接]

看看下面的代码,为什么我把程序烧到单片机中之后,L1先亮,过半秒之后就L2,L3同时亮,然后一直都没有灭,为什么?


  1. #include

  2. sbit L1=P0^0; //L1,L3灯是10秒闪一次,L2是1秒闪一次,
  3. sbit L2=P0^1;//L1是有主函数的一个标记n控制的,L3直接由时间中断函数控制
  4. sbit L3=P0^2;//
  5. int y=1;
  6. int x=1;
  7. bit n=1;
  8. void main(void)
  9. {
  10. RCAP2H=0x3c;
  11. RCAP2L=0xb0;
  12. TR2=1;
  13. ET2=1;
  14. EA=1;
  15. while(1){
  16. if(n){

  17. L1=0;
  18. }else{
  19. L1=1;
  20. }
  21. }
  22. }


  23. PAN() interrupt 5 //在以TH1和TH2的时间开始循环,到溢出,执行函数一次!
  24. {
  25. y++;
  26. x++;
  27. if (y==200){
  28. L3=~L3;
  29. n=~n;
  30. y=1;
  31. }
  32. if (x==20){
  33. L2=~L2;
  34. x=1;
  35. }
  36. }

复制代码


谢谢大侠们!

最新回复

补充楼上一点:定时器0和1在查询方式下是必须要软件清0的,若是工作在中断方式下则硬件自动清0  详情 回复 发表于 2008-7-19 10:59
点赞 关注

回复
举报

84

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
我简化了一下,就单单每10秒闪一次的,

  1. #include

  2. sbit L1=P0^0;
  3. int y=1;
  4. bit n=1;
  5. void main(void)
  6. {
  7. RCAP2H=0x3c;
  8. RCAP2L=0xb0;
  9. TR2=1;
  10. ET2=1;
  11. EA=1;
  12. while(1){
  13. if(n){
  14. L1=0;
  15. }else{
  16. L1=1;
  17. }}}
  18. PAN() interrupt 5 //在以TH1和TH2的时间开始循环,到溢出,执行函数一次!
  19. {
  20. y++;
  21. if (y==200){//20次为1s,12Mhz的单片机!
  22. n=~n;
  23. y=1;
  24. }
  25. }
复制代码
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
你的 TIMER2工作在什么模式呀?没看到TMOD的配置。
还有,interrupt中断里面,最后要再次配置一次T2h/T2L的值,和在main()中的配置值一样就行。这样才能确保每次中断时间一样。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

4
 
我发现只要在中断函数中加入
TF2=0;
就OK?why
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

5
 
2楼的,能给点专门讲中断和时间的文章吗?
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

6
 
T2MOD可以用系统复位值,不用配置;但在中断里面必须加入指令“TF2=0”;
原因是,系统产生中断时,TF2不会自动清零,须由软件清零。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

7
 
那如果是定时器1的话就没有问题了吗?就不用加TF1=0吗??
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

8
 
定时器0和1,可以不用TF0=0,TF1=0,系统中断会自动将其清零.
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

9
 
补充楼上一点:定时器0和1在查询方式下是必须要软件清0的,若是工作在中断方式下则硬件自动清0
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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