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

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

QQ登錄

只需一步,快速開(kāi)始

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

小白求助:STC8F1K08S2單片機(jī)無(wú)法進(jìn)入外部中斷

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
AN1分別接外部中斷4管腳(P3.0)和地,AN2分別接P3.1和地之間。上面的測(cè)試程序是按下AN1或者AN2,LED都會(huì)亮,實(shí)際上只有按下AN2燈會(huì)亮,按下AN1燈不亮,也就是沒(méi)有進(jìn)入中斷。其他的外部中斷也試了,也是沒(méi)有進(jìn)入中斷。在15W系列上用都沒(méi)有問(wèn)題,8F系列第一次用,PDF好像也沒(méi)看到需要特別注意的地方。搞了大半天了,也沒(méi)看出來(lái)哪里問(wèn)題。請(qǐng)求大佬們指點(diǎn)一下,不勝感激!
STC8F1K08S2   TSSOP-20封裝



單片機(jī)源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char

  5. sfr INTCLKO = 0x8F;         //          外部中斷
  6. sfr IE2       = 0xAF;               //中斷使能寄存器2
  7. sfr AUXR      = 0x8E;               //輔助寄存器

  8. sfr P5 = 0xC8;   //xxxx,1111 端口5
  9. sbit LVP2=P1^0;         //高電平開(kāi),低電平關(guān)
  10. sbit LVP3=P1^1;         //高電平開(kāi),低電平關(guān)
  11. sbit SW3=P1^2;           //撥碼開(kāi)關(guān)3   
  12. sbit SW2=P1^3;           //撥碼開(kāi)關(guān)2         
  13. sbit SW1=P1^4;           //撥碼開(kāi)關(guān)1
  14. sbit OCP3=P1^5;          //高電平開(kāi),低電平關(guān)
  15. sbit OCP2=P1^6;          //高電平開(kāi),低電平關(guān)
  16. sbit OCP1=P1^7;          //高電平開(kāi),低電平關(guān)
  17. sbit AN1=P3^0;                  // AN1 啟動(dòng)/多功能按鍵
  18. sbit AN2=P3^1;                  // AN2 停止/多功能按鍵
  19. sbit OCP=P3^2;                 //        過(guò)流保護(hù)輸入,正常高電平,過(guò)流低電平  
  20. sbit OTP=P3^3;                  // 過(guò)溫保護(hù)輸入,正常高電平,過(guò)溫低電平        
  21. sbit CMPO=P3^4;                 //低壓比較器輸出:正常高電平,低壓低電平
  22. sbit OY=P3^5;              //功率回路開(kāi)關(guān)
  23. sbit LVP1=P3^6;            // 高電平開(kāi),低電平關(guān)         
  24. sbit CMPN=P3^7;            // 比較器正相輸入         
  25. sbit LED=P5^4;                 //LED指示燈 :1亮,0滅。  
  26. sbit SVP=P5^5;           // 節(jié)能控制,OP電源開(kāi)關(guān) :高電平開(kāi)
  27. uchar num,calt1;         

  28. void delayms(uint xms)          //xms
  29. {
  30.    uint i,j,m;                        
  31.    for(i=xms;i>0;i--)
  32.        for(j=50;j>0;j--)        //10.1ms
  33.               for(m=100;m>0;m--);        
  34. }

  35. void init123()   //初始化函數(shù)
  36. {
  37.    TMOD=0x01;  //設(shè)置定時(shí)器0為工作方式1(M1M0為0000 0001即01)
  38.    TH0=(65536-50000)/256;  //50ms
  39.    TL0=(65536-50000)%256;
  40.    TR0 = 1;      //啟動(dòng)定時(shí)器0
  41.    ET0 = 1;            //打開(kāi)定時(shí)器0

  42.    //IT0=0;    //外部中斷0,1為跳變沿觸發(fā)方式 ,0為低電平觸發(fā)。
  43.    //EX0=1;    //開(kāi)外部中斷0
  44.    IT1=0;    //外部中斷1,1為跳變沿觸發(fā)方式 ,0為低電平觸發(fā)。
  45.    EX1=1;    //開(kāi)外部中斷1
  46.         
  47.    //INTCLKO = 0x10; //EX2=1;         //         打開(kāi)外部中斷2
  48.    //INTCLKO = 0x20; //EX3=1;         //         打開(kāi)外部中斷3
  49.    INTCLKO = 0x40; //EX4=1;            //         打開(kāi)外部中斷4
  50.    //INTCLKO = 0x70;        //234
  51.                         
  52.     OY=0;
  53.     LED=0;                     
  54.     SVP=1;           

  55.    EA=1;         //開(kāi)總中斷
  56. }

  57. void main()
  58. {
  59.    init123();
  60.    delayms(1);
  61.          while(1)
  62.          {
  63.             if(AN2==0)
  64.                 {
  65.                    LED=1;
  66.                 }
  67.                 else
  68.                 {
  69.                    LED=0;
  70.                    num=0;
  71.                 }
  72.          }
  73. }

  74. void INT1_time() interrupt 2         //外部中斷1   
  75. {
  76.         LED=1;
  77. }

  78. void INT4_time() interrupt 16         //外部中斷4 ,下降沿觸發(fā)
  79. {
  80.         LED=1;
  81. }  

  82. void T0_time() interrupt 1         //T0
  83. {
  84.          num++;        
  85. }
