導航:首頁 > 操作系統 > 51單片機控制led閃爍匯編語言

51單片機控制led閃爍匯編語言

發布時間:2022-06-10 03:39:55

A. 51單片機電子時鍾設計怎麼更改led燈閃爍頻率用匯編語言

你這個程序錯誤太多了,用匯編時關鍵的幾個程序段都未分清:主程序、定時器T0中斷、定時器T1中斷等,因MOV IE,#8AH語句說明用的是中斷方式,顯然漏了 ORG 0000H、ORG 000BH和ORG 001BH偽指令。要改時間可改CJNE R7,#160,JW中的160。

B. 用C語言編寫一個單片機控制LED燈閃爍變化的編程 急用!!!!!!!!!

C語言實現LED燈閃爍控制配套51單片機開發板。

#include //包含單片機寄存器的頭文件

/****************************************
函數功能:延時一段時間

*****************************************/

void delay(void) //兩個void意思分別為無需返回值,沒有參數傳遞。

{

unsigned int i; //定義無符號整數,最大取值范圍65535。

for(i=0;i<20000;i++) //做20000次空循環。

; //什麼也不做,等待一個機器周期。

}

/*******************************************************

函數功能:主函數 (C語言規定必須有也只能有1個主函數)。

********************************************************/
void main(void)

{

while(1) //無限循環。

{

P0=0xfe; //P1=1111 1110B, P0.0輸出低電平。

delay(); //延時一段時間。

P0=0xff; //P1=1111 1111B, P0.0輸出高電平。

delay(); //延時一段時間。

}

}

單片機驅動LED燈的源程序:

#include<reg52.h> //頭文件。

#define uint unsigned int

#define uchar unsigned char

sbit LED1=P1^7; //位定義。

void delay_ms(uint);//mS級帶參數延時函數。

void main()

{

while(1)

{

LED1=0;

delay_ms(1000);

LED1=1;

delay_ms(1000);

}

}

void delay_ms(uint z) //延時子程序

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

(2)51單片機控制led閃爍匯編語言擴展閱讀:

單片機應用分類:

通用型:

這是按單片機(Microcontrollers)適用范圍來區分的。例如,80C51式通用型單片機,它不是為某種專門用途設計的;專用型單片機是針對一類產品甚至某一個產品設計生產的,例如為了滿足電子體溫計的要求,在片內集成ADC介面等功能的溫度測量控制電路。

匯流排型:

這是按單片機(Microcontrollers)是否提供並行匯流排來區分的。匯流排型單片機普遍設置有並行地址匯流排、 數據匯流排、控制匯流排,這些引腳用以擴展並行外圍器件都可通過串列口與單片機連接。

另外,許多單片機已把所需要的外圍器件及外設介面集成一片內,因此在許多情況下可以不要並行擴展匯流排,大大減省封裝成本和晶元體積,這類單片機稱為非匯流排型單片機。

控制型:

這是按照單片機(Microcontrollers)大致應用的領域進行區分的。一般而言,工控型定址范圍大,運算能力強;用於家電的單片機多為專用型。

通常是小封裝、低價格,外圍器件和外設介面集成度高。 顯然,上述分類並不是惟一的和嚴格的。例如,80C51類單片機既是通用型又是匯流排型,還可以作工控用。

參考資料來源:網路-單片機



C. 51單片機控制LED匯編顯示程序

