找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3099|回復: 0
收起左側

求助:自己編程的微波爐定時器顯示異常如何解決?

[復制鏈接]
ID:61954 發(fā)表于 2016-2-3 19:09 | 顯示全部樓層 |閱讀模式
自己編的微波爐定時程序(正計時)有顯示數(shù)字突然加速現(xiàn)象。不知問題出在哪里?如何修改?學C51時間不長,懇請達人幫忙。PROTEUS仿真文件在壓縮文件內(nèi),下載到實際硬件內(nèi)也有同樣問題。
#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, 下載次數(shù): 5, 下載積分: 黑幣 -5

微波爐定時器

微波爐定時器.rar

51.57 KB, 下載次數(shù): 5, 下載積分: 黑幣 -5

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表