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

標題: 一打開單片機定時器中斷數碼管就不顯示?附程序 [打印本頁]

作者: 范莉萍    時間: 2022-12-11 02:16
標題: 一打開單片機定時器中斷數碼管就不顯示?附程序
不打開定時器一切正常,求大佬提示!感謝!!


單片機源程序如下:
#include <reg51.h>
#include <stdio.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int

#define DU  P0

unsigned char  ledchar[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; // 0~9
uint Temp;

uint t;
uchar Flag_connect ; //掉線標志位
uint MAX6675_temp;
uint BJ_temp;                //報警值
uchar Flag_Bj;  //報警標志位

uint p;


sbit xz = P2^7;    //按鍵
sbit jia = P2^6;
sbit jian = P2^5;


sbit WEI_1 = P2^0 ;
sbit WEI_2 = P2^1 ;
sbit WEI_3 = P2^2 ;
sbit WEI_4 = P2^3 ;

sbit so = P1^5;
sbit sck = P1^6;
sbit cs = P1^7;

sbit baojing = P3^7;

sbit key1 = P2^5;
sbit key2 = P2^6;
sbit key3 = P2^7;
sbit baocun = P2^4;

sbit led = P3^0;


void xianshi(uint shuzhi);
void DelayMs(unsigned int i);
unsigned int MAX6675_Read();//讀溫度;
uint MAX6675_Oper();//溫度運算
void Timer_Init();//定時器0初始化
void shezhi();  //按鍵設置
void UartInit(void);//串口初始化
void SendDate(unsigned char dat);

uchar a;
void Timer0() interrupt 1
{
        a++;
        TH1 = (65536-50000)/256;
        TL1 = (65536-50000)%256;
        if(a >= 10){
                led =~ led;
                a = 0;
        }
               
}

void Start()
{
         DU = 0x00;
         WEI_1 = 1;
         WEI_2 = 1;
         WEI_3 = 1;
         WEI_4 = 1;        
                Flag_Bj = 0;        
}


void main(void)
{
        Start();
        Timer_Init();
        DelayMs(1000);
        baojing = 0;
        BJ_temp = 145;
        
   while (1){
           EA = 0;
           MAX6675_Oper();
           EA = 1;
           
           shezhi();
           
           if(MAX6675_temp >= BJ_temp ) //報警判斷
           {
                   baojing = 1;
                }else{baojing = 0;}

}
}

void xianshi(uint shuzhi){     //數碼管顯示函數,只顯示三位數
         uchar ge;
         uchar shi;
         uchar bai;
         ge = shuzhi%10;
         shi = (shuzhi/10)%10;
         bai = shuzhi/100;
         
         WEI_1 = 1;
         WEI_2 = 1;
         WEI_3 = 1;
         WEI_4 = 1;
         WEI_2 = 0;
         DU = ledchar[bai];
         DelayMs(3);
         WEI_1 = 1;
         WEI_2 = 1;
         WEI_3 = 1;
         WEI_4 = 1;
         WEI_3 = 0;
         DU = ledchar[shi];
         DelayMs(3);
         WEI_1 = 1;
         WEI_2 = 1;
         WEI_3 = 1;
         WEI_4 = 1;
         WEI_4 = 0;
         DU = ledchar[ge];         
         DelayMs(3);
         
}

void DelayMs(unsigned int i)        //一個延時函數,這個函數在11.0592M晶振下的延時時間大概為1ms
{
        unsigned int j,k;

        for(j=i; j>0; j--)
                for(k=114; k>0; k--);
}

unsigned int  MAX6675_Read(void)   //max6675讀十六位數值
{
        //EA = 0;
        
        uchar i;
        uint dat;
        i = 0;
        dat = 0;
        cs = 0;
        sck = 0;
        for(i = 0;i<16; i++)
        {
                sck = 1;
                dat = dat<<1;
                if(so == 1)
                        dat = dat|0x01;
                sck = 0;
        }
        cs = 1;
        
        return dat;
        //EA = 1;
}

uint MAX6675_Oper()
{
        
        t = MAX6675_Read();
        Flag_connect = t&0x04;
        Flag_connect = Flag_connect>>2;
        t = t<<1;
        t = t>>4;
        MAX6675_temp = t/4;
        
        if(Flag_connect==0 && Flag_Bj == 0){

                for(t = 0; t<200; t++)
                {
                        xianshi(MAX6675_temp);
                }
        }else {baojing = 1; xianshi(000);} //判斷是否掉線,掉線報警,并且顯示000
        
        //return MAX6675_temp;
}


void Timer_Init()
{
        EA = 1;
        ET1 = 1;
        TMOD = 0X10;
        TH1 = (65536-50000)/256;
        TL1 = (65536-50000)%256;
        TR1 = 1;
        a = 0;
}

void shezhi()
{
        if(key1 == 0)
        {
                DelayMs(10);
                if(key1 == 0)
                {
                        xianshi(BJ_temp);
                        Flag_Bj = 1;
                }
        }
        while(Flag_Bj == 1){xianshi(BJ_temp);
        if(key2 == 0)
        {
                DelayMs(10);
                if(key2 == 1){
                        BJ_temp++;
                        xianshi(BJ_temp);
                }
        }
        
        if(key3 == 0)
        {
                DelayMs(10);
                if(key3 == 1){
                        BJ_temp--;
                        xianshi(BJ_temp);
                }
        }

        if(baocun == 0)
        {
                DelayMs(10);
                if(baocun == 1){
                        Flag_Bj = 0;
                }
        }}        
}

void UartInit(void)                //9600bps@11.0592MHz
{
        SCON = 0x50;                //8位數據,可變波特率
        TMOD &= 0x0F;                //設置定時器模式
        TL1 = 0xE8;                //設置定時初始值
        TH1 = 0xFF;                //設置定時初始值
        ET1 = 0;                //禁止定時器%d中斷
        TR1 = 1;                //定時器1開始計時
}

void SendDate(unsigned char dat)//串口發送
{
      SBUF = dat;
      while(!TI);
      TI = 0;
}
作者: ytchfp163    時間: 2022-12-11 03:59
void SendDate(unsigned char dat)//串口發送
{
      SBUF = dat;
      while(!TI);
      TI = 0;
}
  “while(!TI);”中是否多了個“;”?
作者: 范莉萍    時間: 2022-12-11 11:23
ytchfp163 發表于 2022-12-11 03:59
void SendDate(unsigned char dat)//串口發送
{
      SBUF = dat;

沒有呀,等待ti
作者: 188610329    時間: 2022-12-11 14:58
你串口用  定時器1  ,  定時器又用定時器1??  中斷開的還是 定時器0!!!  

這不正常才是正常現象!!
作者: lyy197709    時間: 2022-12-12 08:52
去掉所有的DELAY 試一下.
作者: 1928257231    時間: 2022-12-29 18:39
定時器換一下 串口和中斷不能用一個定時器




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩精品一区二区三区四区 | 我要看黄色录像一级片 | 国产在线视频一区二区 | 蜜桃视频在线观看免费视频网站www | 中文字幕视频在线观看 | 男女爱爱福利视频 | 国产你懂的在线观看 | 成人精品一区二区 | 国产精品爱久久久久久久 | 亚洲成人99 | av一区二区三区 | 亚洲成人高清 | 亚洲美女天堂网 | 欧美视频在线看 | 天天综合网永久 | 99国产视频 | 涩爱av一区二区三区 | 国产精品久久亚洲7777 | 综合中文字幕 | 国产精品久久二区 | www97影院 | 色噜噜亚洲男人的天堂 | 91就要激情 | 91精品www | www.操.com | 国产精品1区 | 亚洲日韩中文字幕一区 | 91精品国产91久久久久久最新 | 精品国产乱码久久久久久88av | 日韩视频一区二区在线 | 成人二区三区 | 国产丝袜一区二区三区免费视频 | 亚洲综合一区二区三区 | 日本午夜在线视频 | 久久综合一区 | 免费久久精品视频 | 亚洲欧美一区二区三区国产精品 | av超碰 | 九九热在线免费视频 | 久久99网| 成年人黄色一级片 |