找回密码
 注册会员
搜索附件  

timer.rar

 

帮忙看一下时钟定时问题:
附件里面有程序和proteus仿真图,运行即可看到现象,用来显示hour的十位不正常,程序中有注明是哪段程序,把那段程序去掉显示就正常了,如果加上那段,点击运行秒不动,等一会儿才懂,走过几秒就又停止了,就是那段程序干扰了整个循环,还请帮忙看看怎么修改;还有就是是不是用proteus仿真定时不准,还是我的代码有问题,大概走1分钟会慢下来9秒

复制代码
  1. #include"reg51.h" //包含reg51.h头文件
  2. #define uchar unsigned char //宏定义
  3. #define uint unsigned int //宏定义
  4. sbit led1=P1^0; //定义LED连接关系
  5. sbit led2=P1^1;
  6. sbit w1=P2^0; //时-十位
  7. sbit w2=P2^1; //时-各位
  8. sbit w3=P2^2; //分-十位
  9. sbit w4=P2^3; //分-个位
  10. sbit w5=P2^4; //秒-十位
  11. sbit w6=P2^5; //秒-个位
  12. uchar sec,min,hour,num; //定义变量
  13. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阳极字码表
  14. void delay(uint ims) //延时子函数
  15. {
  16. uint i,j;
  17. for(i=ims;i>0;i--) //ims为多少就是多少ms
  18. for(j=110;j>0;j--);
  19. }
  20. void main() //主函数
  21. {
  22. TMOD=0x01; //设置为定时器0工作方式1定时器1工作方式1
  23. TH0=(65536-45872)/256; //装入定时初值
  24. TL0=(65536-45872)%256;
  25. EA=1; //开总中断
  26. ET0=1; //开定时器0中断
  27. TR0=1; //开定时器0
  28. while(1) //大循环
  29. {
  30. P0=table[sec%10];
  31. w6=0; //秒-个位
  32. delay(10);
  33. w6=1;
  34. P0=table[sec/10];
  35. w5=0; //秒-十位
  36. delay(10);
  37. w5=1;
  38. P0=table[min%10];
  39. w4=0; //分-个位
  40. delay(10);
  41. w4=1;
  42. P0=table[min/10];
  43. w3=0; //分-十位
  44. delay(10);
  45. w3=1;
  46. P0=table[hour%10];
  47. w2=0; //时-个位
  48. delay(10);
  49. w2=1;
  50. /************这段程序有问题**************/
  51. P0=table[hour/10];
  52. w1=0; //时-十位
  53. delay(10); //问题可能就是这个延时破坏了循环,请高手指教
  54. w1=1;
  55. /***************************************/
  56. if(num==20)
  57. {
  58. num=0;
  59. led1=~led1;
  60. led2=~led2;
  61. if(sec<59)
  62. sec++;
  63. else
  64. {
  65. sec=0;
  66. if(min<59)
  67. min++;
  68. else
  69. {
  70. min=0;
  71. if(hour<11)
  72. hour++;
  73. else
  74. hour=0;
  75. }
  76. }
  77. }
  78. }
  79. }
  80. void timer0()interrupt 1
  81. {
  82. TH0=(65536-45872)/256;
  83. TL0=(65536-45872)%256;
  84. num++;
  85. }
复制代码
[ 此贴被role_2099在2009-04-23 19:17重新编辑 ]


QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-23 11:08 , Processed in 0.035382 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

返回顶部