欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機中斷方波關于外部輸入最高頻率的疑問
[打印本頁]
作者:
song未央
時間:
2018-7-29 16:16
標題:
單片機中斷方波關于外部輸入最高頻率的疑問
這個程序一開始是運行之后數碼管只能加到01,之前也發(fā)了一貼關于這個函數錯誤問題,后來自己瞎琢磨,感覺沒啥問題,最開始我設置的T1定時器初始值是(65536-50000)只能加到01,現(xiàn)在初始值改到(65536-500)數碼管可以加到99了,但是加一次的時間很長,正好看到書上有關于外部輸入計數脈沖的頻率有限定,且計數一次兩個機器周期才能檢測到一次,晶振頻率是12MHz,那么最高就是500KHz,我這個脈沖65.036ms出現(xiàn),頻率大約為15Hz,并沒有超出范圍啊,難道是占空比的問題?需要保持高電平大于一個機器周期?求大佬解決一下,如果真的是占空比的問題,加_nop_(),是不是就可以了?
#include<reg52.h>
#define uchar unsigned char
#define unit unsigned int
uchar num,num2;
unit count;
uchar code table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
sbit IS=P3^4;
sbit led0=P1^0;
sbit dula=P2^6;
sbit wela=P2^7;
/*************************
延遲函數
**************************/
void delayms(unit ms)
{
unit i,j;
for(i=ms;i>0;i--)
for(j=110;j>0;j--);
}
/*************************
初始化函數
*************************/
void init()
{
TMOD=0x15;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
TH0=0xff;
TL0=0xff;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
}
/*************************
數碼管顯示函數
*************************/
void display(uchar shi,uchar ge)
{
P0=0x00;
dula=1;
dula=0;
P0=table[shi];
dula=1;
dula=0;
P0=0xfe;
wela=1;
wela=0;
delayms(5);
P0=0x00;
dula=1;
dula=0;
P0=table[ge];
dula=1;
dula=0;
P0=0xfd;
wela=1;
wela=0;
delayms(5);
}
/**************************
主函數
**************************/
void main()
{
init();
while(1)
{
IS=led0;
display(num/10,num%10);
}
}
/***************************
定時器中斷函數
***************************/
void ser()interrupt 1
{
num++;
TH0=0xff;
TL0=0xff;
}
void ser1()interrupt 3
{
TH1=(65536-500)/256;
TL1=(65536-500)%256;
num2++;
if(num2==10)
{
led0=~led0;
}
}
復制代碼
作者:
song未央
時間:
2018-7-29 16:18
本帖最后由 song未央 于 2018-7-29 17:10 編輯
還有這個初值為(65536-500)時數碼管變化很快是怎么回事呢?明明溢出時間都變長了,求大佬解答一下以上我的疑惑
作者:
song未央
時間:
2018-7-29 17:11
抱歉之前這里打錯了是(65536-500)初值時變化很快
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1