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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2806|回復: 11
收起左側

51單片機定時器0,串口中斷中斷有沖突咋辦?

[復制鏈接]
ID:302293 發表于 2023-6-13 16:04 | 顯示全部樓層 |閱讀模式
   51開啟定時器0,串口中斷,有沖突,怎么解決?
回復

使用道具 舉報

ID:789121 發表于 2023-6-13 16:12 | 顯示全部樓層
我記得是有優先級的吧
回復

使用道具 舉報

ID:94031 發表于 2023-6-13 16:24 | 顯示全部樓層
具體要看什么沖突,中斷處理時間要短,不然會影響響應別的中斷。
回復

使用道具 舉報

ID:1080935 發表于 2023-6-13 16:30 | 顯示全部樓層
有優先級的,串口自然優先級最低,可以通過寄存器設置變高,根據需要設置優先級。另外中斷中處理的程序盡可能的少。
回復

使用道具 舉報

ID:302293 發表于 2023-6-13 16:44 | 顯示全部樓層
LaoYuTou 發表于 2023-6-13 16:30
有優先級的,串口自然優先級最低,可以通過寄存器設置變高,根據需要設置優先級。另外中斷中處理的程序盡可 ...

定時亮滅LED,串口發射數據,按鍵按下定時器就停止了,是什么問題?
回復

使用道具 舉報

ID:155507 發表于 2023-6-13 16:59 | 顯示全部樓層
sr861126 發表于 2023-6-13 16:44
定時亮滅LED,串口發射數據,按鍵按下定時器就停止了,是什么問題?

你的程序有問題。

把你的代碼、錯誤或提示發上來,大家才能幫你,不然就是你猜我猜大家猜了。。。
回復

使用道具 舉報

ID:1083855 發表于 2023-6-13 18:03 | 顯示全部樓層
看看優先級和外部是否有統計程序進行
回復

使用道具 舉報

ID:517951 發表于 2023-6-14 07:46 | 顯示全部樓層
串口的波特率降低一點, 不要那么快進串口中斷. time0的中斷優先級高于串口中斷,優先處理定時器的任務.
回復

使用道具 舉報

ID:302293 發表于 2023-6-14 07:47 | 顯示全部樓層
angmall 發表于 2023-6-13 16:59
你的程序有問題。

把你的代碼、錯誤或提示發上來,大家才能幫你,不然就是你猜我猜大家猜了。。。

/********************************************************************
* 文件名  : 獨立按鍵.c
* 描述    :  該程序實現獨立按鍵去控制 LED燈 的亮滅,并講訴了對按鍵的處理方法。
                         獨立按鍵相應的IO口平時為高電平,一旦按鍵按下,單片機便檢測到低電平。
                         按下P3.2,P0.0口對應的LED亮滅交替變化。
                         按下P3.3,P0.1口對應的LED亮滅交替變化。
                         按下P3.4,P0.2口對應的LED亮滅交替變化。
* 創建人  : 東流,2009年8月27日
* 版本號  : 1.0
***********************************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
#define u8 unsigned char
#define u16 unsigned int
sbit KEY1 = P1^2;   
sbit KEY2 = P1^3;
sbit KEY3 = P1^4;
sbit LED1 = P0^0;
sbit LED2 = P0^1;
sbit LED3 = P0^2;
sfr P4 =0Xe8;
sbit P4_0 = P4^0;
static u16        count;  
char cost;       


void KEY();
/********************************************************************
* 名稱 : Delay()
* 功能 : 延時,延時時間為 10ms * del
* 輸入 : del
* 輸出 : 無
***********************************************************************/
void Delay(uint del)
{
        uint i,j;
        for(i=0; i<del; i++)
        for(j=0; j<1827; j++);   

}

