① 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