程序思想如下 可以想像成一個整數000每次加1後顯示一次知道999後溢出跳回起點繼續,程序如下
ORG 0000H
AJMP START
START: MOV 30H,#00H ;數碼管顯示初值
MOV 31H,#00H
MOV 40H,#00H ;顯示增量
MOV 41H,#01H
STL1: ACALL LED ;LED顯示
ACALL DELAY0.5S
ACALL BCDADD
MOV A,30H
ANL A,#0F0H
JNZ START ;判斷是不是超過999
AJMP STL1
BCDADD: CLR C
MOV A,31H
ADDC A,41H
DA A
MOV 31H,A
MOV A,30H
ADDC A,40H
DA A
MOV 30H,A
RET
LED: MOV A,30H
ANL A,#0FH
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
MOV A,31H
ANL A,#0F0H
SWAP A
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
MOV A,31H
ANL A,#0FH
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P2,A
RET
DELAY0.5S: MOV R6,#200
SL1: MOV R5,#250
SL2: NOP
DJNZ R5,SL2
DJNZ R6,SL1
RET
TAB: DB 0C0H ;0
DB 0F9H ;1
DB 0A4H ;2
DB 0B0H ;3
DB 099H ;4
DB 092H ;5
DB 082H ;6
DB 0F8H ;7
DB 080H ;8
DB 090H ;9
DB 088H ;A
DB 083H ;B
DB 0C6H ;C
DB 0A1H ;D
DB 086H ;E
DB 08EH ;F
END

PS1:延遲0.5秒的晶振是3.57MHZ
PS2:希望我的LED顯示代碼沒寫錯,我是認為你是0-7接的A-DP
PS3:網路的顯示格式真惡心 將就著看吧 程序倒是應該沒有什麼錯誤
P4:程序已經修改 重新拷貝一下吧

D. 51單片機LED操作匯編語言程序解釋

ORG 0000H //程序的入口
LJMP MAIN //跳到MAIN標號處
ORG 0100H //MAIN入口
MAIN: MOV TMOD, #10H //定義定時器/計數器的工作模式,此為T1方式0,為13位定時器/計數
MOV TL1, #00H //向定時器低位置初值
MOV TH1, #4BH //向定時器高位置初值
MOV R1, #20 //賦值
MOV R0, #00H //賦值
MOV A, #00H //賦值
MOV P3, A //p3口清零(T1口對應p3.5)
MOV DPTR, #TAB //取表中的值
SETB TR1 //開戶定時器T1
LOOP: JBC TF1, PTF1 //TF1為1時(TF1為T1的溢出標志位),清零,並跳到標號PTF1;
AJMP LOOP //等待中斷
PTF1: MOV TL1, #00H //向定時器低位置初值
MOV TH1, #4BH //向定時器高位置初值;因為方式0不能自動重裝初值,所以要軟體重裝初值
DJNZ R1, LOOP //循環
MOV R1, #20 //賦值
MOV A, R0
ADD A,#01H //加1
DA A //累加器十進制調整
ANL A, #0FH //與操作
MOV R0, A //保存A到R0中
MOVC A, @A+DPTR //取表中的值到A
MOV P1, A //將A送到P1口輸出
CPL P3.1 //取反
CPL P3.2 //取反
AJMP LOOP //循環
TAB: //表中的內容
DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H
END

E. 用匯編語言編寫51單片機程序讓LED燈亮0.5秒,滅2秒無限循環

ORG 0000H
MOV SP,#60H
E: CLR P1.0 ; P1.0 LED亮
ACALL DEL_1S ; 0.5 秒
SETB P1.0 ; P1.0 LED滅
ACALL DEL_2S ;2秒
SJMP E ; 循環
DEL_1S: MOV R2,#10 ; 0.5秒

JMP DEL_2S+2
DEL_2S: MOV R2,#40 ; 2秒
SETB TR1
LOOP: JNB TF1,$
MOV TL1,#0B0H
MOV TH1,#3CH
CLR TF1
DJNZ R2,LOOP
CLR TR1
RET
END

F. 求51單片機定時LED閃爍程序代碼

#include<reg52.h>//包括一個52標准內核的頭文件

#defineucharunsignedchar

/******************************主函數*****************************/

voidtimer0();

voidmain()//主程序

{

TMOD=0x01;//定時器0工作方式1

EA=1;

ET0=1;//定時器0中斷

TR0=1;//啟動定時器0

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

while(1);//程序循環

}

/*****************************定時器0中斷*************************/

voidtimer0()interrupt1

