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

QQ登錄

只需一步,快速開始

搜索
查看: 2841|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)定時(shí)器0,串口中斷中斷有沖突咋辦?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:302293 發(fā)表于 2023-6-13 16:04 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
   51開啟定時(shí)器0,串口中斷,有沖突,怎么解決?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:789121 發(fā)表于 2023-6-13 16:12 | 只看該作者
我記得是有優(yōu)先級(jí)的吧
回復(fù)

使用道具 舉報(bào)

板凳
ID:94031 發(fā)表于 2023-6-13 16:24 | 只看該作者
具體要看什么沖突,中斷處理時(shí)間要短,不然會(huì)影響響應(yīng)別的中斷。
回復(fù)

使用道具 舉報(bào)

地板
ID:1080935 發(fā)表于 2023-6-13 16:30 | 只看該作者
有優(yōu)先級(jí)的,串口自然優(yōu)先級(jí)最低,可以通過(guò)寄存器設(shè)置變高,根據(jù)需要設(shè)置優(yōu)先級(jí)。另外中斷中處理的程序盡可能的少。
回復(fù)

使用道具 舉報(bào)

5#
ID:302293 發(fā)表于 2023-6-13 16:44 | 只看該作者
LaoYuTou 發(fā)表于 2023-6-13 16:30
有優(yōu)先級(jí)的,串口自然優(yōu)先級(jí)最低,可以通過(guò)寄存器設(shè)置變高,根據(jù)需要設(shè)置優(yōu)先級(jí)。另外中斷中處理的程序盡可 ...

定時(shí)亮滅LED,串口發(fā)射數(shù)據(jù),按鍵按下定時(shí)器就停止了,是什么問(wèn)題?
回復(fù)

使用道具 舉報(bào)

6#
ID:155507 發(fā)表于 2023-6-13 16:59 | 只看該作者
sr861126 發(fā)表于 2023-6-13 16:44
定時(shí)亮滅LED,串口發(fā)射數(shù)據(jù),按鍵按下定時(shí)器就停止了,是什么問(wèn)題?

你的程序有問(wèn)題。

把你的代碼、錯(cuò)誤或提示發(fā)上來(lái),大家才能幫你,不然就是你猜我猜大家猜了。。。
回復(fù)

使用道具 舉報(bào)

7#
ID:1083855 發(fā)表于 2023-6-13 18:03 | 只看該作者
看看優(yōu)先級(jí)和外部是否有統(tǒng)計(jì)程序進(jìn)行
回復(fù)

使用道具 舉報(bào)

8#
ID:517951 發(fā)表于 2023-6-14 07:46 | 只看該作者
串口的波特率降低一點(diǎn), 不要那么快進(jìn)串口中斷. time0的中斷優(yōu)先級(jí)高于串口中斷,優(yōu)先處理定時(shí)器的任務(wù).
回復(fù)

使用道具 舉報(bào)

9#
ID:302293 發(fā)表于 2023-6-14 07:47 | 只看該作者
angmall 發(fā)表于 2023-6-13 16:59
你的程序有問(wèn)題。

把你的代碼、錯(cuò)誤或提示發(fā)上來(lái),大家才能幫你,不然就是你猜我猜大家猜了。。。

/********************************************************************
* 文件名  : 獨(dú)立按鍵.c
* 描述    :  該程序?qū)崿F(xiàn)獨(dú)立按鍵去控制 LED燈 的亮滅,并講訴了對(duì)按鍵的處理方法。
                         獨(dú)立按鍵相應(yīng)的IO口平時(shí)為高電平,一旦按鍵按下,單片機(jī)便檢測(cè)到低電平。
                         按下P3.2,P0.0口對(duì)應(yīng)的LED亮滅交替變化。
                         按下P3.3,P0.1口對(duì)應(yīng)的LED亮滅交替變化。
                         按下P3.4,P0.2口對(duì)應(yīng)的LED亮滅交替變化。
* 創(chuàng)建人  : 東流,2009年8月27日
* 版本號(hào)  : 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()
* 功能 : 延時(shí),延時(shí)時(shí)間為 10ms * del
* 輸入 : del
* 輸出 : 無(wú)
***********************************************************************/
void Delay(uint del)
{
        uint i,j;
        for(i=0; i<del; i++)
        for(j=0; j<1827; j++);   

}

/********************************************************************
* 名稱 : Delay()
* 功能 : 實(shí)現(xiàn)按鍵功能,當(dāng)按鍵按下時(shí),相應(yīng)的LED亮滅交替
* 輸入 : 無(wú)
* 輸出 : 無(wú)
***********************************************************************/
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);                        //延時(shí)0.5秒再進(jìn)行下次按鍵的檢測(cè)
        }       
}

/*------------------------------------------------
                    串口初始化
------------------------------------------------*/
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位定時(shí)器,使用"|"符號(hào)可以在使用多個(gè)定時(shí)器時(shí)不受影響
TH0=0x0c;              //給定初值,這里使用定時(shí)器最大值從0開始計(jì)數(shù)一直到65535溢出
TL0=0x0c;
ET0=1;           //定時(shí)器中斷打開
TR0=1;           //定時(shí)器開關(guān)打開
EA=1;            //總中斷打開
}
void timer1(void) interrupt 1
  {
   
     TH0=0x00;                  //重新賦值
     TL0=0x00;                  

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


}


/********************************************************************
* 名稱 : Main()
* 功能 : 實(shí)現(xiàn)按鍵控制LED的亮滅
* 輸入 : 無(wú)
* 輸出 : 無(wú)
***********************************************************************/
void Main(void)
{
        Init_Timer1();
        InitUART();
        while(1)
        {
                 KEY();
        }
}
回復(fù)

使用道具 舉報(bào)

10#
ID:87000 發(fā)表于 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???
回復(fù)

使用道具 舉報(bào)

11#
ID:123289 發(fā)表于 2023-6-14 16:10 | 只看該作者
當(dāng)你有了時(shí)序觀念,并且真正地理解中斷及其響應(yīng)條件、方式后,就不會(huì)問(wèn)這個(gè)問(wèn)題了。
回復(fù)

使用道具 舉報(bào)

12#
ID:624769 發(fā)表于 2023-6-14 19:42 | 只看該作者
sr861126 發(fā)表于 2023-6-14 07:47
/********************************************************************
* 文件名  : 獨(dú)立按鍵.c
*  ...

你串口的中斷函數(shù)呢?? 開了中斷,沒(méi)有函數(shù),不跑飛就是奇跡。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表