找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2426|回复: 0
收起左侧

求助:自己编程的微波炉定时器显示异常如何解决?

[复制链接]
ID:61954 发表于 2016-2-3 19:09 | 显示全部楼层 |阅读模式
自己编的微波炉定时程序(正计时)有显示数字突然加速现象。不知问题出在哪里?如何修改?学C51时间不长,恳请达人帮忙。PROTEUS仿真文件在压缩文件内,下载到实际硬件内也有同样问题。
#include <REG52.H>
#define uint unsigned int
#define uchar unsigned char
//#define datport P0
//#define wx P2

#define datport P0
#define wx P2

sbit relay=P1^0;
sbit star=P3^2;
sbit off=P3^3;
sbit keyUP=P3^7;
sbit keyDOWN=P3^6;
uchar i;
uchar num=0;
char code SEGTAB[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void delayms(int xms)
{int i,j;
for(i=xms;i>0;i--)
        for(j=120;j>0;j--);
}

void my_t0()interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
num++;
}

void my_int0()interrupt 0
{
if(star==0)
{delayms(20);
        if(star==0)
while(!star);
TR0=1;
relay=0;

//while(!star);
}}

void my_int1()interrupt 2
{
if(off==0)
{delayms(20);
        if(off==0)
while(!off);
TR0=0;
relay=1;
//while(!star);
}}

void main()
{uchar cnt, sec=0,min=0;          
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
ET0=1;
PT0=1;
EA=1;
TR0=0;
EX0=1;
EX1=1;
IT1=0;
IT0=0;
while(1)
{
  if(keyUP==0)     //如果S1键按下
                  {
                          delayms(20);  //延时一段时间
                          if(keyUP==0) //如果再次检测到S1键按下
                          {
                          cnt++;
                          while(!keyUP);
                          if(cnt==10)
                          cnt=0;
                          }}

                 if(keyDOWN==0)     //如果S1键按下
                  {
                          delayms(20);  //延时一段时间
                          if(keyDOWN==0) //如果再次检测到S1键按下
                          {
                          cnt--;
                          while(!keyDOWN);
                          if(cnt==0)
                          cnt=10;
                          }}

if(num==20)
        {
        //min--;
        //sec=59;
        sec++;
        //min--;
        num=0;
        if(sec==60)
        {min++;
        sec=0;

        if(min==9||min==cnt)
        {sec=0;
//        if(min==0&&sec==0)
//        {
        TR0=0;
        relay=1;
         }}}

wx=0xfe;
datport=SEGTAB[sec%10];
delayms(4);
wx=0xff;

wx=0xfd;
datport=SEGTAB[sec/10%10];
delayms(4);
wx=0xff;

wx=0xfb;
datport=SEGTAB[min%10];
delayms(4);
wx=0xff;

wx=0xf7;
//datport=SEGTAB[min/10%10];
datport=SEGTAB[cnt%10];
delayms(4);
wx=0xff;
} }






微波炉定时器.rar

51.57 KB, 下载次数: 5, 下载积分: 黑币 -5

微波炉定时器

微波炉定时器.rar

51.57 KB, 下载次数: 5, 下载积分: 黑币 -5

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表