两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

1.其他按鍵的使用

我們之前都是讓P2.3輸出低電平來(lái)讓K1, K2, K3, K4作為獨(dú)立按鍵,那我們要想用K13,K14,K15,K16做獨(dú)立按鍵時(shí)只要P2.0輸出低電平就可以了。下面是簡(jiǎn)化的原理圖

按鍵14

 

2.美女與男人

作為本章的最后一個(gè)題目,我們結(jié)合所有學(xué)過(guò)的知識(shí)做一個(gè)綜合例程,實(shí)現(xiàn)美女與男人的游戲的功能代碼。

游戲規(guī)則如下:

美女和男人各持一枚硬幣

兩人都出正面時(shí):男人得3塊錢(qián)

兩人都出反面時(shí):男人得1塊錢(qián)

兩人出一正一反時(shí):女人得2塊錢(qián)

 

3.開(kāi)發(fā)板的實(shí)現(xiàn)

我們這樣做模擬,程序的開(kāi)始定義兩個(gè)全局變量man和woman初始化為30,意為每人各持30塊錢(qián)用來(lái)顯示在左右端的兩個(gè)數(shù)碼管上,男人的錢(qián)顯示在左邊的數(shù)碼管,女人的錢(qián)顯示在右邊的數(shù)碼管。

按鍵15

我們用K13作為給男人加3塊錢(qián)的同時(shí)也給女人減3塊的功能。

用K14作為給男人加1塊錢(qián)的同時(shí)也給女人減1塊的功能。

用K15作為給男人減2塊錢(qián)的同時(shí)給女人加2塊的功能。

三個(gè)按鍵都是不支持連按!

按鍵16

我們規(guī)定,誰(shuí)先達(dá)到45塊錢(qián)及以上時(shí)就算誰(shuí)贏!

比如男人的錢(qián)到達(dá)或超過(guò)45塊錢(qián)時(shí),女人的錢(qián)就不顯示了,這兩個(gè)數(shù)碼管熄滅,如果是女人的錢(qián)到達(dá)或超過(guò)45塊時(shí),男人的錢(qián)就不顯示了,這是用來(lái)表明誰(shuí)的錢(qián)還在顯示誰(shuí)就是贏家的常識(shí)。

決出勝負(fù)的時(shí)候,此時(shí)的游戲結(jié)束,蜂鳴器就間隔鳴叫,鳴叫的時(shí)候所有數(shù)碼管熄滅,不鳴叫的時(shí)候就只有4個(gè)數(shù)碼管亮著,數(shù)碼管呈現(xiàn)間隔顯示,蜂鳴器間隔鳴叫。要想重新開(kāi)始游戲必須復(fù)位開(kāi)發(fā)板重啟!

 

4.部分代碼改寫(xiě)

初始化LedBuff[]數(shù)組的時(shí)候第2和第3號(hào)元素為0xBF,讓數(shù)碼管2和數(shù)碼管3顯示中間那一杠。

本講的例程主函數(shù)的死循環(huán)執(zhí)行完一次循環(huán)的時(shí)間比以往的例程要多,所以times的判斷我們只需要它超過(guò)300即可,而不是像以前一樣要超過(guò)500才執(zhí)行功能代碼。

因?yàn)橛蒙狭?個(gè)按鍵,每個(gè)按鍵功能被封裝為一個(gè)函數(shù)了,所以我們定義了一個(gè)宏“#define  TIMES  300”,3個(gè)按鍵的函數(shù)判斷times時(shí),只需書(shū)寫(xiě)“if(times>=TIMES&&KEYxx==1)”即可,以后我們寫(xiě)的代碼死循環(huán)里比這次的例程執(zhí)行一遍循環(huán)的時(shí)間還長(zhǎng)的話,把宏改為比300還小的數(shù)就可以了。

還有如果單獨(dú)循環(huán)“SEG_task();”會(huì)使所有數(shù)碼管顯示很暗,這是因?yàn)檫@個(gè)函數(shù)是這樣循環(huán)執(zhí)行的

第一次循環(huán)

P0=0xFF;
ADDR2 = 0;ADDR1 = 0;ADDR0 = 0;P0=LedBuff[0];i++;

第二次循環(huán)

P0=0xFF;
ADDR2 = 0;ADDR1 = 0;ADDR0 = 1;P0=LedBuff[1];i++;

……

每一次循環(huán)里“P0=LedBuff[x];”持續(xù)的時(shí)間不夠多又要開(kāi)始執(zhí)行“P0=0xFF;”,所以“P0=0xFF;”的刷新率太高就會(huì)使數(shù)碼管的亮度變暗,要想解決這個(gè)問(wèn)題就必須使“P0=LedBuff[x];”持續(xù)的時(shí)間多一點(diǎn)再執(zhí)行“P0=0xFF;”,所以我們?cè)凇癝EG_task();”后用上短暫的延時(shí)。

而為什么以前的例程里“SEG_task();”沒(méi)有這種現(xiàn)象出現(xiàn),這個(gè)大家回去看一下就知道以前的 “SEG_task();”還要執(zhí)行下面這些代碼

LedBuff[0] = LedChar[cnt%10];   
if(cnt>=10)  LedBuff[1]= LedChar[(cnt/10)%10];  
if(cnt>=100) LedBuff[2]= LedChar[(cnt/100)%10];
if(cnt==0){  LedBuff[1]=0xFF;LedBuff[2]=0XFF; }

這些代碼的執(zhí)行占用了時(shí)間,所以給“P0=LedBuff[x];”保持住了一段時(shí)間的點(diǎn)亮,避免了長(zhǎng)時(shí)間被“P0=0xFF;”刷新。

由于本講的代碼量較多,我們把代碼放在下一講呈現(xiàn)。

點(diǎn)贊(0)

C語(yǔ)言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:

一點(diǎn)編程也不會(huì)寫(xiě)的:零基礎(chǔ)C語(yǔ)言學(xué)練課程

解決困擾你多年的C語(yǔ)言疑難雜癥特性的C語(yǔ)言進(jìn)階課程

從零到寫(xiě)出一個(gè)爬蟲(chóng)的Python編程課程

只會(huì)語(yǔ)法寫(xiě)不出代碼?手把手帶你寫(xiě)100個(gè)編程真題的編程百練課程

信息學(xué)奧賽或C++選手的 必學(xué)C++課程

藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門(mén)課程

手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程

Dotcpp在線編譯      (登錄可減少運(yùn)行等待時(shí)間)