|
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封裝
Capture.PNG (74.21 KB, 下載次數(shù): 66)
下載附件
2019-12-6 12:21 上傳
單片機(jī)源程序如下:
- #include<reg51.h>
- #include<intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- sfr INTCLKO = 0x8F; // 外部中斷
- sfr IE2 = 0xAF; //中斷使能寄存器2
- sfr AUXR = 0x8E; //輔助寄存器
- sfr P5 = 0xC8; //xxxx,1111 端口5
- sbit LVP2=P1^0; //高電平開(kāi),低電平關(guān)
- sbit LVP3=P1^1; //高電平開(kāi),低電平關(guān)
- sbit SW3=P1^2; //撥碼開(kāi)關(guān)3
- sbit SW2=P1^3; //撥碼開(kāi)關(guān)2
- sbit SW1=P1^4; //撥碼開(kāi)關(guān)1
- sbit OCP3=P1^5; //高電平開(kāi),低電平關(guān)
- sbit OCP2=P1^6; //高電平開(kāi),低電平關(guān)
- sbit OCP1=P1^7; //高電平開(kāi),低電平關(guān)
- sbit AN1=P3^0; // AN1 啟動(dòng)/多功能按鍵
- sbit AN2=P3^1; // AN2 停止/多功能按鍵
- sbit OCP=P3^2; // 過(guò)流保護(hù)輸入,正常高電平,過(guò)流低電平
- sbit OTP=P3^3; // 過(guò)溫保護(hù)輸入,正常高電平,過(guò)溫低電平
- sbit CMPO=P3^4; //低壓比較器輸出:正常高電平,低壓低電平
- sbit OY=P3^5; //功率回路開(kāi)關(guān)
- sbit LVP1=P3^6; // 高電平開(kāi),低電平關(guān)
- sbit CMPN=P3^7; // 比較器正相輸入
- sbit LED=P5^4; //LED指示燈 :1亮,0滅。
- sbit SVP=P5^5; // 節(jié)能控制,OP電源開(kāi)關(guān) :高電平開(kāi)
- uchar num,calt1;
- void delayms(uint xms) //xms
- {
- uint i,j,m;
- for(i=xms;i>0;i--)
- for(j=50;j>0;j--) //10.1ms
- for(m=100;m>0;m--);
- }
- void init123() //初始化函數(shù)
- {
- TMOD=0x01; //設(shè)置定時(shí)器0為工作方式1(M1M0為0000 0001即01)
- TH0=(65536-50000)/256; //50ms
- TL0=(65536-50000)%256;
- TR0 = 1; //啟動(dòng)定時(shí)器0
- ET0 = 1; //打開(kāi)定時(shí)器0
- //IT0=0; //外部中斷0,1為跳變沿觸發(fā)方式 ,0為低電平觸發(fā)。
- //EX0=1; //開(kāi)外部中斷0
- IT1=0; //外部中斷1,1為跳變沿觸發(fā)方式 ,0為低電平觸發(fā)。
- EX1=1; //開(kāi)外部中斷1
-
- //INTCLKO = 0x10; //EX2=1; // 打開(kāi)外部中斷2
- //INTCLKO = 0x20; //EX3=1; // 打開(kāi)外部中斷3
- INTCLKO = 0x40; //EX4=1; // 打開(kāi)外部中斷4
- //INTCLKO = 0x70; //234
-
- OY=0;
- LED=0;
- SVP=1;
- EA=1; //開(kāi)總中斷
- }
- void main()
- {
- init123();
- delayms(1);
- while(1)
- {
- if(AN2==0)
- {
- LED=1;
- }
- else
- {
- LED=0;
- num=0;
- }
- }
- }
- void INT1_time() interrupt 2 //外部中斷1
- {
- LED=1;
- }
- void INT4_time() interrupt 16 //外部中斷4 ,下降沿觸發(fā)
- {
- LED=1;
- }
- void T0_time() interrupt 1 //T0
- {
- num++;
- }
復(fù)制代碼
|
|