/********************************************************************
* 名稱 : Delay()
* 功能 : 實現按鍵功能,當按鍵按下時,相應的LED亮滅交替
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
void KEY()
{

//        Delay(2);         
        if(KEY1==0 || KEY2==0 || KEY3==0)       
        {
                Delay(5);                            //20毫秒軟件防抖
                if(KEY1 == 0)
                {
                Delay(5);
               
//        while(!KEY1);       
                 P4_0  = 0 ;                //LED顯示取反
                         Delay(1);           
                 ++cost;             SBUF= cost;       
        while(!TI);TI=0;
       
                }
                       

if(KEY2 == 0)
                {                       
                P4_0 = 1;
                --cost;
                         SBUF= cost;
                           while(!TI);TI=0;
                }
                else
                {                       
                        LED3 = !LED3;
                }
                Delay(50);                        //延時0.5秒再進行下次按鍵的檢測
        }       
}

/*------------------------------------------------
                    串口初始化
------------------------------------------------*/
void InitUART  (void)
{

    SCON  = 0x50;                        // SCON: 模式 1, 8-bit UART, 使能接收  
//              // TMOD: timer 1, mode 2, 8-bit 重裝
    TMOD |= 0x21;    //T1方式2、T0方式1
        TH1   = 0xFD;               // TH1:  重裝值 9600 波特率 晶振 11.0592MHz  
    TL1 = 0xFD;      //波特率
        TR1   = 1;                  // TR1:  timer 1 打開                        
    IE |= 0x92;      //開啟中斷
        EA    = 1;                  //打開總中斷
    ES    = 1;                  //打開串口中斷
}                           
void Init_Timer1(void)
{
TMOD |= 0x01;          //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響
TH0=0x0c;              //給定初值,這里使用定時器最大值從0開始計數一直到65535溢出
TL0=0x0c;
ET0=1;           //定時器中斷打開
TR0=1;           //定時器開關打開
EA=1;            //總中斷打開
}
void timer1(void) interrupt 1
  {
   
     TH0=0x00;                  //重新賦值
     TL0=0x00;                  

     if(count>10)
         {
         
            count=0;
                  P4_0 =!P4_0 ;
         }
count++;


}


/********************************************************************
* 名稱 : Main()
* 功能 : 實現按鍵控制LED的亮滅
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
void Main(void)
{
        Init_Timer1();
        InitUART();
        while(1)
        {
                 KEY();
        }
}
回復

使用道具 舉報

ID:87000 發表于 2023-6-14 09:04 | 顯示全部樓層
void timer1(void) interrupt 1
  {
   
     TH0=0x00;                  //重新賦值
     TL0=0x00;                  

     if(count>10)
         {
         
            count=0;
                  P4_0 =!P4_0 ;
         }
count++;


}
你確定重新賦值為0???
回復

使用道具 舉報

ID:123289 發表于 2023-6-14 16:10 | 顯示全部樓層
當你有了時序觀念,并且真正地理解中斷及其響應條件、方式后,就不會問這個問題了。
回復

使用道具 舉報

ID:624769 發表于 2023-6-14 19:42 | 顯示全部樓層
sr861126 發表于 2023-6-14 07:47
/********************************************************************
* 文件名  : 獨立按鍵.c
*  ...

你串口的中斷函數呢?? 開了中斷,沒有函數,不跑飛就是奇跡。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区不卡视频 | 亚洲成av人片在线观看无码 | 欧美一区二区三区免费电影 | 一级毛片在线视频 | 久在线 | 国产99久久精品一区二区永久免费 | 亚洲精品久久 | 日韩精品成人网 | 欧美电影免费观看 | 天天干天天爱天天操 | 国产男女精品 | 古装人性做爰av网站 | jav成人av免费播放 | 99视频免费播放 | 日韩欧美一级精品久久 | 欧美天堂 | 毛片免费视频 | 日韩精品一区二区三区在线观看 | 久精品视频 | 国产精品精品视频一区二区三区 | 一区二区免费在线视频 | 国产香蕉视频 | 国产精品久久久久久久久久久免费看 | 中文字幕在线观看日韩 | 亚洲一区二区三区免费观看 | 亚洲成人av | 日本天堂一区二区 | 999免费观看视频 | 日本久久综合网 | 亚洲激情一区二区三区 | av在线伊人 | 91高清视频在线观看 | 亚洲欧美日韩一区 | 国产精品久久亚洲 | 午夜视频在线观看一区二区 | 精品真实国产乱文在线 | 蜜臀久久 | 久久国产精品视频 | 精品日韩一区 | 国产精品夜间视频香蕉 | 成人国产精品久久久 |