/* 名稱(chēng):用定時(shí)器設(shè)計(jì)的門(mén)鈴說(shuō)明:按下按鍵時(shí)蜂鳴器發(fā)出叮咚的門(mén)鈴聲。*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit Key=P1^7;sbit DoorBell=P3^0;uint p=0;//主程序void main
/* 名稱(chēng):按鍵控制 8X8LED 點(diǎn)陣屏顯示圖形說(shuō)明:每次按下 K1 時(shí),會(huì)使 8X8LED點(diǎn)陣屏循環(huán)顯示不同圖形。本例同時(shí)使用外部中斷和定時(shí)中斷。*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#d
/* 名稱(chēng):按鍵控制 8X8LED 點(diǎn)陣屏顯示圖形說(shuō)明:每次按下 K1 時(shí),會(huì)使 8X8LED點(diǎn)陣屏循環(huán)顯示不同圖形。本例同時(shí)使用外部中斷和定時(shí)中斷。*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#d
/* 名稱(chēng):定時(shí)器控制數(shù)碼管動(dòng)態(tài)顯示說(shuō)明:8 個(gè)數(shù)碼管上分兩組動(dòng)態(tài)顯示年月日與時(shí)分秒,本例的位顯示延時(shí)用定時(shí)器實(shí)現(xiàn)。*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned i
/* 名稱(chēng):100 000s 以?xún)?nèi)的計(jì)時(shí)程序說(shuō)明:在 6 只數(shù)碼管上完成 0~99 999.9s。*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//段碼uchar codeDSY_CODE[]={0x3f,0x06,
/* 名稱(chēng):用計(jì)數(shù)器中斷實(shí)現(xiàn) 100 以?xún)?nèi)的按鍵計(jì)數(shù)說(shuō)明:本例用 T0 計(jì)數(shù)器中斷實(shí)現(xiàn)按鍵技術(shù),由于計(jì)數(shù)寄存器初值為 1,因此 P3.4 引腳的每次負(fù)跳變都會(huì)觸發(fā) T0 中斷,實(shí)現(xiàn)計(jì)數(shù)值累加。計(jì)數(shù)器的清零用外部中斷 0 控制
/* 名稱(chēng):10s 的秒表 說(shuō)明:首次按鍵計(jì)時(shí)開(kāi)始,再次按鍵暫停,第三次按鍵清零。*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit K1=P3^7; uchari,Second_Counts,Key_Flag_Idx
標(biāo)準(zhǔn)的C語(yǔ)言中沒(méi)有空語(yǔ)句。但在單片機(jī)的C語(yǔ)言編程中,經(jīng)常需要用幾個(gè)空指令產(chǎn)生短延時(shí)的效果。這在匯編語(yǔ)言中很容易實(shí)現(xiàn),寫(xiě)幾個(gè)nop就行了。在keil C51中,直接調(diào)用庫(kù)函數(shù):#include // 聲明了void _nop_(void);_nop
/* 名稱(chēng):TIMER0 與 TIMER1 控制條形 LED說(shuō)明:定時(shí)器 T0 定時(shí)控制上一組條形 LED,滾動(dòng)速度較快定時(shí)器 T1 定時(shí)控制下一組條形 LED,滾動(dòng)速度較慢*/#include<reg51.h>#include<intrins.h>#define uchar unsigned ch
/* 名稱(chēng):T0 控制 LED 實(shí)現(xiàn)二進(jìn)制計(jì)數(shù)說(shuō)明:本例對(duì)按鍵的計(jì)數(shù)沒(méi)有使用查詢(xún)法,沒(méi)有使用外部中斷函數(shù),沒(méi)有使用定時(shí)或計(jì)數(shù)中斷函數(shù)。而是啟用了計(jì)數(shù)器,連接在 T0 引腳的按鍵每次按下時(shí),會(huì)使計(jì)數(shù)寄存器的值遞增,其
/* 名稱(chēng):定時(shí)器控制 4 個(gè) LED 滾動(dòng)閃爍說(shuō)明:4 只 LED 在定時(shí)器控制下滾動(dòng)閃爍。*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit B1=P0^0; sbit G1=P0^1; sbit R1=P0^2; sbit Y1=P0
/* 名稱(chēng):TIMER0 控制流水燈說(shuō)明:定時(shí)器控制 P0、P2口的 LED 滾動(dòng)顯示,本例未使用中斷函數(shù)。*/#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//主程序void main(){u
/* 名稱(chēng):定時(shí)器控制單只 LED說(shuō)明:LED 在定時(shí)器的中斷例程控制下不斷閃爍。*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit LED=P0^0; uchar T_Count=0; //主程序void main(){ TMOD
程序能跑起來(lái)并不見(jiàn)得你的代碼就是很好的c代碼了,衡量代碼的好壞應(yīng)該從以下幾個(gè)方面來(lái)看1,代碼穩(wěn)定,沒(méi)有隱患。2,執(zhí)行效率高。3,可讀性高。4,便于移植。下面發(fā)一些我在網(wǎng)上看到的技巧和自己的一些經(jīng)驗(yàn)來(lái)和大家分
/* 名稱(chēng):INT0 及 INT1 中斷計(jì)數(shù)說(shuō)明:每次按下第 1 個(gè)計(jì)數(shù)鍵時(shí),第 1 組計(jì)數(shù)值累加并顯示在右邊 3 只數(shù)碼管上, 每次按下第 2 個(gè)計(jì)數(shù)鍵時(shí),第2 組計(jì)數(shù)值累加并顯示在左邊 3 只數(shù)碼管上,后兩個(gè)按鍵分別清零。*/#in
/* 名稱(chēng):外部 INT0 中斷控制 LED說(shuō)明:每次按鍵都會(huì)觸發(fā) INT0 中斷,中斷發(fā)生時(shí)將 LED 狀態(tài)取反,產(chǎn)生 LED 狀態(tài)由按鍵控制的效果*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit LE
/* 名稱(chēng):INT0 中斷計(jì)數(shù)說(shuō)明:每次按下計(jì)數(shù)鍵時(shí)觸發(fā)INT0 中斷,中斷程序累加計(jì)數(shù),計(jì)數(shù)值顯示在 3 只數(shù)碼管上,按下清零鍵時(shí)數(shù)碼管清零*/#include<reg51.h>#define uchar unsigned char#define uint unsigned int//
/* 名稱(chēng):播放音樂(lè)說(shuō)明:程序運(yùn)行時(shí)播放生日快樂(lè)歌, 未使用定時(shí)器中斷,所有頻率完全用延時(shí)實(shí)現(xiàn)*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit BEEP=P3^7;//生日快樂(lè)歌的音符頻率表
/* 名稱(chēng):按鍵發(fā)音說(shuō)明:按下不同的按鍵會(huì)是 SOUNDER 發(fā)出不同頻率的聲音。本例使用延時(shí)函數(shù)實(shí)現(xiàn)不同頻率的聲音輸出,以后也可使用定時(shí)器*/#include<reg51.h>#define uchar unsigned char#define uint unsigned int
/* 名稱(chēng):開(kāi)關(guān)控制報(bào)警器說(shuō)明:用 K1 開(kāi)關(guān)控制報(bào)警器,程序控制 P1.0 輸出兩種不同頻率的聲音,模擬很逼真的報(bào)警效果*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit SPK=P1^0;sbit