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

QQ登錄

只需一步,快速開始

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

STC15W408AS 89C52單片機(jī)定時(shí)器2的中斷問(wèn)題

[復(fù)制鏈接]
ID:472235 發(fā)表于 2020-1-4 20:40 | 顯示全部樓層 |閱讀模式
按照配置寫定時(shí)器2中斷程序,但是就是不行???是哪里出問(wèn)題了嗎?????#include "reg52.h"
#include "intrins.h"

sfr AUXR  = 0x8e;
sfr T2H   = 0xd6;
sfr T2L   = 0xd7;
sfr IE2    = 0xaf;

sbit led1 = P1^7;
sbit led2 = P1^6;
sbit led3 = P1^5;
sbit led4 = P1^4;



void Timer2Init(void)                //70毫秒@11.0592MHz
{
        EA = 1;
        IE2 = 0x04;
        AUXR &= 0xfb;                //定時(shí)器時(shí)鐘12T模式
        T2L = 0x48;                //設(shè)置定時(shí)初值
        T2H = 0xff;                //設(shè)置定時(shí)初值
        AUXR |= 0x10;                //定時(shí)器2開始計(jì)時(shí)
        
}



void main(){
        while(1){
                Timer2Init();
                led2 = ~led2;
                while(1);
        }
}


void Timer2Inter() interrupt 12{        //定時(shí)器2中斷
        led4 = ~led4;
        Delay500ms();
}



5bbf2368ebea4a6b501b1f558a4637c.jpg


回復(fù)

使用道具 舉報(bào)

