标题: 89s52定时器怎么不行 [打印本页]

作者: hanwu1206    时间: 2012-2-24 22:33
标题: 89s52定时器怎么不行

我想用定时器定时数码管每隔1s显示0——9

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a,s1;
uchar code s[10]={0xc0,0xf9,0xa4,0xb0,
     0x99,0x92,0x82,0xf8,
       0x80,0x90,};


void main(){
 TMOD=0x05;
 EA=1;
 ET0=1;
 TR0=1;
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
  if(a==20){  
  a=0;
  P2=0xfe;
  for(s1=0;s1<10;s1++) {
   P0=s[s1];
  s1=s1++; 
  if(s1==10)
  s1=0;
}} } 

void dsq() interrupt 1{
  a=a++;  }
 
  
  

 

  

 


作者: chalcegood    时间: 2012-2-26 12:17

1.你的是使用定时器计数方式,最好是改成中断方式;

2.中断程序中应当重装初值;

3.判断是不是到了一秒的时间的程序最好也放到中断程序里;

4.主程序进行显示,建议用个while语句就行。






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1