藍橋杯第十屆微控制器總結

2021-09-13 16:52:40 字數 3473 閱讀 7174

這是一篇介紹藍橋杯板子方波n555模組的部落格

我自己的理解是將定時器0設定為計數模式,定時器1設定為計時模式來定1s的時間,然後定時器0記錄的次數就是頻率。

怎麼設定呢只需要將tmod設定為tmod=0x04即可

暫存器tmod高四位是設定定時器1工作方式,低四位是設定定時器0工作方式

c/t位是設定c/t==0是計時模式,c/t==1是計數模式,所以tmod=0x04;

之後是設定th0和tl0位,此時可以設定為 th0=tl0=0x00;也可以設定為 th0=tl0=0xff;

設定為th0=tl0=0x00;就是用這兩個記錄次數。最後計算 num=(th0<<8)+tl0;num就是1s內的次數

設定為th0=tl0=0xff;是用中斷的方式計數,自己寫中斷函式,在中斷函式裡自己設定變數來計數。

工作時需要將p34和signal用調鍵帽連線在一起,這樣p34才會有脈衝。

th0=tl0=0x00;主要**如下:

void timer0init(void)       

void timer1init(void)        //5毫秒@11.0592mhz

void main()} }

void  time1() interrupt 3

}

th0=tl0=0xff;主要**如下:

void timer0() interrupt 1

while(1)

}

上面那麼多介紹的都n555下面介紹第十屆的程式設計試題這裡只放了框圖,試題的話大家都能找到;

我感覺這一屆的試題比第九屆的簡單多了,按鍵部分也都是簡單的邏輯但是因為沒看方波所以直接就丟掉了一半的分數。具體實現的思路每個人都不一樣,我就直接貼**了;

主函式

#include#include#include#define uchar unsigned char

#define uint unsigned int

uchar tab=;

uchar yi,er,san,si,wu,liu,qi,ba;

bit t_flag,set_flag,a_flag,l_flag,m_flag;

//t_flag 1s時間的標記 set_flag 電壓和頻率

//a_flag 電壓固定 l_flag燈開關,m_flag數碼管開關

uchar ad(uchar add);

void display31(uchar dat1,uchar dat2);

void keyscan();

void allinit();

void keyscan();

void delayms(uint ms);

void display1(uchar dat1,uchar dat2);

void display2(uchar dat1,uchar dat2);

void display3(uchar dat1,uchar dat2);

void display4(uchar dat1,uchar dat2);

void timer0init(void) //1毫秒@11.0592mhz

void timer1init(void) //5毫秒@11.0592mhz

void main()

/*****電壓*******************/

if(set_flag==0)

if(l_flag==0) //燈亮

else if(a_flag==1)

}else

else}}

else

} /*******頻率**********************/

else }}

if(l_flag==0)

else

} else

} if(m_flag)//關閉所有數碼管

display1(yi,er);

display2(san,si);

if(set_flag==0&& m_flag==0)

display3(wu,liu); //帶小數點的

else if(set_flag==1)

display31(wu,liu); //不帶小數點的

display4(qi,ba);

}}/****按鍵****************/

void keyscan()

while(!p33);

} if(p32==0)

while(!p32);

} if(p31==0)

while(!p31);

} if(p30==0)

while(!p30);

}}//計時

void time1() interrupt 3

}/***********ad***************/

uchar ad(uchar add)

/******初始化*********************/

void allinit()

void display1(uchar dat1,uchar dat2)

void display2(uchar dat1,uchar dat2)

void display3(uchar dat1,uchar dat2)

void display31(uchar dat1,uchar dat2)

void display4(uchar dat1,uchar dat2)

void delayms(uint ms)

while(i--);

}//匯流排啟動條件

void iic_start(void)

//匯流排停止條件

void iic_stop(void)

//傳送應答

//void iic_sendack(bit ackbit)

////等待應答

bit iic_waitack(void)

//通過i2c匯流排傳送資料

void iic_sendbyte(unsigned char byt)

scl = 0;

}//從i2c匯流排上接收資料

unsigned char iic_recbyte(void)

return da;

}

自己給自己的話,這次比賽雖然不是什麼大比賽,但也學會了很多,從過完年回來開始準備,2個星期把之前的省賽題做完,後邊感覺自己會的挺多的了,後邊就沒看省賽之前沒出過的模組,當時還做了官網模擬題就是把n555模組跳了過去。 今天之後這個比賽就算過去了,以後不管做什麼事情都要要求自己做好最充分的準備,萬萬不可驕傲。

第十屆藍橋杯微控制器組心得體會

省賽結束了一周了,才來寫這次的心得總結。不是時間緊,只是比賽結束後變得有些鬆懈。本人是乙個大二的學生,記得大學剛進來的時候,就聽宿友說今年某某師兄拿藍橋杯的省一去北京了,當時我非常羨慕能代表學校去外面比賽的人,因為當時感覺能比代表學校出去外面比賽的人都是非一般的學霸,於是就一直關注這個比賽,心想著明...

第十屆藍橋杯 JavaA 迷宮

法一 思路 bfs,path記錄路徑。1.程式設計 2.觀察 description todo author frontier time 2019年4月9日 上午11 19 05 class node public class d迷宮 增量陣列,方向向量,直接按字典序排列 static int y ...

第十屆藍橋杯 RSA 解密

記錄一下自己的學習過程啦 上題目 問題描述 rsa 是一種經典的加密演算法。它的基本加密過程如下。首先生成兩個質數 p,q,令 n p q,設 d 與 p 1 q 1 互質,則可 找到 e 使得 d e 除 p 1 q 1 的餘數為 1。n,d,e 組成了私鑰,n,d 組成了公鑰。當使用公鑰加密乙個...