用while寫倒三角 C51寫微控制器倒計時程式

2021-10-16 02:38:39 字數 4428 閱讀 8748

我是菜逼!我是菜逼!我是菜逼!

我的微控制器長這樣:

jd51微控制器開發板

(我也不知道為啥他為啥傳上來就斜了)

開發板原理圖

我初步寫的程式:

#include #define uchar unsigned char

#define uint unsigned int

sbit c573 = p2^5; //控制數碼管晶元開啟

uchar times = 0; //計數器輪數

uint time = 30; //初步定義倒計時30秒

code uchar letter = ;

/* 0 , 1 , 2 , 3 ,

4 , 5 , 6 , 7 ,

8 , 9 , a , b ,

c , d , e , f , */

code uchar local = ;

//數碼管位 佔位,左1,左2,左3,左4

void clock1(); //計時1s

void t0reset();

//uint alltime( uint time ); //總時間(以後再寫)

void output( uint temp ); //顯示輸出當前時間

void delay( uint ); //延時函式

void main() }}

void clock1() }}

void t0reset()

void delay( uint temp )

void output( uint temp )

} else while(1)

}

然後呢我發現我發現這個程式在數碼管顯示的while迴圈之**不來????

我不信邪(萬一好了呢??)燒進去一看

果然一直顯示30,並沒有在計時,計時函式一直就沒執行。

屎意用上心頭,我跑廁所拉屎,隨著一聲聲噗呲噗呲有乙個主意湧上心頭!!!

這個是不是需要乙個中斷函式????

然而我發現我不會寫

看了會也沒太看明白,但是卻有另乙個想法!

我是不是可以把計時函式拆開,然後時刻去查詢是否計滿1s????

我去搞搞

我回來了,我寫不出來,我去學學中斷函式。

誒我的媽真香,我沒用中斷函式,還是用查詢模式把他給寫了。

**如下:

#include #define uchar unsigned char

#define uint unsigned int

sbit c573 = p2^5; //¿øöæêýâë¹üð¾æ¬¿ªæô

uchar times = 0; //¼æêýæ÷âöêý

uint time = 30; //³õ²½¶¨òåµ¹¼æê±30ãë

code uchar letter = ;

/* 0 £¬ 1 £¬ 2 £¬ 3 £¬

4 £¬ 5 £¬ 6 £¬ 7 £¬

8 £¬ 9 £¬ a £¬ b £¬

c £¬ d £¬ e £¬ f £¬ */

code uchar local = ;

//êýâë¹üî» õ¼î»£¬×ó1£¬×ó2£¬×ó3£¬×ó4

void t0reset();

void output( uint temp ); //ïôê¾êä³öµ±ç°ê±¼ä

void delay( uint ); //ñó걺¯êý

void output0();

void main() }}

void t0reset()

void delay( uint temp )

void output()

} if(!time) break; }}

void output0()

}

注釋亂碼了??算了湊合吧,我也懶得搞了。

我現在打算

1.我想用中斷函式寫一下這個程式

2.我想加更多的操作,使用者可以自己設定時間、倒計時到了會叫

先來簡單的最簡單的,加操作。

我搞了搞!你康康!!

#include #define uchar unsigned char

#define uint unsigned int

sbit key1 = p3^2;

sbit key2 = p3^3;

sbit key3 = p3^4;

sbit key4 = p3^5;

sbit speaker = p2^4;

sbit c573 = p2^5; //¿øöæêýâë¹üð¾æ¬¿ªæô

uchar times = 0; //¼æêýæ÷âöêý

uint time = 0; //³õ²½¶¨òåµ¹¼æê±30ãë

code uchar letter = ;

/* 0 £¬ 1 £¬ 2 £¬ 3 £¬

4 £¬ 5 £¬ 6 £¬ 7 £¬

8 £¬ 9 £¬ a £¬ b £¬

c £¬ d £¬ e £¬ f £¬ */

code uchar local = ;

//êýâë¹üî» õ¼î»£¬×ó1£¬×ó2£¬×ó3£¬×ó4

void t0reset(); //

void start(); //

void delay( uint ); //ñó걺¯êý

void input(); //

void main()

}void t0reset()

void delay( uint temp )

void start()

} if(!time) break; }}

void output0()

}void input()

}

但是現在呢,我好像沒有搞那個按鍵防抖還是什麼的,出現了這個狀況。

我也不知這是好還是壞

我摸了摸74hc573 真的燙!!!

我現在去看看中斷函式咋寫

我寫出來了!!!我現在去寫注釋!

#include #define uchar unsigned char

#define uint unsigned int

sbit key1 = p3^2;

sbit key2 = p3^3;

sbit key3 = p3^4;

sbit key4 = p3^5;

sbit speaker = p2^4;

sbit c573 = p2^5; //控制數碼管晶元開啟

uchar times = 0; //計數器輪數

uint time = 0; //初步定義倒計時30秒

code uchar letter = ;

/* 0 , 1 , 2 , 3 ,

4 , 5 , 6 , 7 ,

8 , 9 , a , b ,

c , d , e , f , */

code uchar local = ;

//數碼管位 佔位,左1,左2,左3,左4

void delay( uint temp ) //延時函式

void outputonce() //輸出單次數碼管

void input() //輸入數字

}void outputtime() //迴圈輸出數碼管數字

}void t0reset() //t0計時器復位

void timer0() interrupt 1 //中斷函式timer0,不用呼叫t0reset函式,tf0會自動置0

}void main()

}}

演示效果如下:

微控制器倒計時實現

蜂鳴器又把我家貓嚇一跳,我家貓已經乙個下午受我蜂鳴器的折磨了

別看了,已經沒了。

用python寫楊輝三角

先定義階層函式,求出階層 deffact n if n 0 return int 1 else return int n fact n 1 再定義組合函式,求出組合c n,m 的值 defcom n,m return fact n fact m fact n m 呼叫cum函式,輸出結果 i int...

用原生js寫三角形

直角三角形 直角三角形 leta number str n return str console.log a 5 letb number 這是輸出的星星是依次遞加,只有i能每次遞加所以j i,每次就能遞加 for let j 0 j i j str n return str console.log ...

用迴圈佇列寫楊輝三角形

用迴圈佇列寫楊輝三角形 include using namespace std const int maxsize 100 template class sqqueueclass 非迴圈隊佇列類模板 template sqqueueclass sqqueueclass 建構函式 template s...