導航:首頁 > 編程語言 > 單片機循環燈程序匯編語言

單片機循環燈程序匯編語言

發布時間:2023-08-23 04:10:55

㈠ 單片機匯編語言流水燈程序延時0.5秒 一共四個燈循環

四個燈假設接在P1.0~P1.3上。晶振採用12M,這里用定時器中斷方式實現4個燈的流水燈效果,程序如下:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H

MOV TH0,#HIGH(65536-50000) //定時50毫秒初值

MOV TL0,#LOW(65536-50000)

SETB TR0

SETB ET0

SETB EA

MOV R2,#0

MOV A,#0FEH

MOV P1,A

SJMP $

T0ISR:
CLR TR0

MOV TH0,#HIGH(65536-50000)

MOV TL0,#LOW(65536-50000)

SETB TR0

INC R2
CJNE R2,#10,T0E //10次定時0.5秒
MOV R2,#0
RL A
JNB ACC.4,T01
MOV P1,A
RETI
T01:
MOV A,#0FEH
T0E:
RETI
END

㈡ 單片機流水燈用匯編語言寫怎麼從兩邊向中間亮再從中間

匯編程序如下:
; 花樣流水燈(8個發光二極體以各種形式循環點亮)
; 功能:流水燈(8個發光二極體循環以1S間隔以各種形式循環點亮)
ORG 0000H ;偽指令,指定程序從0000H開始存放
LJMP MAIN ;跳轉指令,程序跳轉至MAIN處執行
ORG 0030H ;偽指令,指定程序從0030H開始存放
MAIN: MOV SP, #60H ;給堆棧指針賦初值
MOV P1,#0FFH ;給P1口賦值
MOV DPTR,#TABLE;查表
LIGHT: MOV R4,#42 ;設置循環次數
LOOP: MOV A,#42 ;給A賦初值
SUBB A,R4 ;將A的值與R4的值相減,結果存在A中
MOVC A,@A+DPTR ;將A+DPTR的值所對應的TABLE中的值賦給A
MOV P1,A ;將A的值賦給P1口
LCALL DEL1S ;調用1S延時子程序
DJNZ R4,LOOP ;判斷R4是否為0,不為0跳轉,為0順序執行
LJMP LIGHT ;跳轉指令,跳轉至LIGHT處繼續執行
;1S延時子程序(11.0592MHz晶振,誤差0微秒)
DEL1S: MOV R5, #089H
DL1S0: MOV R6, #0A4H
DL1S1: MOV R7, #013H
DJNZ R7, $
DJNZ R6, DL1S1
DJNZ R5, DL1S0
RET
TABLE: ;定義表格數據
DB 0FFH ;全滅
DB 0FEH 0FDH 0FBH 0F7H 0EFH 0DFH 0BFH 07FH ;依次逐個點亮
DB 0FEH 0FCH 0F8H 0F0H 0E0H 0C0H 080H 000H ;依次逐個疊加
DB 080H 0C0H 0E0H 0F0H 0F8H 0FCH 0FEH 0FFH ;依次逐個遞減
DB 07EH 0BDH 0DBH 0E7H 0E7H 0DBH 0BDH 07EH ;兩邊靠攏後分開
DB 07EH 03CH 018H 000H 000H 018H 03CH 07EH ;兩邊疊加後遞減
DB 000H ;全亮
END ;程序結束指令
C語言程序如下:
/* 該實驗是花樣流水燈(8個發光二極體以各種方式循環點亮),功能是花樣流水燈(8個發光二極體以1S間隔以各種方式循環點亮) */
#include//包含reg.52文件
#define uint unsigned int//宏定義
#define uchar unsigned char//宏定義
void delay(uint z);//聲明延時函數
uint a;//定義循環用變數
uchar code table[]={
0xff,//全滅
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,//依次逐個點亮
0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,//依次逐個疊加
0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,//依次逐個遞減
0x7e,0xbd,0xdb,0xe7,0xe7,0xdb,0xbd,0x7e,//兩邊靠攏後分開
0x7e,0x3c,0x18,0x00,0x00,0x18,0x3c,0x7e,//兩邊疊加後遞減
0x00,//全亮
};//定義循環用數據表格
/*亮的現象:先是全滅,然後依次逐個點亮,然後依次逐個疊加,
然後依次逐個遞減,然後兩邊靠攏後分開,然後兩邊疊加後遞減,
最後全亮。循環!*/
void main()//main函數
{
a=0;//給a賦初值
while(1)//while循環
{
P1=table[a];//將a所在的table中的值賦給P1口
delay(1000);//1S延時子程序
a++;//a的值加一
if(a==42)//測試a是否等於42
a=0;//給a賦值
}
}
void delay(uint z)//1ms延時子程序,通過z值改變延時時間
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

㈢ 51單片機用匯編語言如何設計8個輪流呼吸的呼吸燈

因為我不知道你這個板子的硬體,我就假設一下吧,你自己對照著看看,關鍵是流程
假設如下這八個燈依次接在P0口的八個口上,高電平為燈亮,低電平為燈滅,程序如下
ORG 0000H
AJMP START
START:MOV P0,#01H;()只有第一個燈亮
ACALL DELAY;延遲,不加延遲的話 你根本看不起清到底那個燈亮的
MOV P0,#02H;()只有第二個燈亮
ACALL DELAY
MOV P0,#04H;()只有第三個燈亮
ACALL DELAY
MOV P0,#08H;()只有第四個燈亮
ACALL DELAY
MOV P0,#10H;()只有第五個燈亮
ACALL DELAY
MOV P0,#20H;()只有第六個燈亮
ACALL DELAY
MOV P0,#40H;()只有第七個燈亮
ACALL DELAY
MOV P0,#80H;()只有第八個燈亮
ACALL DELAY
AJMP START;周而復始
DELAY: MOV R6,#40;延遲程序,晶振為3.57MHZ時大概是0.1S
0.1SL1: MOV R5,#246
0.1SL2: NOP
DJNZ R5,0.1SL2
DJNZ R6,0.1SL1
RET
END

閱讀全文

與單片機循環燈程序匯編語言相關的資料

熱點內容
ca證書管理器linux 瀏覽:358
蘋果id安全提示問題3個字元 瀏覽:949
iphone上好的拍照軟體 瀏覽:579
word內嵌文件怎麼下載 瀏覽:864
8s16升級 瀏覽:340
計算機網路技術基礎pdf 瀏覽:544
javafrom提交地址參數 瀏覽:721
git發布版本 瀏覽:728
vc修改文件名 瀏覽:149
linux65從域 瀏覽:321
用什麼東西壓縮文件 瀏覽:406
怎麼刪除ipad隱藏的APP 瀏覽:981
編程如何佔用大量內存 瀏覽:116
多個excel表格文件如何組合 瀏覽:918
ubuntu內核升級命令 瀏覽:679
pgp文件夾 瀏覽:894
一鍵還原的文件是什麼格式 瀏覽:581
女漢子微信名霸氣十足 瀏覽:65
win10手機藍屏修復 瀏覽:419
windows2008激活工具 瀏覽:259

友情鏈接