導航:首頁 > 操作系統 > 單片機中斷控制流水燈

單片機中斷控制流水燈

發布時間:2022-12-13 18:04:43

單片機多級外部中斷控制,請問如何加入流水燈,現在在進行課程設計,迫切需要實現的方法。

功能:先保持全滅一段時間,然後順序點亮8個燈,全亮後再保持一段時間,然後從從頭開始

SS2:
MOV A,#0FFH ;全部熄滅
MOV P1,A ;送顯示
ACALL DELAY1S ;延時一段時間,保持全滅1S
SS1:
RL A ;循環左移1位
CLR ACC.0 ;將最低位置0,點亮1個等
MOV P1,A ;送顯示
ACALL DELAY100ms ;延時一段時間,感覺上100ms比較合適,根據情況自己調整一下
JNZ SS1 ;A不等於0,說明還有燈未點亮,循環繼續下一個
ACALL DELAY1S ;A=0,保持全部點亮1S鍾
JMP SS2 ;再次開始

延時子程序我就不寫了,你應該會的。
建議:牽涉到延時,最好用定時中斷實現,實際運用中ms級的延時一般都會使用中斷實現,否則CPU的資源就浪費了。如果是作業就算了,如果你想學些東西最好用中斷的方式再嘗試一下。

② 單片機C語言編程:控制流水燈

#include<reg52.h>
#include<intrins.h>
#define uintunsignedint
#define ucharunsignedchar
sbitk1=P1^0;//左循環按鈕
sbitk2=P1^1;//右循環按鈕
sbitk4=P1^2;//恢復暫停
sbitk3=P3^2;//暫停
voidinit();
voidshowLED();
voiddelay(uintxms);
uintdelayTime;
uintgoLeft=1;
uintgoRight=0;
uintsFlag=0;
voidmain()
{
init();
while(1)
{
if(k1==0)
{
delay(10);
if(k1==0)
{
while(k1==0);
goLeft=1;
goRight=0;
}
}
if(k2==0)
{
delay(10);
if(k2==0)
{
while(k2==0);
goLeft=0;
goRight=1;
}
}
}
}
voiddelay(uintxms)
{
uinti,j;
for(i=xms;i>0;i--)
for(j=112;j>0;j--);
}
voidinit()
{
P0=0xfe;
TMOD=0x02;//T0工作模式2自動裝填8位 200us
TH0=0x38;
TL0=0x38;
EA=1;
ET0=1;
TR0=1;
EX0=1;
IT0=1;
}
voidshowLED()
{
if(goLeft==1)
P0=_crol_(P0,1);
if(goRight==1)
P0=_cror_(P0,1);
}
voidmoveDelay()interrupt1 //一次中斷200us
{
if(delayTime==5000)
{
showLED();
delayTime=0;
}
else
delayTime++;

}
voidstopLED()interrupt0
{
while(1)
{
if(k4==0)
{
delay(10);
if(k4==0)
{
while(k4==0);
break;
}
}
}
}

③ 單片機匯編語言流水燈,定時器中斷控制,(500ms)延時

單片機匯編語言流水燈,用定時器中斷控制,可以初始化設置定時器時間(如50mS註定時器最大定時時間到不了500mS,需要加計數存儲,中斷10就是500mS),有多種方式實現如作一個流水狀態表,定時讀取寫入IO埠 表加一,,或者用左移太移等方式都可以實現在,網上有很多這種實例。

④ 51單片機按鍵中斷控制流水燈

#include<reg51.h>
#include<intrins.h>
#defineucharunsignedchar
ucharled,time=0;
sbitkey=P1^0;
voidt0isr()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
led=_crol_(led,1);
P0=led;
time++;
if(time>=200)TR0=0;
}
main()
{
ucharkeyval=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
while(1)
{
if(key==0)
{
while(key==0);
keyval++;
keyval%=3;
}
switch(keyval)
{
case0:led=0xff;P0=led;break;
case1:TR0=1;led=0xfe;break;
case2:TR0=0;break;
default:break;
}
}
}

⑤ 單片機外部中斷做流水燈

單片機控制led燈亮和滅,led燈初始狀態從左到右兩個燈間隔一個燈循環亮滅,然後從右到左循環亮滅,,當按下按鍵,led燈全亮,然後全滅。然後再恢復循環。

二、實驗過程

(一)實驗項目的方案分析

1.設計原理

STC12C5A60S2單片機內部包括微處理器、存儲器(存放程序指令或數據的ROM、RAM等)、輸入/輸出口(I/O口)及其他功能部件如定時/計數器、中斷系統等。它們通過地址匯流排、數據匯流排和控制匯流排連接起來。

