李鸿鸿 发表于 2012-12-1 15:38:12

请高手指教,定时器出了点问题

下载到单片机时,什么也不显示。不知是什么情况?请高手指教,小妹感激不尽
代码:#include<reg52.h>//STC89C52
#define uint unsigned int
#define uchar unsigned char
sbit v1=P1^1;
sbit v3=P1^3;
sbit v5=P1^5;
uint i,j,s;
uchar s1,s2;
uchar k1,k2,k3,k4;
uchar code a[]={0x02,0x9e,0x24,0x0c,0x98,
                0x48,0x40,0x1e,0x00,0x08};//0到9
void delay(uint x);        //延时
void xunhuan();                //4位数码管显示
void mian()
{
   TMOD=0x11; //设置定时器0,定时器1
   TH0=(65536-50000)/256; //装初值为12M晶振中断50ms
   TL0=(65536-50000)%256;
   TH1=(65536-50000)/256;
   TL1=(65536-50000)%256;
   EA=1;
   ET0=1;
   ET1=1;
   TR0=1;
   TR1=1;

   while(1) //扫描4位数码管
   {
      xunhuan();
   }
}
void xunhuan() //四位数码管动态显示
{
   P2=0x10;       //个位
   P0=a;
   delay(1);
   P0=0xff;

   P2=0x20;        //十位
   P0=a;
   delay(1);
   P0=0xff;

   P2=0x40;       //百位
   P0=a;
   delay(1);
   P0=0xff;

   P2=0x80;        //千位
   P0=a;
   delay(1);
   P0=0xff;
}
void ding1() interrupt 1   //定时器0的工作方式1
{
   TH0=(65536-50000)/256;//重装初值
   TL0=(65536-50000)%256;
   s1++;
   if(s1==4)//中断200ms
   {
      s1=0;
          v1=~v1;        //位取反
          v3=~v3;
          v5=~v5;
   }
}
void ding2() interrupt 3//定时器1的工作方式3
{
   TH1=(65536-50000)/256; //重装初值
   TL1=(65536-50000)%256;
   s2++;
   if(s2==20)//中断1s
   {
      s2=0;
          s++;
          if(s==6000) //计数到5999就回到0
          {
             s=0;
          }
          k1=s/1000;//千位
          k2=s%1000/100;        //百位
          k3=s%1000%100/10;        //十位
          k4=s%1000%100%10;        //个位
   }
}

void delay(uint x) //延时
{
for(i=x;i>0;i--)
   for(j=120;j>0;j--);
}
有三个警告:*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?MIAN?TEXT2
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:MAIN
    MODULE:C:\KEIL\C51\LIB\C51S.LIB (?C_INIT)
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:MAIN

dingshidong214 发表于 2012-12-1 18:01:41

小错误试试这个{:lol:}#include<reg52.h>//STC89C52
#define uint unsigned int
#define uchar unsigned char
sbit v1=P1^1;
sbit v3=P1^3;
sbit v5=P1^5;
uint i,j,s;
uchar s1,s2;
uchar k1,k2,k3,k4;
uchar code a[]={0x02,0x9e,0x24,0x0c,0x98,
                0x48,0x40,0x1e,0x00,0x08};//0到9