復(fù)制代碼





分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:25310 發(fā)表于 2019-12-6 13:25 | 只看該作者
你那個(gè)中斷里面不處理自然看不到反應(yīng)了。比如LED取反啥的也好啊。

STC自己的范例為你參考:

#include "reg51.h"
#include "intrins.h"

sbit    P10         =   P1^0;
sbit    P11         =   P1^1;

void INT1_Isr() interrupt 2
{
    if (INT1)                                   //判斷上升沿和下降沿
    {
        P10 = !P10;                             //測(cè)試端口
    }
    else
    {
        P11 = !P11;                             //測(cè)試端口
    }
}

void main()
{
    IT1 = 0;                                    //使能INT1上升沿和下降沿中斷
    EX1 = 1;                                    //使能INT1中斷
    EA = 1;

    while (1);
}

回復(fù)

使用道具 舉報(bào)

板凳
ID:377210 發(fā)表于 2019-12-6 15:34 | 只看該作者
pcbboy 發(fā)表于 2019-12-6 13:25
你那個(gè)中斷里面不處理自然看不到反應(yīng)了。比如LED取反啥的也好啊。

STC自己的范例為你參考:

好的,我改一下看看
回復(fù)

使用道具 舉報(bào)

地板
ID:377210 發(fā)表于 2019-12-6 16:35 | 只看該作者
問(wèn)題解決了:其實(shí)并不是沒(méi)有進(jìn)入中斷,只是因?yàn)樗俣忍炝耍琇ED測(cè)試時(shí)肉眼看不出來(lái),實(shí)際已經(jīng)進(jìn)入中斷了的。8F系列速度確實(shí)比15W系列的快了,導(dǎo)致在15W系列上可以用的程序到8F系列卻用不了,
通過(guò)增加延時(shí)時(shí)間,或者在中斷服務(wù)程序里加個(gè)跳轉(zhuǎn)函數(shù)處理即可解決。 謝謝@pcbboy 的指點(diǎn)
回復(fù)

使用道具 舉報(bào)

5#
ID:644425 發(fā)表于 2020-4-11 22:24 來(lái)自手機(jī) | 只看該作者
你測(cè)試中斷,就要一個(gè)空的while(1); 在那里候著,啥事都讓中斷干,才行。你while里,只要an2沒(méi)有按下,就關(guān)燈,循環(huán)還那么快,中斷了都不知道。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕在线观看视频一区 | 国产一区二 | 91在线观看免费视频 | 中文字幕一区二区三区精彩视频 | 亚洲免费网站 | 午夜精品在线观看 | 久久只有精品 | 国产高清美女一级a毛片久久w | 成人在线网 | 久久小视频 | 久久免费国产 | 波多野结衣先锋影音 | 日韩精品一区二区三区视频播放 | 久久精品中文 | 欧美亚洲国产一区二区三区 | 中文字幕 在线观看 | 老司机67194精品线观看 | 日韩av免费看 | 国产精品一区二区三区在线 | 天天插天天操 | 一区二区在线免费观看 | 欧洲精品久久久久毛片完整版 | 91久久久久 | 中文字幕国产一区 | www国产成人免费观看视频,深夜成人网 | 羞羞视频网站 | www亚洲成人| 欧美精品在线一区二区三区 | 精品婷婷 | 草草草久久久 | 一区二区av| 国产一区电影 | www.99热这里只有精品 | 欧美精品在线视频 | 成人国产精品一级毛片视频毛片 | 一区二区三区亚洲 | www,黄色,com | 婷婷综合激情 | 成年人免费网站 | 精品国产91亚洲一区二区三区www | 欧美激情精品久久久久久免费 |