本實驗充分利用了8051晶元的I/O引腳。系統已採用STC12C5A60S2系列單片機為中心器件來設計數碼管顯示系統,實現數碼管循環顯示。

2.器件配置清單

表1器件配置表

名稱

型號

數值

數量

麵包板

MB-102

165*55*

(二)實驗項目的硬體電路設計

通過Proteus模擬電路軟體搭建電路

(三)實驗項目的程序設計

1、C51程序編寫

2、keil軟體調試截圖

通過Keil軟體進行C51控製程序的編寫,通過不斷調試修改,最終的調試好的Keil

調試無措的Keil程序

(四)實驗項目的虛擬模擬

打開Keil C軟體將上面程序輸入,調試無誤後編譯輸出".hex"文件,打開Proteus軟體,將之前編譯好的".hex"文件加入到晶元中,開始運行模擬。

(五)實驗項目的實際驗證電路及驗證結果

將單片機C51程序編譯無誤後,生成HEX文件,通過STC-ISP下載到單片機中,下載的軟體界面搭建的實際

⑥ 請教單片機利用中斷方式實現流水燈的問題

1.主程序中的for(i=0;i<100;i++);起到短延時的作用,因為send函數並不是執行完就發送完成了,還需要等待iic發送數據
2.send函數中的clk=1;
clk=0;
是輸出了一個跳變,是時鍾線
3.ledp是發送指示燈的開關,在send函數前打開,在send之後關上

⑦ 匯編語言 51單片機,外部中斷控制流水燈

ORG 0000H ; 試試這個 流水燈的編碼隨便改

LJMP MAIN

ORG 0003H

LJMP LINT0

ORG 000BH

LJMP LT0ZD

ORG 0030H

MAIN: MOV SP, #60H

MOV TMOD, #00H

MOV IE, #81H

MOV TL0, #(8192-2500)MOD 32

MOV TH0, #(8192-2500)/32

SETB TR0

MOV R5, #20

LOOP: MOV R3, #48

CJNE R3, #0, $

LJMP LOOP


LINT0: CPL ET0

RETI


LT0ZD: PUSH PSW ; T0 中斷

PUSH ACC

MOV TL0, #(8192-2500)MOD 32

MOV TH0, #(8192-2500)/32

DJNZ R5, LT0Z2

MOV R5, #30 ; 可以調整速度

MOV A, R3

LCALL LSDIN

MOV P1, A

DEC R3

LT0Z2: POP ACC

POP PSW

RETI


LSDIN: MOVC A,@A+PC

RET


LSDBM: DB 11111110B,11111101B,11111011B,11110111B ; 流水燈的編碼1

DB 11101111B,11011111B,10111111B,01111111B

DB 01111111B,10111111B,11011111B,11101111B

DB 11110111B,11111011B,11111101B,11111110B

DB 11111100B,11111001B,11110011B,11100111B ; 流水燈的編碼2

DB 11001111B,10011111B,00111111B,01111110B

DB 01111110B,00111111B,10011111B,11001111B

DB 11100111B,11110011B,11111001B,11111100B

DB 11111000B,11110001B,11100011B,11000111B ; 流水燈的編碼3

DB 10001111B,00011111B,00111110B,01111100B

DB 01111100B,00111110B,00011111B,10001111B

DB 11000111B,11100011B,11110001B,11111000B

END

閱讀全文

與單片機中斷控制流水燈相關的資料

熱點內容
如何用mamp本地web伺服器 瀏覽:869
如何加密自己js代碼 瀏覽:623
排列組合a與c的演算法 瀏覽:534
如何在文件夾中找到同名內容 瀏覽:786
有什麼app文字轉韓文配音 瀏覽:372
循環宏1命令 瀏覽:35
斐波那契數列矩陣演算法 瀏覽:674
公式保護後加密不了 瀏覽:82
java跳轉到jsp 瀏覽:819
327平方根演算法 瀏覽:216
win7美化命令行終端 瀏覽:797
免加密狗圖片 瀏覽:485
一隻透明的鳥是什麼app 瀏覽:817
空氣壓縮機油批發商 瀏覽:69
linuxifexist 瀏覽:4
加密tf卡拷入文件 瀏覽:399
山西php工資 瀏覽:673
福州看病預約用什麼小程序app 瀏覽:238
php保留兩位小數不四捨五入 瀏覽:292
黑馬程序員路徑大全 瀏覽:1000