www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] /**************************************************************************實(shí)驗(yàn)四(第二版):用 Atmega8 實(shí)現(xiàn)D觸發(fā)鎖存器的功能實(shí)現(xiàn)目的:1.管腳設(shè)定為輸入時(shí),了解如何可以編程設(shè)定上拉電阻。2.

/**************************************************************************
實(shí)驗(yàn)四(第二版):用 Atmega8 實(shí)現(xiàn)D觸發(fā)鎖存器的功能
實(shí)現(xiàn)目的:
1.管腳設(shè)定為輸入時(shí),了解如何可以編程設(shè)定上拉電阻。
2.如何使用軟件控制取樣頻率及時(shí)間,達(dá)到一定的抗干擾目的
3.為了讓程序運(yùn)行更穩(wěn)定,防止跑飛,如何使用看門狗?

By armok (2004-09-18) a13809260240@126.com
***************************************************************************/


#include //本實(shí)驗(yàn)使用Atmega8
#include

#define sapleing_way 2 //定義多少路采樣。最大值為8。PB為輸入,PD輸出。
#define sampling_times 20 //定義取樣的次數(shù),連續(xù)次數(shù)的取樣值相同,視為有效取樣。
#define sampling_interval 50 //定義每次取樣的時(shí)間間隔,單位 us.


typedef struct
{ unsigned int v_last; //上一次sampling_times個(gè)取樣值的結(jié)果
unsigned int v_current; //當(dāng)前sampling_times個(gè)取樣值的結(jié)果
unsigned int v[sampling_times]; //存放連續(xù)sampling_times次的取樣值
unsigned int v_temp; //存放比較的臨時(shí)值,為1時(shí)有效,0時(shí)無效
} inputStruct;

