利用汇编语言编单片机程序,求大神帮助。。。。

a.开机后从LED1到LED8依次点亮后全熄灭,状态变化时间间隔为1秒b.开机后让LED1 LED3 与LED2 LED4交替点亮,交替变化时间间隔为一秒;
c.开机后四按键分别控制发光管LED1 LED2 LED3 LED4 是否点亮,按一次键,状态变化一次。如果可以加上注解可追加分数,拜托了。

a 答案:

 ORG     0000H

                     LJMP     MAIN

                     ORG     0100H

MAIN:             MOV     A,#0FEH       ;是开始键按下  则跑马灯开始运行

LL:                 MOV     P1,A

                      LCALL    YS           ;显示延时

                      RL          A             ;循环右移一位

                 CJNE      A,#0FEH,LL ;不是最后一个,则转到LL继续显示下一个LED发光二极管亮

                      MOV      A,#0FFH   ; 全灭

                      MOV       P1, A

                      SJMP     $            ;暂停

 

YS:          MOV R7,#4              ;  单周期1uS   ( 晶振为12MHz)  延时1秒子程序
DEL1:  MOV R6,#123             ; 单周期1uS
DEL2:  DJNZ R6,DEL2          ; 双周期2uS*123=246uS
               DJNZ R7,DEL1          ; 双周期(2us+246+1)*4=996uS
               NOP                              ; 单周期1uS 
               RET;   双周期2uS         
 

                     END

b 答案:

                     ORG     0000H

                     LJMP     MAIN

                     ORG     0100H

MAIN:             MOV     A,#0FFH       ;是开始全灭

                     MOV     P1,A 

LL:                 SETB    P1.1

                      SETB    P1.3

                      CLR      P1.0

                      CLR      P1.2

                      LCALL    YS           ;显示延时1秒

                      SETB    P1.0

                      SETB    P1.2

                      CLR      P1.1

                      CLR      P1.3

                       LCALL    YS           ;显示延时1秒               

                      SJMP        LL          ;继续循环显示

 

YS:          MOV R7,#4              ;  单周期1uS   ( 晶振为12MHz)  延时1秒子程序
DEL1:  MOV R6,#123             ; 单周期1uS
DEL2:  DJNZ R6,DEL2          ; 双周期2uS*123=246uS
               DJNZ R7,DEL1          ; 双周期(2us+246+1)*4=996uS
               NOP                              ; 单周期1uS 
               RET;   双周期2uS         

 

 

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-16
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH1,#3CH
MOV TL1,#0B0H
SETB ET0
SETB TR0
MOV B,#0
SETB EA
MOV R0,#7
MOV P0,#0FEH
LOOP:
CLR 00H
JNB 00H,$
MOV A,P0
RL A
MOV P0,A
DJNZ R0,LOOP
MOV P0,#0FFH
SJMP $
T0ISR: ;50ms中断一次
CLR TR0
MOV TH1,#3CH
MOV TL1,#0B0H
SETB TR0
INC B
MOV A,B
CJNE A,#20,T0ISRE
MOV B,#0
SETB 00H ;1S到置位00H
T0ISRE:
RETI
END

ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH1,#3CH
MOV TL1,#0B0H
SETB ET0
SETB TR0
SETB EA
MOV P0,#0FAH
LOOP:
CLR 00H
JNB 00H,$
MOV A,P0
CPL A
ORL A,#0F0H
MOV P0,A
SJMP LOOP
T0ISR:
CLR TR0
MOV TH1,#3CH
MOV TL1,#0B0H
SETB TR0
INC B
MOV A,B
CJNE A,#20,T0ISRE
MOV B,#0
SETB 00H
T0ISRE:
RETI
END
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
CLR EA
LOOP:
JB P1.0,LOOP1 ;
LCALL DELAY
JB P1.0,LOOP1
JNB P1.0,$ ;等待键释放
CPL P0.0
SJMP LOOP
LOOP1:
JB P1.1,LOOP2
LCALL DELAY
JB P1.1,LOOP2
JNB P1.1,$
CPL P0.1
SJMP LOOP
LOOP2:
JB P1.2,LOOP3
LCALL DELAY
JB P1.2,LOOP3
JNB P1.2,$
CPL P0.2
SJMP LOOP
LOOP3:
JB P1.3,LOOP
LCALL DELAY
JB P1.3,LOOP
JNB P1.3,$
CPL P0.3
SJMP LOOP
END
相似回答