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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6124|回復: 4
打印 上一主題 下一主題
收起左側

小白求助:STC8F1K08S2單片機無法進入外部中斷

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



單片機源程序如下:
  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;         //高電平開,低電平關
  10. sbit LVP3=P1^1;         //高電平開,低電平關
  11. sbit SW3=P1^2;           //撥碼開關3   
  12. sbit SW2=P1^3;           //撥碼開關2         
  13. sbit SW1=P1^4;           //撥碼開關1
  14. sbit OCP3=P1^5;          //高電平開,低電平關
  15. sbit OCP2=P1^6;          //高電平開,低電平關
  16. sbit OCP1=P1^7;          //高電平開,低電平關
  17. sbit AN1=P3^0;                  // AN1 啟動/多功能按鍵
  18. sbit AN2=P3^1;                  // AN2 停止/多功能按鍵
  19. sbit OCP=P3^2;                 //        過流保護輸入,正常高電平,過流低電平  
  20. sbit OTP=P3^3;                  // 過溫保護輸入,正常高電平,過溫低電平        
  21. sbit CMPO=P3^4;                 //低壓比較器輸出:正常高電平,低壓低電平
  22. sbit OY=P3^5;              //功率回路開關
  23. sbit LVP1=P3^6;            // 高電平開,低電平關         
  24. sbit CMPN=P3^7;            // 比較器正相輸入         
  25. sbit LED=P5^4;                 //LED指示燈 :1亮,0滅。  
  26. sbit SVP=P5^5;           // 節能控制,OP電源開關 :高電平開
  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()   //初始化函數
  36. {
  37.    TMOD=0x01;  //設置定時器0為工作方式1(M1M0為0000 0001即01)
  38.    TH0=(65536-50000)/256;  //50ms
  39.    TL0=(65536-50000)%256;
  40.    TR0 = 1;      //啟動定時器0
  41.    ET0 = 1;            //打開定時器0

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

  55.    EA=1;         //開總中斷
  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 ,下降沿觸發
  79. {
  80.         LED=1;
  81. }  

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





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

使用道具 舉報

沙發
ID:25310 發表于 2019-12-6 13:25 | 只看該作者
你那個中斷里面不處理自然看不到反應了。比如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;                             //測試端口
    }
    else
    {
        P11 = !P11;                             //測試端口
    }
}

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

    while (1);
}

回復

使用道具 舉報

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

STC自己的范例為你參考:

好的,我改一下看看
回復

使用道具 舉報

地板
ID:377210 發表于 2019-12-6 16:35 | 只看該作者
問題解決了:其實并不是沒有進入中斷,只是因為速度太快了,LED測試時肉眼看不出來,實際已經進入中斷了的。8F系列速度確實比15W系列的快了,導致在15W系列上可以用的程序到8F系列卻用不了,
通過增加延時時間,或者在中斷服務程序里加個跳轉函數處理即可解決。 謝謝@pcbboy 的指點
回復

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: www.性色| 九九热在线免费观看 | 综合色站导航 | 日本不卡一区 | 一区二区三区影院 | 亚洲精品一区二区三区 | 神马九九 | 精品毛片 | 成人午夜视频在线观看 | 欧美激情综合 | 成人久久久久 | 人成在线视频 | 国产精品久久久久久一区二区三区 | 视频一区二区中文字幕 | 91成人影院 | 亚洲第一av | 精品无码久久久久久国产 | www操操| 中文字幕视频在线 | 日韩和的一区二区 | 国产小视频在线观看 | 91资源在线| 北条麻妃一区二区三区在线视频 | 国产精品成人一区二区三区 | 国产综合精品一区二区三区 | 国产最新视频在线 | 国产精品观看 | 狠狠操在线 | 国产激情偷乱视频一区二区三区 | 日本三级全黄三级三级三级口周 | 日韩精品视频一区二区三区 | 欧美一级全黄 | 欧美色综合 | 黄色一级视频免费 | 亚洲免费观看视频网站 | 亚洲精品久久久蜜桃网站 | 久色视频在线 | 亚洲精品视频在线播放 | 国产精品久久久久久久久 | 91午夜在线| 亚洲成人av |