void delay_nus(unsigned int n); //延時(shí)函數(shù),單位 us.
void watchdog_init(void); //初始化watchdog函數(shù)
void port_init(void); //端口初始化函數(shù)
void main(void) //主函數(shù)
{
unsigned int i;
unsigned int j;
inputStruct pb_input[sapleing_way];

port_init(); //初始化端口
watchdog_init(); //初始化watchdog

while (1)
{
//以下的for循環(huán),將連續(xù)sampling_times次的取樣結(jié)果存放在相應(yīng)的數(shù)組里
for (i=0;i{
delay_nus(sampling_interval); //每隔sampling_interval取樣一次
for(j=0;j{
pb_input[j].v[i]=PINB&BIT(j);
}
}


//以下的for循環(huán),判斷連續(xù)sampling_times次的取樣結(jié)果是否有效
for(j=0;j {
for (i=1;i {
if (pb_input[j].v[i-1]==pb_input[j].v[i]) //如果sampling_times次取樣結(jié)果均相同,視為有效
pb_input[j].v_temp=1; //sampling_times次取樣有效的標(biāo)志
else //否則舍棄,不作處理。
{
pb_input[j].v_temp=0; //sampling_times次取樣無效,不作處理
break;
}
}

//以下的if判斷PB輸入的電平,與上一次取樣計(jì)算結(jié)果比較,判斷是否翻轉(zhuǎn)相應(yīng)的PD
if (pb_input[j].v_temp==1) //sampling_times次取樣有效,進(jìn)行以下判斷
{
if (pb_input[j].v[0]==0) //輸入為低電平
pb_input[j].v_current=0;
else
pb_input[j].v_current=1; //輸入為高電平
if (pb_input[j].v_last==1 && pb_input[j].v_current==0)//如果前十個(gè)取樣是高電平,現(xiàn)在十個(gè)是低電平,視為有效的動(dòng)作,執(zhí)行輸出
PORTD^=BIT(j);//將相應(yīng)的PD位翻轉(zhuǎn)
pb_input[j].v_last=pb_input[j].v_current; //將當(dāng)前結(jié)果傳給上一次結(jié)果,準(zhǔn)備下一次處理
}
} //end for

WDR(); //看門狗計(jì)數(shù)清零
} //end while
} // end main()


void delay_nus(unsigned int n)//n微秒延時(shí)函數(shù)
{
unsigned int i;
for (i=0;i {
asm("nop");
}
}

void port_init(void)
{
DDRB=0x00;//設(shè)置PB0-7為輸入
PORTB=0xFF; //與下一句同時(shí)起作用
SFIOR&=~BIT(2); //置SFIOR的PDU上拉電阻有效。與上一句一起生效。
DDRD=0xFF;//PD0-7為輸出
}

void watchdog_init(void)
{
WDR(); //看門狗計(jì)數(shù)清零
WDTCR=0x0F; //使能watchdog,并且,采用2048K分頻,典型溢出時(shí)間5V時(shí)2.1S
}


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

2025年08月29日,比利時(shí)泰森德洛·哈姆——全球微電子工程公司Melexis宣布,正式發(fā)布專為水平方向磁位置檢測(cè)而設(shè)計(jì),具備卓越的靜電防護(hù)(ESD)能力以及高輸出電流限制等特性的三線制霍爾效應(yīng)鎖存器MLX92211系...

關(guān)鍵字: 鎖存器 電機(jī) 自動(dòng)化

鎖存器是一種電平觸發(fā)的存儲(chǔ)單元,用于存儲(chǔ)單個(gè)比特的信息,其狀態(tài)由輸入信號(hào)的電平值決定。

關(guān)鍵字: 鎖存器

在數(shù)字電路設(shè)計(jì)中,Latch(鎖存器)與Register(寄存器)是兩種常見的存儲(chǔ)元件,它們?cè)诠δ芎蛯?shí)現(xiàn)上各有特點(diǎn),對(duì)電路的性能和穩(wěn)定性有著重要影響。本文將從行為描述、觸發(fā)機(jī)制、資源消耗、時(shí)序分析以及實(shí)際應(yīng)用等方面,深入...

關(guān)鍵字: Latch Register 數(shù)字電路 鎖存器

在實(shí)際的數(shù)字系統(tǒng)中,通常把能夠用來存儲(chǔ)一組二進(jìn)制代碼的同步時(shí)序邏輯電路稱為寄存器.由于觸發(fā)器內(nèi)有記憶功能,因此利用觸發(fā)器可以方便地構(gòu)成寄存器。

關(guān)鍵字: 鎖存器 Latch

美國新罕布什爾州曼徹斯特 - 運(yùn)動(dòng)控制和節(jié)能系統(tǒng)傳感技術(shù)和功率半導(dǎo)體解決方案的全球領(lǐng)導(dǎo)廠商Allegro MicroSystems(納斯達(dá)克股票代碼:ALGM)(以下簡(jiǎn)稱Allegro)在 Electronica 202...

關(guān)鍵字: 功率磁性開關(guān) 鎖存器 傳感器

鎖存允許端(LE)的作用。當(dāng)LE為高電平時(shí),輸出端(Q0至Q7)隨輸入數(shù)據(jù)端(D0至D7)的變化而變化。當(dāng)LE為低電平時(shí),輸出端被鎖存在已建立的數(shù)據(jù)電平,即使輸入數(shù)據(jù)端發(fā)生變化,輸出端的電平也不會(huì)改變。

關(guān)鍵字: 74ls373 鎖存器 觸發(fā)器

在現(xiàn)代電子技術(shù)領(lǐng)域,集成電路(IC)扮演著至關(guān)重要的角色。其中,74LS373是一款常用的三態(tài)八位鎖存器,廣泛應(yīng)用于數(shù)字電路系統(tǒng)中。本文將詳細(xì)介紹74LS373的功能特點(diǎn)、使用方法以及在實(shí)際應(yīng)用中的典型場(chǎng)景,幫助讀者更好...

關(guān)鍵字: 集成電路 74LS373 鎖存器

2023年10月9日,上海 —— 納芯微宣布推出基于隧道磁阻 (TMR) 的超低功耗磁開關(guān)/鎖存器NSM105x系列,為數(shù)字位置檢測(cè)提供高精度的解決方案,可被廣泛應(yīng)用于工業(yè)與消費(fèi)領(lǐng)域的位置檢測(cè)。

關(guān)鍵字: 鎖存器 TMR開關(guān)

首先應(yīng)該明確鎖存器和觸發(fā)器也是由與非門之類的東西構(gòu)成。尤其是鎖存器,雖說數(shù)字電路定義含有鎖存器或觸發(fā)器的電路叫時(shí)序電路,但鎖存器有很多組合電路的特性。

關(guān)鍵字: 鎖存器 寄存器

當(dāng)我們需要設(shè)計(jì)一個(gè)具有特定性能的DAC時(shí),很可能沒有任何一種架構(gòu)是理想的。這種情況下,可以將兩個(gè)或更多DAC組合成一個(gè)更高分辨率的DAC,以獲得所需的性能。

關(guān)鍵字: DAC ADI 電流開關(guān) 鎖存器
關(guān)閉