{

uchart;//定義變數

TF0=0;//定時器清0

t++;//中斷一次累加1

if(t==20)//預置值,溢出20次就是1秒鍾,晶振12MHZ

{

t=0;

P3=~P3;//反轉LED燈的亮滅

}

}

/*****************************************************************/

G. 51單片機用匯編語言實現八個LED的全亮全滅

;以89c51單片機為例,假定用P1控制LED:IO_LED EQU P1;led_0 BIT P1.0;led_1 BIT P1.1;led_2 BIT P1.2;led_3 BIT P1.3;led_4 BIT P1.4;led_5 BIT P1.5;led_6 BIT P1.6;led_7 BIT P1.7; ;定義開關LED的數據,假定LED正極一端接電源,另一端通過限流電阻接I/O埠: DATA_CloseLED EQU 11111111B;DATA_OpenLED EQU 00000000B;ORG 0000HAJMP MAINORG 0030H;-----------------------;延時0.5秒程序(註:此延時函數摘自STC-ISP)DELAY500MS:;@12.000MHzPUSH 30HPUSH 31HPUSH 32HMOV 30H,#4MOV 31H,#205MOV 32H,#180NEXT:DJNZ 32H,NEXTDJNZ 31H,NEXTDJNZ 30H,NEXTPOP 32HPOP 31HPOP 30HRET;-----------------------;下面是主程序MAIN:MOV IO_LED,#DATA_CloseLED;同時關閉8個LEDLCALLDELAY500MS;延時0.5秒MOV IO_LED,#DATA_OpenLED;同時打開8個LEDLCALLDELAY500MS;延時0.5秒LJMP MAIN;循環END;上面程序演示了8個LED間隔0.5秒同時亮和滅的變化。51單片機用匯編語言實現八個LED的全亮全滅

H. 51單片機 通過串口發送控制LED燈 閃爍頻率 c代碼 跪求!!

下面的程序我已經調試過了,你可以直接使用,但是一秒閃爍次數t的最大為2000,如果要大於這個數,你必須改小dalay1ms ()內的j值,就可以改大t
#include <reg52.h>
sbit LED0=P1^0;
unsigned int t=0,k;
void dalay1ms (unsigned int i) //晶振選用11.0592
{
unsigned int j;
for(i;i>0;i--)
for(j=922;j>0;j--);
}

void main ()
{

EA=1;
ES=1;
TMOD=0x20; //定時器T1方式為2
TH1=0xfa; //波特率設定為9600
TL1=0xfa;

while(1)
{
if(t!=0)
{
k=2000/t;
dalay1ms (k) ;
LED0=!LED0;
}
if(t==0)
LED0=0;
}
}
void counter4(void) interrupt 4
{
while(RI==0);
RI = 0;
t= SBUF;
}

I. 51系列單片機控制LED的發光(匯編語言編寫)

硬體做好了嗎

可以看看原理圖

我做單片機的

閱讀全文

與51單片機控制led閃爍匯編語言相關的資料

熱點內容
陳天程序員 瀏覽:830
編譯原理如何運用到編程中 瀏覽:16
linux選擇資料庫 瀏覽:375
php兩個數組差集 瀏覽:978
迷你pdf閱讀器下載 瀏覽:432
做一個python小程序 瀏覽:654
pythonossystem和 瀏覽:644
win2008如何搭建ftp伺服器 瀏覽:53
安卓手機為什麼不翻牌 瀏覽:545
刪除pkpm及相關文件夾 瀏覽:480
房貸解壓銀行內部流程 瀏覽:734
安卓手機如何更改語音 瀏覽:599
android紅包實現 瀏覽:733
蘋果的nvme為什麼安卓不用 瀏覽:31
python輸入單詞統計個數 瀏覽:997
腳本軟體提取源碼 瀏覽:281
程序員能給自己的微信錢包刷錢么 瀏覽:72
怎麼讓小天才app查看寶貝的通訊錄 瀏覽:623
dxgpdf 瀏覽:257
哪個命令 瀏覽:51