void delay(uint x);      //延时
void xunhuan();                //4位数码管显示
void main()       
{
   TMOD=0x11; //设置定时器0,定时器1
   TH0=(65536-50000)/256; //装初值为12M晶振中断50ms
   TL0=(65536-50000)%256;
   TH1=(65536-50000)/256;
   TL1=(65536-50000)%256;
   EA=1;
   ET0=1;
   ET1=1;
   TR0=1;
   TR1=1;

   while(1) //扫描4位数码管
   {
      xunhuan();
   }
}
void xunhuan() //四位数码管动态显示
{
   P2=0x10;         //个位
   P0=a;
   delay(1);
   P0=0xff;

   P2=0x20;      //十位
   P0=a;
   delay(1);
   P0=0xff;

   P2=0x40;         //百位
   P0=a;
   delay(1);
   P0=0xff;

   P2=0x80;      //千位
   P0=a;
   delay(1);
   P0=0xff;
}
void ding1() interrupt 1   //定时器0的工作方式1
{
   TH0=(65536-50000)/256;//重装初值
   TL0=(65536-50000)%256;
   s1++;
   if(s1==4)//中断200ms
   {
      s1=0;
          v1=~v1;      //位取反
          v3=~v3;
          v5=~v5;
   }
}
void ding2() interrupt 3//定时器1的工作方式3
{
   TH1=(65536-50000)/256; //重装初值
   TL1=(65536-50000)%256;
   s2++;
   if(s2==20)//中断1s
   {
      s2=0;
          s++;
          if(s==6000) //计数到5999就回到0
          {
             s=0;
          }
          k1=s/1000;//千位
          k2=s%1000/100;      //百位
          k3=s%1000%100/10;      //十位
          k4=s%1000%100%10;      //个位
   }
}

void delay(uint x) //延时
{
for(i=x;i>0;i--)
   for(j=120;j>0;j--);
}

李鸿鸿 发表于 2012-12-1 18:44:55

dingshidong214 发表于 2012-12-1 18:01 static/image/common/back.gif
小错误试试这个

高手!真的可以了,小妹感激不尽!奇怪了,是什么原因呢?我都看了好几篇了,一样啊

dingshidong214 发表于 2012-12-1 20:04:36

李鸿鸿 发表于 2012-12-1 18:44 static/image/common/back.gif
高手!真的可以了,小妹感激不尽!奇怪了,是什么原因呢?我都看了好几篇了,一样啊 ...

{:lol:} 你再仔细看看

Tliang 发表于 2012-12-2 00:21:49

•﹏•我是来看美女的

李鸿鸿 发表于 2012-12-2 11:50:30

dingshidong214 发表于 2012-12-1 20:04 static/image/common/back.gif
你再仔细看看

我看了十几次了,都一样啊!{:sweat:} ,什么情况啊

Tliang 发表于 2012-12-2 12:08:25

李鸿鸿 发表于 2012-12-2 11:50 static/image/common/back.gif
我看了十几次了,都一样啊! ,什么情况啊

楼主你的main 》 mian了

Tliang 发表于 2012-12-2 12:11:38

哎~还说女孩子比较细心。

dingshidong214 发表于 2012-12-2 15:20:04

李鸿鸿 发表于 2012-12-2 11:50 static/image/common/back.gif
我看了十几次了,都一样啊! ,什么情况啊

记忆深刻 永生难忘{:lol:}

酷爱diy 发表于 2012-12-2 15:44:22

女孩子搞单片机,表示崇敬{:handshake:},高单片机之前先学会C语言,搞起来会容易点;支持女孩搞单片机;LZ不错,为什么不用595串口移位芯片,省I/0口,方便

酷爱diy 发表于 2012-12-2 15:47:05

要是男女一起学就动力很大啊,学啥有劲{:titter:}

李鸿鸿 发表于 2012-12-2 16:03:25

原来是这样啊!{:tongue:} 多谢大家

酷爱diy 发表于 2012-12-2 16:07:02

我之前搞懂单片机内部硬件,编程遇到很多困难;所以现在在自学C语言程序设计;把这个搞懂了;单片机就自然的会了;LZ学单片机有多久了{:handshake:}

李鸿鸿 发表于 2012-12-2 16:13:03

酷爱diy 发表于 2012-12-2 15:44 static/image/common/back.gif
女孩子搞单片机,表示崇敬,高单片机之前先学会C语言,搞起来会容易点;支持女孩搞单片机;LZ ...

不会啊,正在学呢!

酷爱diy 发表于 2012-12-3 08:57:01

LZ学了多长时间了?程序写的很好{:lol:}
页: [1]
查看完整版本: 请高手指教,定时器出了点问题