導航:首頁 > 編程語言 > keil流水燈的編程

keil流水燈的編程

發布時間:2023-09-24 18:11:01

『壹』 一鍵多控流水燈匯編語言怎麼寫,軟體是keil

一鍵多空流水燈匯編語言程序編寫方法是:設置一個變數,來檢測按鍵的次數,從而控製程序分支來達到控制不同流水燈的效果例如:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV R6,#0FEH
MOV R7,#0

LOOP:

JB P1.0,LOOP1
JNB P1.0,$

INC R7

CJNE R7,#2,LOOP1

MOV R7,#0

LOOP1: ;奇數次按鍵左向流水燈

MOV A,R7
JNZ LOOP2

MOV A,R6

MOV P0,A

RL A

MOV R6,A

LCALL DELAY

SJMP LOOP

LOOP2: ;偶數次按鍵右向流水燈

MOV A,R6
MOV P0,A

RR A

MOV R6,A

LCALL DELAY

LJMP LOOP

DELAY:

MOV R2,#200
DL1:

MOV R3,#250
DJNZ R3,$

DJNZ R2,DL1

RET

END

『貳』 如何用單片機一個按鈕開關控制3個燈3種效果。流水。閃爍。還有一直亮。用keil編程

下面是用C51編寫的簡單程序:
#include <reg51.h>
#include <intrins.h>
sbit io_Key = P1 ^ 1;
sbit led1 = P1 ^ 2;
sbit led2 = P1 ^ 3;
sbit led3 = P1 ^ 4;
unsigned char ucCount = 0;
bit flag05s = 0;
//---------------------------------
void delay125us(void) //@12.000MHz
{
unsigned char i;
i = 60;
while (--i);
}

void Timer0Init(void) //10毫秒@12MHz
{
TMOD &= 0xF0; //設置定時器模式
TMOD |= 0x01; //設置定時器模式
TL0 = 0xF0; //設置定時初值
TH0 = 0xD8; //設置定時初值
TR0 = 1; //開定時器0
ET0 = 1; //開定時器0中斷
EA = 1; //開總中斷
}
//T0中斷用來計數器溢出
void zd0(void) interrupt 1
{
TL0 = 0xF0; //設置定時初值
TH0 = 0xD8; //設置定時初值
if(++ucCount >= 50)
{
ucCount = 0;
flag05s = 1; //g_flag05s = isYes定時0.52秒到,用於測量周期延時
}

}

void main(void)
{
unsigned char CountTemp = 0, ucState = 0;
Timer0Init();

while(1)
{
//-------------------------------
//簡單的按鍵檢測程序:
io_Key = 1;
_nop_();
if( io_Key == 0 )
{
CountTemp = 0;
do
{
delay125us();
if( io_Key != 0 ) break;
} while(++CountTemp > 160); // 延時20ms去抖動

if(CountTemp > 160)//如果按鍵時間有效,改變狀態
{
switch(ucState)
{
case(0):
{
ucState = 1;

led1 = 0;
led2 = 0;
led3 = 0;
}
break;
case(1):
{
ucState = 2;
led1 = 0;
led2 = 0;
led3 = 0;
}
break;
case(2):
{
ucState = 0;
led1 = 0;
led2 = 1;
led3 = 1;
}
break;

}
while(io_Key == 0); //等待按鍵釋放
}

}
//------------------------------
//每0.5秒改變一下LED狀態
if(flag05s == 1)
{
flag05s = 0;
switch(ucState)
{
case(0):
{
led1 = !led1;
led2 = !led2;
led3 = !led3;
}
break;
case(1):
{
bit ledTemp = led1;
led1 = led2;
led2 = led3;
led3 = ledTemp;
}
break;
//LED常亮可以忽略改變LED狀態
/*
case(2):
{
led1 = 0;
led2 = 0;
led3 = 0;
}
break;
*/

}

}

}

}
//-----------------------------------------------
//上面程序中有很多地方可以優化,這里只是給出一個參考供學習。

『叄』 單片機學習中用Keil軟體編寫流水燈或數碼管(靜態)的最簡單的程序內容是什麼,望高人不吝賜教,謝謝

我想這個程序可能最簡單了吧。可以實現流水燈效果。
ORG 0000H
LJMP START
ORG 0050H
START:
MOV A,#0FEH
LOOP:
MOV P1,A
LCALL DELAY
RL A
LJMP LOOP
DELAY:
MOV R1,#20
DLY:
MOV R0,#0
DJNZ R0,$
DJNZ R1,DLY
RET
END

閱讀全文

與keil流水燈的編程相關的資料

熱點內容
java定義枚舉類型 瀏覽:92
手機裡面沒有應用鎖怎麼加密應用 瀏覽:444
電氣與可編程式控制制器原理及應用 瀏覽:546
php512 瀏覽:566
手機文件夾應用推薦怎麼關 瀏覽:605
伺服器為什麼要分業務口和管理口 瀏覽:682
楊輝三角java演算法 瀏覽:55
cmd編譯錯誤找不到符號 瀏覽:695
linuxip機器名 瀏覽:487
伺服器喇叭和頻道喇叭有什麼區別 瀏覽:31
閑魚排名演算法如何計算 瀏覽:975
linuxtargz解壓命令 瀏覽:741
還完房貸後解壓手續銀行會代辦嗎 瀏覽:811
解壓烹飪樂高 瀏覽:675
元神的伺服器怎麼看 瀏覽:362
stc8單片機串口中斷 瀏覽:954
信號分析pdf 瀏覽:927
暴力刪除命令 瀏覽:803
qt如何編譯加快速度 瀏覽:903
php添加數據sql語句 瀏覽:717