ID:65956 發(fā)表于 2020-1-5 09:00 | 顯示全部樓層
void Timer2Inter() interrupt 12{        //定時(shí)器2中斷         led4 = ~led4;         Delay500ms(); }這里面加了Delay500ms()這個(gè)當(dāng)然有問(wèn)題了,中斷里作事時(shí)間越短越好,改用置標(biāo)志位方式,然后要作的事情放在主函數(shù)里去作
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2020-1-5 11:01 | 顯示全部樓層
給你改一下,你試試。
  1. #include "reg52.h"
  2. #include "intrins.h"

  3. sfr AUXR  = 0x8e;
  4. sfr T2H   = 0xd6;
  5. sfr T2L   = 0xd7;
  6. sfr IE2   = 0xaf;

  7. sbit led1 = P1^7;
  8. sbit led2 = P1^6;
  9. sbit led3 = P1^5;
  10. sbit led4 = P1^4;


  11. void Timer2Init()        //50毫秒@11.0592MHz
  12. {
  13.         AUXR &= 0xfb;        //定時(shí)器時(shí)鐘12T模式
  14.         T2L = 0x00;                //設(shè)置定時(shí)初值
  15.         T2H = 0x4C;                //設(shè)置定時(shí)初值
  16.         AUXR |= 0x10;        //定時(shí)器2開始計(jì)時(shí)
  17.         EA=1;                                //開總中斷
  18.         IE2 |=0x04;    //允許T2中斷
  19. }

  20. void main()
  21. {
  22.         Timer2Init();
  23.         led2 = ~led2;
  24.         while(1);
  25. }

  26. void Timer2Inter() interrupt 12//定時(shí)器2中斷
  27. {   
  28.         static unsigned char i=0;
  29.         i++;
  30.         if(i>=10)//500ms
  31.         {
  32.                 i=0;
  33.                 led4 = ~led4;
  34. //                Delay500ms();
  35.         }
  36. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:472235 發(fā)表于 2020-1-5 11:47 | 顯示全部樓層
aking991 發(fā)表于 2020-1-5 09:00
void Timer2Inter() interrupt 12{        //定時(shí)器2中斷         led4 = ~led4;         Delay500ms(); } ...

這樣???還是不行,所有燈都沒(méi)亮

#include "reg52.h"

sfr IE2       = 0xaf;               //中斷使能寄存器2
sfr AUXR      = 0x8e;               //輔助寄存器
sfr T2H       = 0xD6;               //定時(shí)器2高8位
sfr T2L       = 0xD7;               //定時(shí)器2低8位

sbit led1 = P1^7;
sbit led2 = P1^6;
sbit led3 = P1^5;
sbit led4 = P1^4;

unsigned char flag = 0;

/*-------------------------------------
  定時(shí)器2初始化,時(shí)鐘12T、16位重載模式
--------------------------------------*/
void Timer2Init()                                        //200微秒@11.0592MHz
{
        AUXR &= 0xFB;                                        //定時(shí)器時(shí)鐘12T模式
        T2L = 0x48;                                                //設(shè)置定時(shí)初值
        T2H = 0xFF;                                                //設(shè)置定時(shí)初值
        AUXR |= 0x10;                                        //定時(shí)器2開始計(jì)時(shí)
        IE2 |=0x04;                                            //允許中斷
        EA=1;                                                        //開總中斷
}
/*------------------------------
   定時(shí)器2中斷服務(wù)程序  
-------------------------------*/
void timer2() interrupt 12
{
                flag = 1;
                led1 = ~led1;
}

void main(){

                Timer2Init();
                while(1){
                        if(flag == 1){
                                led2 = ~led2;
                        }
                        Delay500ms();
                }
       
}
回復(fù)

使用道具 舉報(bào)

ID:472235 發(fā)表于 2020-1-5 11:47 | 顯示全部樓層
wulin 發(fā)表于 2020-1-5 11:01
給你改一下,你試試。

還是不行。。。所有燈都沒(méi)亮
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2020-1-5 15:56 | 顯示全部樓層
121212121212123 發(fā)表于 2020-1-5 11:47
還是不行。。。所有燈都沒(méi)亮

任何程序都是在硬件基礎(chǔ)上編寫的。你這學(xué)習(xí)板沒(méi)有接觸過(guò),不知其硬件結(jié)構(gòu)。圖中表明有兩片不同型號(hào)單片機(jī),STC89C52RC/STC15W408AS,LED與其連接關(guān)系不搞清怎么判斷程序運(yùn)行狀態(tài)?
回復(fù)

使用道具 舉報(bào)

ID:398709 發(fā)表于 2020-1-5 20:49 | 顯示全部樓層
有電路圖嗎
回復(fù)

使用道具 舉報(bào)

ID:472235 發(fā)表于 2020-1-6 16:01 | 顯示全部樓層
wulin 發(fā)表于 2020-1-5 15:56
任何程序都是在硬件基礎(chǔ)上編寫的。你這學(xué)習(xí)板沒(méi)有接觸過(guò),不知其硬件結(jié)構(gòu)。圖中表明有兩片不同型號(hào)單片機(jī) ...

謝謝大佬,把問(wèn)題搞清楚了,開發(fā)板上我一直都在寫入c52芯片里
回復(fù)

使用道具 舉報(bào)

ID:472235 發(fā)表于 2020-1-6 16:01 | 顯示全部樓層

問(wèn)題解決了,開發(fā)板一直寫入到C52芯片,沒(méi)有寫入STC15W408AS
回復(fù)

使用道具 舉報(bào)

ID:130230 發(fā)表于 2020-1-8 11:45 | 顯示全部樓層
首先看看手冊(cè)這個(gè)型號(hào)有沒(méi)有定時(shí)器2。我之前用過(guò)一個(gè)stc的單片機(jī)居然沒(méi)有定時(shí)器1。。。但是又定時(shí)器2你說(shuō)坑不坑
回復(fù)

使用道具 舉報(bào)

ID:753989 發(fā)表于 2021-4-2 10:06 | 顯示全部樓層
兄嘚兒,我們買的同一款學(xué)習(xí)板
回復(fù)

使用道具 舉報(bào)

ID:746422 發(fā)表于 2021-4-4 20:00 | 顯示全部樓層
程序不是這樣寫的,既然用了定時(shí)器了,還用什么Delay500ms()?這樣會(huì)占用cpu的資源。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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