㈠ 單片機匯編語言控制燈閃爍三次後自動熄滅
自己改下管腳
ORG 0000H ;程序從此地址開始運行
LJMP MAIN ;跳轉到MAIN程序處
ORG 030H ;MAIN從030H處開始
MAIN:
MOV R4,#03H;
FOR:
MOV P0,#00H;P0為低電平LED燈亮
ACALL DELAY ;調用延時子程序
MOV P0,#0FFH
ACALL DELAY
DJNZ R4,FOR
DELAY:
MOV R5,#04H ;將立即數傳給寄存器R5
F3:
MOV R6,#0FFH
F2:
MOV R7,#0FFH
F1:
DJNZ R7,F1 ;若為0程序向下執行,若不為0程序跳轉到
DJNZ R6,F2
DJNZ R5,F3
RET
END
㈡ 用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)單片機燈閃爍程序匯編擴展閱讀:
單片機應用分類:
通用型:
這是按單片機(Microcontrollers)適用范圍來區分的。例如,80C51式通用型單片機,它不是為某種專門用途設計的;專用型單片機是針對一類產品甚至某一個產品設計生產的,例如為了滿足電子體溫計的要求,在片內集成ADC介面等功能的溫度測量控制電路。
匯流排型:
這是按單片機(Microcontrollers)是否提供並行匯流排來區分的。匯流排型單片機普遍設置有並行地址匯流排、 數據匯流排、控制匯流排,這些引腳用以擴展並行外圍器件都可通過串列口與單片機連接。
另外,許多單片機已把所需要的外圍器件及外設介面集成一片內,因此在許多情況下可以不要並行擴展匯流排,大大減省封裝成本和晶元體積,這類單片機稱為非匯流排型單片機。
控制型:
這是按照單片機(Microcontrollers)大致應用的領域進行區分的。一般而言,工控型定址范圍大,運算能力強;用於家電的單片機多為專用型。
通常是小封裝、低價格,外圍器件和外設介面集成度高。 顯然,上述分類並不是惟一的和嚴格的。例如,80C51類單片機既是通用型又是匯流排型,還可以作工控用。
參考資料來源:網路-單片機
㈢ 匯編語言或C語言編寫一個控制燈閃爍的程序
我寫的這個程序應該可以,按一下燈亮,再按一下燈滅
#include "REG52.H"
sbit LED1_01 = P1^1; //LED燈
sbit KEY0_01 = P1^2; //按鍵
void Delay_1ms(unsigned int Time)
{
unsigned int x, y;
for(x = Time; x > 0; x--)
for(y = 120; y > 0; y--);
}
int main(void)
{
LED1_01 = 1; //打開LED燈點亮
while(1)
{
if(KEY0_01 == 0) //檢測按鍵是否按下
{
Delay_1ms(10); //延時去抖動
if(KEY0_01 == 0) //確定按鍵按下
{
LED1_01 = ~ LED1_01; //取反LED燈 [ 亮 . 滅 ] }
while(KEY0_01 == 0); //檢測鬆手
}
}
}
你的圖里有A/D轉換器
AD轉換函數ADC_DIS.C
#include <REGX51.H>
#include"def.h"
#include"lib.h"
sbit adc_cs=P1^0;
sbit adc_rd=P1^1;
sbit adc_wr=P1^2;
/***ADC0804啟動轉換函數***/
INT8U start_ad()
{
INT8U
temp;
adc_cs=0;
adc_wr=1;
delay(1);
adc_wr=0;
delay(1);
adc_wr=1;
delay(1); //啟動AD
adc_rd=1;
delay(1);
adc_rd=0;
delay(1);
temp=P2;
delay(1);
adc_rd=1;
delay(1);
//讀取數據
return
temp;
}
用這個程序。
㈣ 幫忙用匯編語言寫個程序,控制兩個LED交替閃爍。
假設p1.0,p1.1控制兩個LED燈,低亮高滅。
ORG 0000H
LJMP START
ORG 0030H
START:
CLR EA
MOV SP,#60H
SETB P1.0
SETB P1.1
LOOP:
LCALL DELAY30
CLR P1.0
LCALL DELAY30
SETB P1.0
LCALL DELAY30
CLR P1.0
LCALL DELAY30
SETB P1.0
LCALL DELAY30
CLR P1.1
LCALL DELAY30
LCALL DELAY30
SETB P1.1
SJMP LOOP
DELAY30: ;延時30毫秒
MOV R0,#60
DELAY1:
MOV R1,#250
DJNZ R1,$
DJNZ R0,DELAY1
RET
END
㈤ 51單片機電子時鍾設計怎麼更改led燈閃爍頻率用匯編語言
你這個程序錯誤太多了,用匯編時關鍵的幾個程序段都未分清:主程序、定時器T0中斷、定時器T1中斷等,因MOV IE,#8AH語句說明用的是中斷方式,顯然漏了 ORG 0000H、ORG 000BH和ORG 001BH偽指令。要改時間可改CJNE R7,#160,JW中的160。
㈥ 單片機 匯編語言 LED程序... 問題求解...
給你參考,可按你的要求自行更改。
;10.12.29外部中斷1按鍵按下,P1流水燈(跑馬燈),P2鴛鴦戲水燈(交叉點亮)
ORG00H
AJMPMAIN
ORG03H
AJMPEX0INT
ORG0030H
MAIN:MOVSP,#60H
SETBEA
SETBEX0
SETBIT0
MOVR0,#8
JNBF0,$
MOVA,#0FEH
LED:MOVP1,A
MOVP2,#0AAH
ACALLDLY
MOVP2,#55H
ACALLDLY
RLA
DJNZR0,LED
MOVR0,#8
AJMPLED
EX0INT:SETBF0
RETI
DLY:MOVR7,#20
MOVR6,#20
MOVR5,#250
DJNZR5,$
DJNZR6,$-4
DJNZR7,$-8
RET
㈦ 誰有單片機中3個led燈閃爍控制的流程圖與匯編語言,c語言程序
可以用外部中斷計數,來實現流水燈的正轉、暫停、以及反轉和爆閃。。這是我前幾天寫的一個這樣的程序,樓主可以結合protues 畫圖模擬,注意程序中所用到的IO埠就行了。
#include<reg52.h>
#include<intrins.h>
#defineucharunsignedchar
uchara,b;
voiddelay(ucharz)
{
uchari,j,k;
for(i=z;i>0;i--)
for(k=20;k>0;k--)
for(j=110;j>0;j--);
}
voidbegain()
{
EA=1;
EX0=1;
IT0=1;
}
voidmain()
{a=b=0;
P0=0xfe;
begain();
while(1)
{
if(a==1)
{
P0=_crol_(P0,1);
delay(50);
}
if(a==3)
{
P0=_cror_(P0,1);
delay(50);
}
if(a==4)
{
P0=0x00;
delay(50);
P0=0xff;
delay(50);
P0=0xfc;
}
if(a==5)
{
a=1;
}
}
}
voidint0()interrupt0
{
a++;
if(a==5)
{
a=1;
}
}
㈧ 如何用匯編語言控制led燈閃爍
用AT89C2051單片機(可以換成任意的51單片機)模擬,控制一個LED燈閃爍,LED燈接在P1.7腳上。程序如下
LED1 BIT P1.7
MAIN:CPL LED1
ACALL DELAY
SJMP MAIN
DELAY:MOV R7,#0;延時子程序
MOV R6,#0
LOP:DJNZ R6,$
DJNZ R7,LOP
RET
模擬圖如下
㈨ 單片機LED燈閃爍 ,先八個輪流閃爍,再隔一個閃爍,再兩個兩個地閃爍 然後循環,求匯編程序
TIMES EQU 30H
LED EQU 31H
FLAG BIT 00H
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV SP,#5FH
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
SETB ET0
SETB EA
CLR FLAG
LOOP:
MOV LED,#0FEH
MOV R2,#8
LOOP1:
MOV P0,LED
JNB FLAG,$
MOV A,LED
RL A
MOV LED,A
CLR FLAG
DJNZ R2,LOOP1
MOV LED,#0FEH
MOV R2,#8
LOOP2:
MOV P0,LED
JNB FLAG,$
MOV A,LED
RL A
RL A
MOV LED,A
CLR FLAG
DJNZ R2,LOOP2
MOV LED,#0FCH
MOV R2,#7
LOOP3:
MOV P0,LED
JNB FLAG,$
MOV A,LED
RL A
MOV LED,A
CLR FLAG
DJNZ R2,LOOP3
LJMP LOOP
T0ISR:
CLR TR0
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
INC TIMES
MOV A,TIMES
CJNE A,#40,T0E
SETB FLAG
T0E:
RETI
END
㈩ 匯編51單片機三個LED交替閃爍
ORG 0000H
AJMP MAIN
ORG 000BH ;TO Time interrupt
lJMP T0INT
ORG 001BH ;T1 Count interrupt
LJMP T1CNT
ORG 030H
MAIN: MOV TMOD,#61H ;T1 count at MOD 2,T0 time int at MOD 1
MOV TL0,#0B0H ;66536-50000=3CB0H 50000us=50ms=0.05s
MOV TH0,#3CH
SETB ET0 ;T0 interrupt enable
SETB TR0 ;T0 work
;MOV TL1,#0FDH ;count num = 2
;MOV TH1,#0FDH ;auto load 0FDH
;SETB ET1
;SETB TR1
SETB EA ;Enable all interrupt
MOV A,#28H ;0.05s*40=2s
MOV P0,#0FEH
JMP $
ORG 060H
T0INT: CLR ET0 ;Disable T0 interrupt
CLR TF0 ;clr tf0
;CPL P1.7
DEC A ;A--
JNZ T0RET ;A!=0 jmp
;;;;;;;;;;;;;;;;;;更改這里改燈閃爍
MOV A,P1
RR A
MOV P1,A
;;;;;;;;;;;;;;;;;;
MOV A,#28H ;A==0;A=40,
T0RET: SETB ET0 ;Enable interrupt
RETI
ORG 080H