久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1487|回復(fù): 1
收起左側(cè)

為什么我的單片機(jī)定時(shí)器不能實(shí)現(xiàn)倒計(jì)時(shí)?

[復(fù)制鏈接]
ID:889730 發(fā)表于 2021-3-8 21:47 | 顯示全部樓層 |閱讀模式
#include <REGX52.H>
#include "onewire.h"

sbit L1 = P0^0;
sbit L2 = P0^1;
sbit L3 = P0^2;

sbit key7 = P3^0;
sbit key6 = P3^1;
sbit key5 = P3^2;
sbit key4 = P3^3;

uint code Shu[] =
{0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,
0xbf,0xff, 0xc6};

void Delay(uint t);
void Init_hc573(uint sel);
void Init_set(void);
void DisplaySMG_Dat(uint pos, uint dat);
void DisplaySMG_all(void);
void DisplaySMG(void);
void keyscan(void);
void Init_Timer0(void);

uint yi = 11, er = 11, san = 11, si = 11, wu = 11, liu = 11, qi = 11,ba = 11;

uint display;
uint work;
uint motor;
uint sec = 50;
uint flag_5;
uint flag_7;
uint stop;
uint temperature;

uint count;
uint time;

void main()
{
        Init_Timer0();
        Init_set();
      
        while(1)
        {
               
                if(display == 0)
                {
                        if(work == 0)
                        {
                                if(sec > 0)
                                {
                                        Init_hc573(4);
                                  P0 = 0xff;
                                  L1 = 0;
                                }
                                else
                                {
                                        Init_hc573(4);
                                  P0 = 0xff;
                                }
                          yi = 10;er = work+1;san = 10;
                          si = 11;
                          wu = sec/1000;liu = sec%1000/100;
                          qi = sec%100/10;ba = sec&10;
                        }
                        else if(work == 1)
                        {
                                if(sec > 0)
                                {
                                        Init_hc573(4);
                                  P0 = 0xff;
                                  L2 = 0;
                                }
                                else
                                {
                                        Init_hc573(4);
                                  P0 = 0xff;
                                }
                              
                                yi = 10;er = work+1;san = 10;
                          si = 11;
                          wu = sec/1000;liu = sec%1000/100;
                          qi = sec%100/10;ba = sec&10;
                        }
                        else if(work == 2)
                        {
                                if(sec > 0)
                                {
                                        Init_hc573(4);
                                  P0 = 0xff;
                                  L3 = 0;
                                }
                                else
                                {
                                        Init_hc573(4);
                                  P0 = 0xff;
                                }
                              
                                yi = 10;er = work+1;san = 10;
                          si = 11;
                          wu = sec/1000;liu = sec%1000/100;
                          qi = sec%100/10;ba = sec&10;
                        }
                }
               
                else
                {
                        temperature = read_temperature();
                       
                        yi = 10;er = 4;san = 10;
                        si = 11;wu = 11;
                        liu = temperature/10;qi = temperature%10;ba = 12;
                }
               
                if(sec > 0)
                {
                        EA  = 1;
                        ET0 = 1;
                }
                else
                {
                        EA  = 0;
                        ET0 = 0;
                        Init_hc573(4);
                        P0 = 0xff;
                        motor = 0;
                        count = 0;
                }
                        keyscan();
                        DisplaySMG();
                }
}

void Delay(uint t)
{
        while(t --);
}

void Init_hc573(uint sel)
{
        switch(sel)
        {
                case 4:P2 = (P2 &0x1f)|0x80;break;
                case 5:P2 = (P2 &0x1f)|0xa0;break;
                case 6:P2 = (P2 &0x1f)|0xc0;break;
                case 7:P2 = (P2 &0x1f)|0xe0;break;
        }
}

void Init_set(void)
{
        Init_hc573(4);
        P0 = 0xff;
        Init_hc573(5);
        P0 = 0x00;
}

void DisplaySMG_Dat(uint pos, uint dat)
{
        Init_hc573(6);
        P0 = 0x01 << pos;
        Init_hc573(7);
        P0 = dat;
      
        Delay(100);
        P0 = 0xff;
}

void DisplaySMG_all(void)
{
        Init_hc573(6);
        P0 = 0xff;
        Init_hc573(7);
        P0 = 0xff;
}

