熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時(shí)間: 2020-9-1 21:27
正文摘要:如果3秒內(nèi)輸入的脈沖個(gè)數(shù)小于2,led點(diǎn)亮輸出,如果大于2繼續(xù)檢測(cè)。 |
wulin 發(fā)表于 2020-9-2 06:08 謝謝師傅指點(diǎn) |
| 截屏?xí)?/td> |
|
本帖最后由 wulin 于 2020-9-2 06:34 編輯 定時(shí)器/計(jì)數(shù)器1外部脈沖高電平計(jì)數(shù)。3秒計(jì)時(shí)周期,脈沖個(gè)數(shù)小于2,led點(diǎn)亮輸出,否則led熄滅。 #include "reg51.h" sbit LED=P2^1; unsigned char count=0; void main() { TMOD= 0x51; //設(shè)置定時(shí)器模式 TL0 = 0xB0; //50毫秒@12.000MHz TH0 = 0x3C; TL1 = 0; TH1 = 0; TR0 = 1; //定時(shí)器0開(kāi)始計(jì)時(shí) TR1 = 1; //定時(shí)器0開(kāi)始計(jì)數(shù) ET0 = 1; //開(kāi)定時(shí)器0中斷 EA = 1; //開(kāi)總中斷 while(1); } void Timer0() interrupt 1 { TL0 = 0xB0; //設(shè)置定時(shí)初值 TH0 = 0x3C; //設(shè)置定時(shí)初值 count++; if(count>=60) //3秒 { count=0; if(TL1>=2) { LED=0; TL1=0; } else LED=1; } } |
|
P3.2外部中斷,下降沿觸發(fā)。3秒計(jì)時(shí)周期,脈沖個(gè)數(shù)小于2,led點(diǎn)亮輸出,否則led熄滅。 #include "reg51.h" sbit LED=P2^1; unsigned char num=0,count=0; void main() { TMOD= 0x01; //設(shè)置定時(shí)器模式 TL0 = 0xB0; //50毫秒@12.000MHz TH0 = 0x3C; TR0 = 1; //定時(shí)器0開(kāi)始計(jì)時(shí) ET0 = 1; //開(kāi)定時(shí)器0中斷 IT0 = 1; //外部中斷下降沿觸發(fā) EX0 = 1; //開(kāi)外部中斷0 EA = 1; //開(kāi)總中斷 while(1); } void Timer0() interrupt 1 { TL0 = 0xB0; //設(shè)置定時(shí)初值 TH0 = 0x3C; //設(shè)置定時(shí)初值 count++; if(count>=60) //3秒 { count=0; if(num>=2) { LED=0; num=0; } else LED=1; } } void exint0() interrupt 0 { num++; } |
Powered by 單片機(jī)教程網(wǎng)