① 51單片機電子時鍾設計怎麼更改led燈閃爍頻率用匯編語言
你這個程序錯誤太多了,用匯編時關鍵的幾個程序段都未分清:主程序、定時器T0中斷、定時器T1中斷等,因MOV IE,#8AH語句說明用的是中斷方式,顯然漏了 ORG 0000H、ORG 000BH和ORG 001BH偽指令。要改時間可改CJNE R7,#160,JW中的160。
② 匯編語言或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花樣流水燈匯編程序
做好中斷現場保護和還原就可以解決這個問題了。
INT:
PUSHPSW;先現場保護
PUSHACC;
PUSH00H;R0
PUSH01H;R1
PUSH02H;R2
PUSH03H;R3
PUSH04H;R4
PUSH05H;R5
PUSH06H;R6
PUSH07H;R7
MOVA,#0AAH
MAG:
MOVP2,A
LCALLDELAY
RLA
JNBP3.3,MAG
MOVA,#1
MOVR2,#7
POP07H;R7;現場還原
POP06H;R6
POP05H;R5
POP04H;R4
POP03H;R3
POP02H;R2
POP01H;R1
POP00H;R0
POPACC;
POPPSW;
RETI
④ 松翰單片機匯編實現控制一個LED燈閃爍SOS求救信號。
led_scan260:
upto led_count,26,led_scan90 ;;
bts0 f_led_change ;;
jmp $+4 ;;
bclr led_1 ;;
bset f_led_change ;;
jmp led_scan90 ;;
bset led_1 ;;
bclr f_led_change ;;
upto led_change,3,led_scan90 ;;
bclr f_led_260ms ;;
bset f_led_50ms ;;
ret
led_scan50:
upto led_count1,5,led_scan90 ;;
bts0 f_led_change1 ;;
jmp $+4 ;;
bclr led_1 ;;
bset f_led_change1 ;;
jmp led_scan90 ;;
bset led_1 ;;
bclr f_led_change1 ;;
upto led_change,16,led_scan90 ;;
; bclr f_led_260ms ;;
bclr f_led_50ms ;;
bset f_led_360ms ;;
這是一個亮260MS 閃爍後 50MS閃爍 ,的程序 ,和你的要求差不多 我也是剛學松翰單片機 ,希望多多交流 後面是360MS的閃爍程序
⑤ 如何用匯編語言控制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燈常亮30秒後閃爍怎麼編程
假設用的是51單片機的P1口,LED燈是低電平點亮,連接P1.0,那麼可以參考如下思路:
初始化:
P1 =0xFF;
P1.0=0;點亮
delay_s(30);延時30秒
P1.0=1;熄滅
while(1)
{
delay_s(1);延時1秒
P1.0=0;點亮
delay_s(1);延時1秒
P1.0=1;熄滅
}
⑦ 單片機兩個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
clrp1.0 lcall delay30
setb p1.0
lcall delay30
setb p1.1
sjmp loop
delay30:延時30毫秒
mov r0,#60
delay1:
mov r1,#250
djnz r1,$
djnz r0,delay1
ret
end
⑧ 單片機 匯編語言 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
⑨ 匯編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