Ⅰ 51單片機中用數碼管做秒錶時怎麼用一個獨立按鍵控制開始和暫停,即第一次按下計時,在按下時暫停
其實,控制秒錶的啟動和停止,很簡單。要做秒錶,一定要用定時器吧,假如用T0,那開始初始化時,不寫TR0=1,先不啟動。x0dx0a當按一下鍵,再啟動,TR0=1,就開始計時了。x0dx0a再 按一下鍵,就停止,TR0=0,就不計時了。x0dx0a程序好寫,先 定義一個按鍵x0dx0asbit key=P1^1; //具體是哪個 鍵,你自己改x0dx0a主程序中,判斷按鍵和啟動/停止x0dx0aif(key==0)x0dx0a{x0dx0adelay(); //具體延時時間自己定x0dx0aif(key==0)x0dx0a{x0dx0aTR0=!TR0; //每按一次,取反 一次x0dx0awhile(key==0);x0dx0a}x0dx0a}
Ⅱ 我用51單片機控制一個機械手臂搬運物料,求問用一個獨立按鍵,採用外部中斷的方法如何實現暫停,開始。
剛剛為你編寫的
已經在單片機上測試成功
原理是,按鍵第一次被按下後,nn為1,程序一直在中斷裡面死循環
這樣其它指令就暫停了,而中斷的原理既是,從哪斷開的,就回到那裡
在這個死循環中,檢測按鍵時候又被按下
按鍵又按下後,nn變為0,死循環的條件不滿足
Ⅲ 單片機c語言編了個流水燈,用按鍵怎麼實現它暫停。
實現流水燈的方式有很多種(中斷,定時器,延時等等),看用哪種方式,最簡單的是延時做流水燈,那麼在死循環裡面增加按鍵檢測,判斷出有按鍵按下來時,再進入死循環,程序不往下走就可以暫停,再按跌出死循環。
#include //51系列單片機定義文件
#define uchar unsigned char //定義無符號字元
#define uint unsigned int //定義無符號整數
void delay(uint); //聲明延時函數
void main(void)
{
uint i;
uchar temp;
uint Flag1=0; 按鍵標志位
uint Flag2=0;
while(1)
{
Flag1 = keyscan();
if(Flag1==1)(Flag2=~Flag2); //如果一旦檢測到一次按鍵掃描就把標志位2 打開;再次就關閉;
if(Flag2==1)// 如果標志位打開就開始流水燈
{
temp=0x01;
for(i=0;i<8;i++) //8個流水燈逐個閃動
{
P1=~temp;
delay(100); //調用延時函數
temp<<=1;
}
}
(3)單片機暫停按鍵擴展閱讀:
單片機編程就是硬體是單片機,基於單片機進行的程序開發,在有周圍外設支持的情況下,用軟體來控制的部分通過單片機編程來實現。單片機能識別的語言是硬體語言即匯編,因此編程就是圍繞匯編來實現,有直接用匯編程序來編寫的,但是較難調試的編寫,特別是一上規模就更不易實現,因此常用高級語言來寫然後通過編譯器轉化成匯編。