void DisplaySMG(void)
{
        DisplaySMG_Dat(0, Shu[yi]);
        Delay(100);
        DisplaySMG_Dat(1, Shu[er]);
        Delay(100);
        DisplaySMG_Dat(2, Shu[san]);
        Delay(100);
        DisplaySMG_Dat(3, Shu[si]);
        Delay(100);
        DisplaySMG_Dat(4, Shu[wu]);
        Delay(100);
        DisplaySMG_Dat(5, Shu[liu]);
        Delay(100);
        DisplaySMG_Dat(6, Shu[qi]);
        Delay(100);
        DisplaySMG_Dat(7, Shu[ba]);
        Delay(100);
      
        DisplaySMG_all();
}

void keyscan(void)
{
        if(!key4)
        {
                Delay(200);
                if(!key4)
                {
                        if(!display)
                        {
                                work ++;
                          if(work == 3)
                          {
                                  work = 0;
                          }
                        }
                        while(!key4);
                }
        }
      
        if(!key5)
        {
                Delay(200);
                if(!key5)
                {
                        if(!display)
                        {
                                sec += 60;
                                flag_5 ++;
                                if(flag_5 == 2)
                                {
                                        sec = 0;
                                }
                        }
                        while(!key5);
                }
        }
      
        if(!key6)
        {
                Delay(200);
                if(!key6)
                {
                        if(!display)
                        {
                                Init_hc573(4);
                                P0 = 0xff;
                              
                                sec = 0;
                        }
                        while(!key6);
                }
        }
      
        if(!key7)
        {
                Delay(200);
                if(!key7)
                {
                        display = 1;
                        flag_7 ++;
                        if(flag_7 == 2)
                        {
                                flag_7 = 0;
                                display = 0;
                        }
                        while(!key7);
                }
        }
}

void Init_Timer0(void)
{
        TMOD = 0x01;
        TL0 = (65535-10)/256;               
        TH0 = (65535-10)%256;
//        EA =
//        ET0 =
        TR0 = 1;
}

void Service_Timer0(void) interrupt 1
{
        TL0 = (65535-10)/256;               
        TH0 = (65535-10)%256;
      
        count ++;
        if(work == 0)
        {
                if(count < 20)
                {
                        motor = 1;
                }
                else
                {
                        motor = 0;
                        count = 0;
                }
        }
        else if(work == 1)
        {
                if(count < 30)
                {
                        motor = 1;
                }
                else
                {
                        motor = 0;
                        count = 0;
                }
        }
        else if(work == 2)
        {
                if(count < 70)
                {
                        motor = 1;
                }
                else
                {
                        motor = 0;
                        count = 0;
                }
        }
      
        time ++;
        if(time == 100000 )
        {
                sec --;
                time = 0;
        }
      
}
回復(fù)

使用道具 舉報(bào)

ID:752974 發(fā)表于 2021-3-10 14:39 | 顯示全部樓層
不知道你這一堆代碼和你的問題有何聯(lián)系。51(52)單片機(jī)內(nèi)部的定時(shí)器在物理上就只是一個(gè)加計(jì)數(shù)器,是不能用軟件改變的。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文在线a在线 | 亚洲精品亚洲人成人网 | 在线成人av| 日韩有码一区二区三区 | 欧美一级三级在线观看 | 成人精品一区二区 | 国产小视频在线观看 | 国产精品久久久久久久久久了 | 精品国产不卡一区二区三区 | 国内精品久久久久久影视8 最新黄色在线观看 | 亚洲精品无 | 在线观看视频91 | 男人天堂国产 | 农村黄性色生活片 | 99热精品在线 | 操操操日日日 | 亚洲欧洲小视频 | 国产一区免费 | 日本久久久一区二区三区 | 一区二区在线观看av | 亚洲午夜一区二区 | 欧美一级淫片免费视频黄 | 作爱视频免费看 | 999久久久| 色综合欧美 | www久久国产 | 久久久久久久久久久国产 | www.久久久久久久久 | 国产高清在线观看 | 91久久久久久久久久久 | 国产一级片免费在线观看 | www.亚洲一区二区三区 | 国产一区二区 | 国产情侣在线看 | 国产欧美三区 | 欧美精品三区 | 亚洲不卡在线观看 | 国产精品久久久久久久久久久久午夜片 | 欧美www在线观看 | 欧美激情久久久 | 国产高清在线精品一区二区三区 |